Linux29 de agosto de 2026 7 vistas

Asegurar un VPS Linux: la checklist completa (2026)

Asegurar un VPS Linux: la checklist completa (2026)

Checklist de seguridad: visión general

Aplique estos pasos en orden, cada uno refuerza al siguiente.

Acción Prioridad Tiempo estimado Guía detallada
Actualizaciones del sistema Crítica 5 min Sección más abajo
Crear un usuario no root Crítica 5 min Sección más abajo
Endurecer SSH (clave + desactivar root/contraseña) Crítica 10 min Guía clave SSH
Configurar UFW (cortafuegos) Crítica 5 min Guía UFW
Instalar Fail2ban Alta 10 min Guía Fail2ban
Activar HTTPS (Certbot) Alta 5 min Guía Certbot
Implementar las copias de seguridad Alta 15 min Sección más abajo
Supervisión básica Media 5 min Sección más abajo

1. Actualizaciones del sistema

Los paquetes sin actualizar son la primera fuente de compromiso. Aplique las actualizaciones desde la primera conexión y después automatícelas.

Actualización inicial

sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y

Automatizar las actualizaciones de seguridad

El paquete unattended-upgrades aplica automáticamente las actualizaciones de seguridad sin intervención manual. Fuente: wiki.debian.org/UnattendedUpgrades

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Responda "Sí" a la pregunta del configurador. Las actualizaciones de seguridad se aplicarán entonces cada noche de forma automática.

2. Crear un usuario no root con sudo

Conectarse y operar como root de forma permanente es una mala práctica: un error de comando o un compromiso tiene un impacto inmediato en todo el sistema. Cree un usuario dedicado con permisos sudo.

adduser nombreusuario
usermod -aG sudo nombreusuario

Compruebe que sudo funciona antes de cerrar la sesión root:

su - nombreusuario
sudo whoami

El comando debe devolver root. Una vez confirmado, use este usuario para todas las operaciones siguientes.

Fuente: wiki.debian.org/sudo

3. Endurecer SSH

SSH es el vector de ataque más común en un VPS expuesto. Tres medidas fundamentales: autenticación por clave, desactivación del login root y desactivación de la autenticación por contraseña.

Autenticación por clave SSH

Genere y despliegue una clave SSH desde su máquina local, luego verifique la conexión antes de desactivar las contraseñas. El procedimiento completo está en la guía dedicada: Guía clave SSH OuiHeberg.

Desactivar el login root y la autenticación por contraseña

Una vez confirmada la conexión por clave, modifique /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Modifique o añada estas directivas:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Recargue SSH:

sudo systemctl reload ssh

Fuente: man.openbsd.org/sshd_config

Cambiar el puerto SSH (opcional)

Cambiar el puerto SSH (por ejemplo de 22 a 2222) no constituye una medida de seguridad en sí misma: un escaneo de puertos lo detecta en segundos. Sin embargo, reduce de forma significativa el volumen de intentos automatizados en los logs, lo que facilita la supervisión. Si cambia el puerto, abra ese puerto en UFW antes de recargar SSH, y no cierre el puerto 22 antes de haber verificado la conexión en el nuevo puerto.

# En /etc/ssh/sshd_config
Port 2222

4. Configurar el cortafuegos UFW

UFW (Uncomplicated Firewall) es la interfaz recomendada para gestionar las reglas iptables en Debian y Ubuntu. Regla básica: bloquear todo el tráfico entrante por defecto y abrir solo los puertos necesarios.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable

Guía completa (reglas por servicio, limitación de conexiones, verificación): Guía UFW OuiHeberg.

5. Instalar Fail2ban

Fail2ban vigila los logs del sistema y banea automáticamente las direcciones IP que acumulan intentos de conexión fallidos. Es complementario a UFW: UFW filtra los puertos, Fail2ban filtra los comportamientos.

sudo apt install -y fail2ban

Configuración recomendada, supervisión y desbaneo en la guía dedicada: Guía Fail2ban OuiHeberg.

6. Activar HTTPS con Certbot

Un certificado TLS es indispensable para cualquier servicio web expuesto. Certbot automatiza la obtención y la renovación de los certificados Let's Encrypt para Nginx y Apache.

sudo apt install -y snapd
sudo snap install certbot --classic
sudo certbot --nginx -d misitio.es -d www.misitio.es

