SSH (Secure Shell) es un protocolo ampliamente utilizado para acceder de forma segura a servidores y escritorios Linux a través de una conexión cifrada. Sin embargo, debido a su importancia y a la sensibilidad de los datos que se transmiten a través de él, es crucial proteger SSH contra posibles vulnerabilidades y ataques.
Aquí hay 10 consejos para ayudarte a fortalecer la seguridad de SSH en tu servidor o escritorio Linux:
1. Actualizar Regularmente
Mantén tu sistema operativo y el software relacionado con SSH actualizado con las últimas versiones y parches de seguridad. Las actualizaciones suelen incluir correcciones para vulnerabilidades conocidas que podrían ser explotadas por los atacantes.
Puede leer también | Instalación y usos de OpenSSH
2. Utilizar Claves SSH en lugar de Contraseñas
En lugar de depender de contraseñas, utiliza autenticación basada en claves SSH. Genera un par de claves pública y privada, y copia la clave pública en el archivo ~/.ssh/authorized_keys
en el servidor. Esto mejora la seguridad y evita ataques de fuerza bruta.
3. Configurar un Firewall
Utiliza un firewall para restringir el acceso a SSH desde direcciones IP específicas o rangos de IP confiables. Esto ayuda a prevenir intentos de conexión no autorizados desde direcciones IP desconocidas.
Puede leer también | Configuración de SSH basado en Web: Una Guía Paso a Paso
4. Cambiar el Puerto por Defecto
Considera cambiar el puerto por defecto de SSH (puerto 22) a un número de puerto no estándar. Si bien esto no proporciona una seguridad adicional significativa, puede reducir el número de intentos de conexión automáticos realizados por bots maliciosos.
5. Limitar Acceso por Usuario
Restringe el acceso SSH solo a los usuarios que realmente lo necesitan. Utiliza la opción AllowUsers
o DenyUsers
en el archivo de configuración SSH (sshd_config
) para especificar qué usuarios pueden o no pueden acceder al sistema a través de SSH.
Puede leer también | Una nueva vulnerabilidad de OpenSSH expone los sistemas Linux a la inyección remota de comandos
6. Deshabilitar la Autenticación de Root
Desactiva la autenticación directa del usuario root a través de SSH. En su lugar, accede como un usuario regular y luego cambia al usuario root una vez que hayas iniciado sesión. Esto reduce el riesgo de ataques dirigidos directamente al usuario root.
7. Utilizar Auditoría de SSH
Habilita el registro de eventos de SSH para monitorear y registrar todas las actividades relacionadas con SSH. Esto puede ayudarte a identificar intentos de conexión no autorizados y otras actividades sospechosas.
8. Habilitar Autenticación de Dos Factores
Considera habilitar la autenticación de dos factores (2FA) para SSH. Esto agrega una capa adicional de seguridad al requerir no solo una contraseña o una clave SSH, sino también un segundo método de autenticación, como un código generado en un dispositivo móvil.
Puede leer también | Kali Linux 2022.1 lanzado con 6 nuevas herramientas, compatibilidad amplia SSH y más
9. Configurar Tiempo de Sesión Inactiva
Establece un tiempo de sesión inactiva para desconectar automáticamente a los usuarios que no están utilizando SSH durante un período de tiempo especificado. Esto ayuda a prevenir la posibilidad de sesiones dejadas abiertas y sin supervisión.
10. Monitorizar y Mantener Logs
Monitoriza regularmente los registros de SSH en busca de actividad sospechosa o inusual. Realiza un análisis periódico de los registros y toma medidas inmediatas en caso de detectar cualquier indicio de intento de intrusión.
Aplique estas recomendaciones principales de inmediato al uso del SSH
1. Instalar fail2ban
Una de las primeras cosas que deberías hacer (especialmente en un servidor) es instalar fail2ban, que previene ataques maliciosos y de fuerza bruta de inicio de sesión y también puede utilizarse para monitorizar otros protocolos de red (como HTTP, SSH y FTP).
Puede leer también | ¿Cuál seria la forma de configurar el inicio de sesión SSH sin contraseña?
Con fail2ban, creas jaulas, que son configuraciones que le dicen al sistema qué hacer cuando ocurren ciertas cosas (como un intento fallido de inicio de sesión SSH). Los archivos jail (típicamente llamados jail.local) están alojados en /etc/fail2ban/ y pueden tener este aspecto:
[sshd]
enabled = true
puerto = ssh
filtro = sshd
logpath = /var/log/auth.log
maxretry = 3
tiempo de búsqueda = 300
bantime = 28800
ignoreip = 127.0.0.1
Puede instalar fail2ban en un sistema basado en Debian, con el siguiente comando:
sudo apt-get install fail2ban -y
En un sistema basado en Fedora, ese comando sería:
sudo dnf install fail2ban -y
2. Cambiar el puerto por defecto
Por defecto, SSH utiliza el puerto 22 para las conexiones entrantes. Esta conexión es de conocimiento común y puede traer problemas. En mis sistemas más importantes, siempre cambio el puerto a otro, como 2124. Es importante que cambies el puerto a algo que no esté siendo usado por otro sistema.
La configuración del puerto se establece en el archivo /etc/ssh/sshd_config y en la línea #Port 22.
Asegúrate de eliminar el carácter # y cambiar 22 por el puerto que quieras utilizar. Una vez que hayas hecho el cambio, recuerda reiniciar SSH con:
sudo systemctl restart ssh
En el caso de sistemas basados en Fedora, ese comando sería:
sudo systemctl restart sshd
3. Bloquee a los usuarios con contraseñas en blanco
Aunque probablemente no tengas usuarios en tu sistema con contraseñas en blanco, este consejo entra en la categoría de "más vale prevenir que curar". Si tienes un usuario con una contraseña en blanco, y un mal actor lo descubre, podría acceder a tu máquina con facilidad. Para evitar esa situación, abra el archivo /etc/ssh/sshd_config y busque la línea
#PermitEmptyPasswords no
Cambia esa línea por:
PermitEmptyPasswords no
Guarde y cierre el archivo y reinicie SSH.
4. Restringir el acceso a direcciones IP específicas
Otro truco muy útil es limitar el acceso SSH a direcciones IP específicas. Por ejemplo, si sólo tienes una persona que necesita acceder a una máquina, y su dirección IP es 192.168.1.11, puedes limitar el acceso SSH con la ayuda del archivo /etc/hosts.allow. Abre ese archivo con tu editor de texto favorito, como nano, y añade la siguiente línea al final:
sshd: 192.168.1.62, 192.168.1.11
Si tienes más de una dirección IP que quieres permitir, puedes añadir tantas como sea necesario, separando cada dirección con una coma, así:
sshd: 192.168.1.62, 192.168.1.11, 192.168.1.12, 192.168.1.13, 192.168.1.14
Guarda y cierra el archivo.
5. Utilizar la autenticación de claves SSH
La importancia de la autenticación de claves SSH no puede ser exagerada. Ya he mostrado en otro artículo cómo se configura esta técnica, así que asegúrate de leer ese artículo e implementar la táctica. En conjunción con fail2ban, la autenticación de claves SSH es una gran manera de prevenir inicios de sesión SSH no deseados.
Puede leer también | 21 paquetes maliciosos que reemplazan a OpenSSH ESET lo identifico
Al implementar estos consejos, puedes fortalecer significativamente la seguridad de SSH en tu servidor o escritorio Linux, protegiendo tus datos y sistemas contra posibles amenazas y ataques cibernéticos. Recuerda que la seguridad es un proceso continuo, por lo que es importante revisar y actualizar regularmente tus medidas de seguridad para mantener la protección de tus sistemas.