1. Mantén el sistema operativo actualizado
La mayoría de los ataques exitosos explotan vulnerabilidades ya conocidas y parcheadas. Mantener el sistema al día es la medida de seguridad con mejor relación esfuerzo-beneficio que existe.
En distribuciones basadas en Debian/Ubuntu:
sudo apt update && sudo apt upgrade -y En distribuciones basadas en Red Hat/CentOS:
sudo yum update -y Para automatizar las actualizaciones de seguridad en Debian/Ubuntu:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades 2. Endurece el acceso SSH
El servicio SSH es la puerta de entrada principal a tu servidor y, por lo tanto, el objetivo número uno de los ataques de fuerza bruta.
2.1 Cambia el puerto por defecto de SSH
Mover SSH del puerto 22 a uno personalizado no detiene a un atacante decidido, pero elimina de un golpe el 90% del ruido de bots que escanean el puerto estándar de forma automática.
sudo nano /etc/ssh/sshd_config Busca y modifica la línea del puerto:
Port 2222 Reinicia el servicio y abre el nuevo puerto en el firewall antes de cerrar tu sesión actual (para no quedar bloqueado fuera del servidor):
sudo systemctl restart sshd
sudo ufw allow 2222/tcp 2.2 Crea usuarios con privilegios limitados y deshabilita el login root
Operar directamente como root es una mala práctica: si esa cuenta se ve comprometida, el atacante tiene control total inmediato. Crea un usuario normal con permisos de sudo en su lugar:
sudo adduser nombre_usuario
sudo usermod -aG sudo nombre_usuario Luego deshabilita el acceso directo por SSH del usuario root:
sudo nano /etc/ssh/sshd_config PermitRootLogin no sudo systemctl restart sshd 2.3 Usa autenticación por llaves SSH en lugar de contraseñas
Las llaves SSH son prácticamente inmunes a ataques de fuerza bruta comparadas con una contraseña, sin importar qué tan compleja sea esta última.
Genera un par de llaves en tu máquina local:
ssh-keygen -t rsa -b 4096 Copia la clave pública al servidor:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ip_del_servidor Una vez confirmado que puedes iniciar sesión con la llave, deshabilita la autenticación por contraseña por completo:
sudo nano /etc/ssh/sshd_config PasswordAuthentication no sudo systemctl restart sshd Importante: verifica que puedes conectarte con la llave SSH en una segunda terminal antes de cerrar tu sesión actual y de deshabilitar la contraseña, para evitar quedar bloqueado fuera del servidor.
3. Configura un firewall
Un firewall bien configurado bloquea todo el tráfico que no necesitas exponer, reduciendo la superficie de ataque a solo los servicios que realmente usas.
3.1 UFW (Uncomplicated Firewall) — Debian/Ubuntu
sudo ufw allow 2222/tcp # Puerto SSH personalizado
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status 3.2 Firewalld — distribuciones Red Hat/CentOS
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload 3.3 Restringe el acceso SSH a rangos de IP específicos
Si administras el servidor siempre desde la misma red u oficina, puedes restringir el puerto SSH únicamente a ese rango, cerrando el acceso a cualquier otra IP:
sudo ufw allow from 192.168.1.0/24 to any port 2222 4. Detección de intrusos y protección contra ataques
Además del firewall, conviene añadir herramientas activas que detecten y respondan a comportamiento malicioso en tiempo real.
4.1 Fail2Ban — bloqueo automático de fuerza bruta
Fail2Ban monitorea los logs del sistema y bloquea automáticamente las IPs que exceden un número de intentos fallidos de inicio de sesión.
sudo apt install fail2ban -y Crea o edita la configuración local para SSH:
sudo nano /etc/fail2ban/jail.local [sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5 sudo systemctl restart fail2ban 4.2 DDoS Deflate — mitigación básica de ataques DDoS
wget https://github.com/jgmdev/ddos-deflate/archive/master.zip
unzip master.zip
cd ddos-deflate-master
sudo ./install.sh Ajusta los umbrales de conexión en el archivo de configuración según el tráfico normal de tu servidor:
sudo nano /usr/local/ddos/ddos.conf Activa el servicio:
sudo /usr/local/ddos/ddos.sh -c 4.3 RKHunter y ClamAV — detección de rootkits y malware
RKHunter escanea el sistema en busca de rootkits, backdoors y exploits locales conocidos:
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --checkall ClamAV es un antivirus de código abierto útil sobre todo si tu servidor maneja archivos subidos por usuarios (por ejemplo, un servidor de correo o de hosting compartido):
sudo apt install clamav -y
sudo freshclam
sudo clamscan -r /home 5. Monitoreo y auditoría continua
Ninguna defensa es completa sin visibilidad de lo que ocurre en el servidor. El monitoreo permite detectar comportamiento anómalo antes de que se convierta en un incidente grave.
5.1 Logwatch — informes automáticos de actividad
sudo apt install logwatch -y Configura informes diarios por correo:
sudo nano /etc/cron.daily/00logwatch /usr/sbin/logwatch --output mail --mailto [email protected] --detail high 5.2 Auditd — auditoría de cambios críticos del sistema
sudo apt install auditd -y Define reglas para monitorear cambios en archivos sensibles:
sudo nano /etc/audit/audit.rules -w /etc/passwd -p wa -k passwd_changes
-w /etc/ssh/sshd_config -p wa -k ssh_changes sudo systemctl restart auditd 6. Backups: tu última línea de defensa
Ninguna medida de seguridad es infalible al 100%. Un backup reciente y probado es lo que separa un incidente menor de una pérdida total de datos.
6.1 Backups automatizados con rsync y cron
rsync -avz /ruta/del/directorio usuario@backup-server:/ruta/de/backup Programado diariamente a las 2 AM con cron:
crontab -e 0 2 * * * rsync -avz /ruta/del/directorio usuario@backup-server:/ruta/de/backup 6.2 Snapshots con LVM
Si tu servidor usa LVM (Logical Volume Manager), puedes crear snapshots casi instantáneos como punto de restauración antes de cambios riesgosos:
sudo lvcreate --size 1G --snapshot --name backup_nombre /dev/volume_group/logical_volume Resumen de la checklist de seguridad
- Acceso SSH: puerto personalizado, autenticación por llaves, login root deshabilitado.
- Firewall: UFW o Firewalld configurado para exponer solo los servicios necesarios.
- Protección activa: Fail2Ban, DDoS Deflate, RKHunter y ClamAV instalados y actualizados.
- Monitoreo: Logwatch para informes diarios, Auditd para auditar cambios críticos.
- Backups: estrategia automatizada con rsync/cron, complementada con snapshots LVM cuando sea posible.
La seguridad de un servidor Linux no es un checklist que se completa una sola vez, sino un proceso continuo de mantenimiento, monitoreo y respuesta. Aplicando las capas descritas en esta guía —acceso restringido, firewall, detección de intrusos, auditoría y backups— reduces drásticamente el riesgo de que un ataque automatizado o dirigido comprometa tu infraestructura. Si tienes dudas durante la implementación, nuestro equipo de soporte técnico está disponible 24/7 para ayudarte.
LiteSpeed hosting, NVMe and 24/7 support from $3/mo.