La renovación automática, los certificados wildcard y la resolución de los errores más comunes se tratan en la guía dedicada: Guía Certbot OuiHeberg.

7. Copias de seguridad

Una copia de seguridad no probada no es una copia de seguridad. La regla 3-2-1 es el estándar mínimo: 3 copias de los datos, en 2 soportes diferentes, de las cuales 1 fuera del sitio.

Copia de seguridad básica con tar

# Copia de seguridad de un directorio de aplicación
tar -czf /root/backup-$(date +%F).tar.gz /var/www/misitio

# Copia de seguridad de una base de datos MariaDB/MySQL
mysqldump -u root nombre_bd > /root/backup-bdd-$(date +%F).sql

Automatizar con cron

sudo crontab -e

Añada una línea para una copia de seguridad diaria a las 3 de la madrugada:

0 3 * * * tar -czf /root/backup-$(date +\%F).tar.gz /var/www/misitio

Snapshots del VPS

Los planes VPS de OuiHeberg incluyen espacios de copia de seguridad y snapshots configurables desde el panel de gestión. Un snapshot captura el estado completo del VPS (sistema + datos) y permite una restauración rápida en caso de incidente grave.

Probar la restauración

Planifique una prueba de restauración al menos una vez por trimestre. Una copia de seguridad cuya restauración nunca se ha verificado no puede considerarse fiable.

8. Supervisión básica

La supervisión no requiere herramientas complejas para empezar. Los logs del sistema contienen lo esencial de las señales de alerta.

Vigilar los intentos de conexión SSH

# Últimas conexiones exitosas y fallidas
sudo journalctl -u ssh --since "24 hours ago" | grep -E "Accepted|Failed"

# Equivalente vía auth.log (Debian/Ubuntu)
sudo grep -E "Accepted|Failed" /var/log/auth.log | tail -50

Conexiones de red activas

# Puertos en escucha y conexiones establecidas
sudo ss -tlnp

Compruebe que solo están abiertos los puertos esperados. Todo puerto desconocido merece una investigación.

Carga del sistema

# Carga de CPU, memoria, procesos
top
# o, si está instalado:
htop

Señales de alerta a vigilar

  • Pico de CPU o de memoria sin explicación
  • Proceso desconocido consumiendo recursos
  • Conexiones salientes hacia IP desconocidas
  • Archivos modificados recientemente en /etc o /usr/bin
# Archivos modificados en las últimas 24h en /etc
sudo find /etc -mtime -1 -type f

Preguntas frecuentes

¿En qué orden aplicar estas medidas?

Siga el orden de la checklist al inicio de esta guía. Las actualizaciones del sistema y la creación de un usuario no root primero, SSH endurecido en segundo lugar, UFW en tercero. No active UFW antes de haber abierto el puerto SSH: es el error más común que bloquea el acceso al VPS.

¿Hay que instalar un antivirus en un VPS Linux?

Los antivirus tradicionales están poco adaptados a los servidores Linux. La superficie de ataque se reduce mejor con las medidas de esta guía (actualizaciones, SSH endurecido, cortafuegos, Fail2ban) que con un antivirus. ClamAV puede ser útil si el VPS aloja archivos subidos por usuarios (formularios, compartición de archivos), pero sigue siendo opcional en la mayoría de los casos.

¿Cómo saber si mi VPS ha sido comprometido?

Las señales más comunes: pico de CPU sin explicación, proceso desconocido en top, conexiones salientes anómalas en ss -tlnp, entradas sospechosas en /var/log/auth.log, archivos del sistema modificados recientemente. En caso de duda seria, restaurar desde un snapshot limpio es más seguro que una investigación incompleta.

¿Son suficientes estas medidas para un VPS en producción?

Cubren los vectores de ataque más comunes y constituyen una base sólida. Para entornos con exigencias elevadas (datos sensibles, cumplimiento normativo), se añaden medidas complementarias: auditoría de seguridad periódica, detección de intrusiones (AIDE, auditd), segmentación de red, cifrado de volúmenes. Esta guía cubre el nivel fundamental aplicable a cualquier VPS expuesto a Internet.

¿Este VPS va a alojar un sitio que actualmente está en otro proveedor? Asegúralo primero y luego sigue la guía de migración desde un alojamiento compartido.