Por que la seguridad de SSH es critica
SSH es la puerta de entrada principal a la administracion de cualquier servidor Linux. Un servidor con el puerto SSH 22 abierto recibe constantemente intentos automatizados de acceso mediante ataques de fuerza bruta que prueban combinaciones de usuarios y contrasenas conocidas. Los logs de autenticacion de un servidor nuevo expuesto a internet muestran tipicamente miles de intentos de acceso fallidos por dia desde IPs de todo el mundo.
Implementar las medidas de seguridad correctas en SSH reduce dramaticamente el riesgo de acceso no autorizado y el ruido en los logs del sistema, facilitando la deteccion de actividad sospechosa legitima.
Configuracion completa de seguridad en sshd_config
# Archivo: /etc/ssh/sshd_config # Cambiar el puerto predeterminado Port 2222 # Solo protocolo SSH versión 2 Protocol 2 # Deshabilitar acceso root directo PermitRootLogin no # Deshabilitar autenticacion por contrasena PasswordAuthentication no ChallengeResponseAuthentication no # Reducir intentos de autenticacion MaxAuthTries 3 MaxSessions 3 # Tiempo maximo para autenticar LoginGraceTime 30 # Desconectar sesiones inactivas ClientAliveInterval 300 ClientAliveCountMax 2 # Limitar usuarios que pueden conectarse via SSH AllowUsers usuarioadmin operador
Reiniciar SSH despues de cada cambio y verificar que la nueva sesion funciona antes de cerrar la sesion actual:
sudo sshd -t && sudo systemctl restart sshd
Configurar autenticacion por llaves SSH
# En el equipo local: generar par de llaves Ed25519 (mas seguro que RSA) ssh-keygen -t ed25519 -C "admin-servidor" # Copiar la llave publica al servidor ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@ip_servidor # O manualmente en el servidor: cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Instalar y configurar Fail2ban para SSH
# Instalar fail2ban sudo apt install fail2ban # Ubuntu/Debian sudo dnf install fail2ban # AlmaLinux # Crear configuracion local (no editar jail.conf directamente) sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Editar /etc/fail2ban/jail.local con la configuracion para SSH:
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 5 findtime = 600 bantime = 3600
Tabla de medidas de seguridad SSH y su impacto
| Medida | Dificultad | Reduccion de riesgo |
|---|---|---|
| Cambiar puerto de 22 a otro | Baja | Alta (elimina el 90% del ruido automatizado) |
| Deshabilitar acceso root | Baja | Alta |
| Usar llaves SSH en lugar de contrasenas | Media | Muy Alta (elimina el riesgo de fuerza bruta) |
| Instalar Fail2ban | Baja | Alta (bloquea IPs automaticamente) |
| Limitar usuarios con AllowUsers | Baja | Media |
