Los riesgos de SSH sin proteccion
SSH (Secure Shell) es el protocolo estandar para administrar servidores Linux de forma remota. Aunque SSH cifra toda la comunicacion, el servicio SSH expuesto al internet publico es un objetivo constante de ataques automatizados de fuerza bruta que intentan adivinar credenciales de acceso probando combinaciones de usuario y contrasena a velocidades de miles de intentos por minuto. Un servidor SSH sin configuracion de seguridad adecuada puede ser comprometido en cuestion de horas si usa contrasenas debiles o el usuario root esta habilitado para conexiones remotas.
Configuraciones de seguridad en /etc/ssh/sshd_config
El archivo de configuracion principal de SSH se encuentra en /etc/ssh/sshd_config. Las siguientes modificaciones mejoran significativamente la seguridad:
# Cambiar el puerto por defecto (de 22 a otro) Port 2222 # Deshabilitar el acceso root directo PermitRootLogin no # Deshabilitar autenticacion por contrasena (solo llaves SSH) PasswordAuthentication no # Limitar el numero de intentos de autenticacion MaxAuthTries 3 # Tiempo maximo de sesion sin autenticar (segundos) LoginGraceTime 30 # Deshabilitar el reenvio X11 si no se necesita X11Forwarding no
Despues de modificar el archivo, reiniciar el servicio SSH:
sudo systemctl restart sshd
Autenticacion por llaves SSH (recomendado)
La autenticacion por llaves SSH es mas segura que las contrasenas porque requiere poseer el archivo de llave privada, que nunca se transmite por la red. El proceso para configurarla:
- Generar el par de llaves en el equipo local:
ssh-keygen -t ed25519 -C "comentario_descriptivo"
- Copiar la llave publica al servidor:
ssh-copy-id usuario@ip_del_servidor
- Verificar que la conexion funciona con la llave antes de deshabilitar la autenticacion por contrasena.
Tabla de configuraciones de seguridad SSH
| Configuracion | Valor recomendado | Impacto en seguridad |
|---|---|---|
| Puerto SSH | Puerto no estandar (ej: 2222) | Reduce ataques automatizados en port 22 |
| PermitRootLogin | no | Obliga a escalar privilegios despues de conectar |
| PasswordAuthentication | no (con llaves configuradas) | Elimina el riesgo de fuerza bruta |
| AllowUsers | Lista de usuarios permitidos | Bloquea intentos con usuarios inexistentes |
| Fail2ban | Instalado y configurado | Bloquea IPs tras intentos fallidos |
Instalar y configurar Fail2ban para SSH
sudo apt install fail2ban # Configuracion basica para SSH en /etc/fail2ban/jail.local [sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600
