Proteger la conexión SSH contra ataques de fuerza bruta
El puerto SSH predeterminado (22) es un objetivo frecuente de ataques automatizados. Esta guía explica cómo cambiar el puerto y reforzar la configuración de SSH.
📋 Requisitos previos
- VPS con acceso root o sudo
- Conexión SSH activa
- UFW instalado y configurado (ver Instalar UFW)
⚠️ IMPORTANTE: Mantenga una sesión SSH abierta
Importante: Antes de empezar, mantenga una sesión SSH activa. Abra dos terminales SSH en paralelo: una para trabajar y otra de respaldo.
🔧 Cambiar el puerto SSH
Paso 1: Elegir un nuevo puerto
Elija un puerto entre 1024 y 65535. Evite 22, 80, 443, 3306 y 5432. Ejemplos: 2222, 2200, 1022.
Paso 2: Modificar la configuración
Bash# Editar el archivo de configuración SSH sudo nano /etc/ssh/sshd_config
Paso 3: Cambiar el puerto
# Antes
#Port 22
# Después (reemplace 2222 por su puerto)
Port 2222
Paso 4: Guardar y verificar
Bashsudo sshd -t
Paso 5: Permitir el nuevo puerto en UFW
Bash1# Permitir el nuevo puerto SSH (reemplace 2222) 2sudo ufw allow 2222/tcp 3 4# Opcional: eliminar el puerto 22 5sudo ufw delete allow 22/tcp 6 7sudo ufw reload 8sudo ufw status | grep 2222
Paso 6: Reiniciar SSH y probar
Bashsudo systemctl restart sshd sudo systemctl status sshd
En una nueva terminal, pruebe la conexión:
Bashssh -p 2222 user@your-ip
🔒 Opciones de seguridad adicionales
Desactivar el acceso root
Importante: Asegúrese de tener un usuario con sudo antes de aplicar este cambio.
Bashsudo nano /etc/ssh/sshd_config # PermitRootLogin no sudo sshd -t sudo systemctl restart sshd
Limitar intentos de conexión
BashMaxAuthTries 3 LoginGraceTime 30
Desactivar autenticación por contraseña (solo claves SSH)
BashPasswordAuthentication no PubkeyAuthentication yes
Advertencia: Solo active esto si ya ha configurado y probado su clave SSH.
Configuración recomendada
Port 2222
PermitRootLogin no
MaxAuthTries 3
LoginGraceTime 30
Protocol 2
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
Tras cada modificación:
Bashsudo sshd -t sudo systemctl restart sshd
🔄 Crear un usuario con sudo
Bashsudo adduser myuser sudo usermod -aG sudo myuser su - myuser sudo whoami
✅ Verificación final
Bashsudo systemctl status sshd sudo ss -tlnp | grep ssh sudo sshd -T | grep port sudo tail -f /var/log/auth.log
🛡️ Protección adicional con fail2ban
Bashsudo apt update sudo apt install fail2ban -y sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
Configuración recomendada:
INI1[sshd] 2enabled = true 3port = 2222 4maxretry = 3 5bantime = 3600 6findtime = 600
Bashsudo systemctl start fail2ban sudo systemctl enable fail2ban sudo fail2ban-client status sshd
🆘 Solución de problemas
No puedo conectarme por SSH
- Use su sesión de respaldo
- Si no tiene sesión de respaldo: consola VNC/KVM del panel o soporte Infrawire
- Restaure temporalmente
Port 22en/etc/ssh/sshd_config
El puerto SSH no responde
Bashsudo ss -tlnp | grep ssh sudo ufw status | grep 2222 sudo journalctl -u sshd -n 50
📚 Recursos adicionales
❓ Preguntas frecuentes
P: ¿Qué puerto debo elegir?
R: Entre 1024 y 65535, evitando puertos comunes. 2222 o 2200 son buenas opciones.
P: ¿Es necesario cambiar el puerto SSH?
R: Muy recomendable. Reduce significativamente los ataques automatizados.
P: ¿Cómo conectarme con el nuevo puerto?
R: ssh -p 2222 user@your-ip
¡Buena seguridad! 🚀