Introducción
SSH (Secure Shell) es el protocolo estándar para la administración remota de servidores Linux. En esta guía configuraremos un servidor SSH seguro aplicando las mejores prácticas de seguridad, con instrucciones para las distribuciones más comunes.
Instalación y verificación
La mayoría de distribuciones incluyen OpenSSH por defecto. Para asegurarnos de que está instalado y activo:
# RHEL/Rocky/Oracle Linux
sudo dnf install openssh-server -y
# Ubuntu/Debian
sudo apt install openssh-server -y
Activar el servicio:
sudo systemctl enable --now sshd
sudo systemctl status sshd
Configuración básica del servidor
Editamos el archivo de configuración principal:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vi /etc/ssh/sshd_config
Parámetros recomendados
Los parámetros más importantes a configurar:
Port 2222
PermitRootLogin no
MaxAuthTries 3
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
X11Forwarding no
AllowUsers admin deploy
Autenticación por clave pública
Generamos un par de claves en el cliente:
ssh-keygen -t ed25519 -C "admin@tengoping.com"
ssh-copy-id -p 2222 admin@servidor
Verificar la conexión
ssh -p 2222 admin@servidor
Configuración del firewall
Abrimos el nuevo puerto antes de reiniciar SSH para no perder el acceso.
# RHEL/Rocky/Oracle Linux (firewalld)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
# Ubuntu/Debian (ufw)
sudo ufw allow 2222/tcp
sudo ufw delete allow ssh
sudo ufw reload
Instalación de Fail2ban
Fail2ban protege contra ataques de fuerza bruta:
# RHEL/Rocky/Oracle Linux
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
# Ubuntu/Debian
sudo apt install fail2ban -y
Creamos la configuración local:
sudo tee /etc/fail2ban/jail.local << EOF
[sshd]
enabled = true
port = 2222
filter = sshd
backend = systemd
maxretry = 3
bantime = 3600
findtime = 600
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Monitorización de accesos
Revisamos los logs de acceso regularmente:
sudo journalctl -u sshd -f
sudo lastlog
sudo last -n 20
Resumen de seguridad
| Medida | Descripción |
|---|---|
| Cambiar puerto | Reduce escaneos automáticos |
| Deshabilitar root | Evita ataques directos a root |
| Claves públicas | Más seguro que contraseñas |
| Fail2ban | Bloquea IPs maliciosas |
| AllowUsers | Lista blanca de usuarios |
Conclusión
Con estas configuraciones tendremos un servidor SSH robusto y seguro. Recuerda mantener el sistema actualizado y revisar los logs periódicamente.
La seguridad es un proceso continuo, no un estado. Revisa y actualiza tus configuraciones regularmente. [!NOTE] ✍️ Transparencia: Este artículo ha sido creado con el apoyo de herramientas de inteligencia artificial. Toda la información técnica ha sido revisada y validada por el autor antes de su publicación.