Mejora la seguridad de tu servidor OpenSSH
Aprende cómo configurar y asegurar tu servidor OpenSSH siguiendo prácticas recomendadas para reducir riesgos y proteger tus conexiones remotas.
Introducción
En este post, exploraremos cómo configurar el servidor OpenSSH para fortalecer la seguridad de tu sistema. SSH es una herramienta poderosa para acceder remotamente a servidores, pero configurarlo de manera segura es crucial para evitar vulnerabilidades y ataques. En esta guía, aprenderás a optimizar y asegurar tu configuración SSH.
Temas que abordaremos:
- Introducción al protocolo SSH.
- Configuración básica de OpenSSH.
- Buenas prácticas para asegurar tu servidor SSH.
¿Qué es el protocolo SSH?
El protocolo SSH (Secure Shell) nos permite realizar conexiones remotas a servidores de manera segura mediante la encriptación de los datos. A diferencia de otros protocolos como Telnet, SSH garantiza la confidencialidad e integridad de la información intercambiada entre el cliente (tú computadora) y el servidor.
Características clave de SSH:
- Encriptación: Toda la comunicación se cifra, asegurando que los datos no sean interceptados.
- Autenticación: SSH admite diferentes métodos de autenticación, como contraseñas y claves públicas.
- Túneles seguros: SSH permite crear túneles seguros para redirigir tráfico a través de la conexión.
Instalación de OpenSSH
Para asegurarte de que OpenSSH está instalado en tu sistema, sigue estos pasos segun tu sistema:
En sistemas basados en Debian/Ubuntu:
1
2
sudo apt update
sudo apt install openssh-server
En sistemas basados en RHEL/CentOS:
1
sudo yum install openssh-server
Una vez instalado, asegúrate de que el servicio esté en ejecución:
1
2
sudo systemctl start ssh
sudo systemctl enable ssh
Configuración de OpenSSH
1. Deshabilitar el acceso root
Es una buena práctica deshabilitar el inicio de sesión de root para prevenir accesos no autorizados a un usuario privilegiado.
En el archivo /etc/ssh/sshd_config
, busca la siguiente línea:
1
PermitRootLogin yes
Cámbiala a:
1
PermitRootLogin no
Luego, reinicia el servicio SSH para aplicar los cambios:
1
sudo systemctl restart ssh
2. Usar claves SSH en lugar de contraseñas
La autenticación basada en claves SSH es mucho más segura que las contraseñas. Para configurarlo:
Genera un par de claves en tu máquina local:
RSA (Más común):
1
ssh-keygen -t rsa -b 4096 -C "<comentario>"
Ed25519 (Recomendada, más moderna):
1
ssh-keygen -t ed25519 -C "<comentario>"
- Copia la clave pública al servidor:
1
ssh-copy-id usuario@servidor
- Asegúrate de que el servidor permite la autenticación por claves en el archivo
/etc/ssh/sshd_config
:1 2
PasswordAuthentication no PubkeyAuthentication yes
3. Cambiar el puerto por defecto
El puerto predeterminado para SSH es el 22, que es uno de los mas atacados por bots. Cambiar el puerto puede añadir una capa de protección.
En /etc/ssh/sshd_config
, busca y cambia la línea:
1
Port 22
Por otro puerto, por ejemplo, 2222:
1
Port 2222
No olvides abrir el nuevo puerto en tu firewall y reiniciar el servicio SSH:
1
sudo systemctl restart ssh
4. Configurar el límite de intentos de autenticación
Para proteger el servidor de ataques de fuerza bruta, limita el número de intentos fallidos de autenticación.
En el archivo /etc/ssh/sshd_config
, añade las siguientes líneas:
1
2
MaxAuthTries 3
MaxSessions 2
5. Deshabilitar la autenticación por contraseñas
Si utilizas claves SSH, puedes deshabilitar el acceso mediante contraseñas para aumentar aun más la seguridad.
En /etc/ssh/sshd_config
:
1
2
PasswordAuthentication no
PermitEmptyPasswords no
Monitoreo y Auditoría de SSH
Una buena práctica es monitorear los intentos de acceso y asegurarse de que no haya actividad sospechosa en el servidor.
- Revisa los logs de SSH regularmente usando
journalctl -fu ssh
en GNU/Linux con systemd. Como alternativa, puedes usartail -f /var/log/auth.log
otail -f /var/log/secure
. - Configura un sistema de detección de intrusos como Fail2Ban para bloquear automáticamente las IPs que intentan acceder con ataques de fuerza bruta.