Mejores Prácticas de Seguridad para OpenSSH
OpenSSH es una implementación del protocolo SSH, es recomendado para login remoto, hacer backups, transferencia de archivos vía scp o sftp y mucho más. SSH es perfecto para mantener la confidencialidad y la integridad de los datos intercambiados dentro de una red o sistema. Ahora bien, es necesario seguir algunos lineamientos para mejorar la seguridad de un servidor OpenSSH. Aquí les voy a enumerar las más importantes.
1- Solo use el Protocolo SSH versión 2
La versión 1 del protocolo SSH tiene un problema de vulnerabilidades de Seguridad. SSH-1 ya está obsoleto y debemos evitarlo. Para asegurarnos que estamos corriendo la versión 2 lo verificamos el archivo sshd_config.
# vi /etc/ssh/sshd_config
Y verificamos que este la siguiente línea, si no está lo agregamos.
Protocol 2
2- Limite el acceso de usuarios vía SSH
Por Defecto todos los usuarios creados en un sistema linux pueden loguearse vía SSH usando sus contraseñas o llave pública. A veces creamos cuentas de usuarios para ftp, email u otro propósito, sin embargo estos usuarios también se pueden loguear al sistema vía ssh lo que es una gran vulnerabilidad de seguridad. Estos usuarios tendrán acceso a herramientas del sistema y la capacidad de correr scripts ya sea para abrir puertos o hacer cualquier cosa. Así que la mejor recomendación seria de limitar quien tiene acceso o no vía SSH.
Para esto accesamos al archivo sshd_config
# vi /etc/ssh/sshd_config
Si solo queremos que se loguee vía ssh root, usuario1 y usuario2 modificamos lo siguiente en sshd_config
AllowUsers root usuario1 usuario2
Si solo quiero bloquear los usuarios usuario3 y usuario4
DenyUsers usuario3 usuario4
Estas directivas están en sshd_config, si no están lo pueden agregar.
3- Configure el LogOut por tiempo de inactividad
Es recomendable configurar esta directiva para evitar sesiones SSH desatendidas. Esto se configurar por igual en el archivo sshd_config.
# vi /etc/ssh/sshd_config
Y modificamos o agregamos lo siguiente
ClientAliveInterval 300
Aquí le estoy diciendo que pasado los 300 segundos sin entrada que desconecte el usuario.
4- Cambie el puerto por Defecto de SSH y Limite las conexiones por IP
Por Defecto SSH conecta desde todas las interfaces de Red y Direcciones ip del sistema. Limite las direcciones por donde conecta y cambie el puerto por defecto de SSH (22). Por lo general los ataques de fuerza bruta intentan conectarse por el puerto 22. Para configurar esto accesamos a sshd_config y modificamos o agregamos lo siguiente:
# vi /etc/ssh/sshd_config
port 2022ListenAddress 192.168.3.1ListenAddress 100.88.21.2
Aquí le estoy diciendo que solo permita conexiones por las direcciones 192.168.3.1, 100.88.21.2 y por el puerto 2022
5- Utilice contraseñas complejas
Es de vital importancia el uso de contraseñas complejas ya que los ataques de fuerza bruta utilizan claves basadas en diccionario.
6- Utilice Autenticación basada en llaves públicas
Más adelante publicare un post hablando exclusivamente de esto y cómo podemos configurarlo.
7- Deshabilite la autenticación basada en Host
Para deshabilitar este método de autenticación, modificamos o agregamos lo siguiente en sshd_config.
# vi /etc/ssh/sshd_configHostbasedAuthentication no
8- Filtrar las conexiones
Por defecto SSH permite conexiones desde cualquier dirección ip. Lo mejor es definir algunas reglas en Iptables para limitar las conexiones a una ip o segmento de red especifico. En este caso usare el puerto por defecto de SSH (22) o si configuramos otro pues utilizamos ese. Para permitir la conexión SSH desde un segmento de red especifico y bloquear las otras conexiones hacemos lo siguiente como root:
# iptables -A INPUT -p tcp -m tcp -s 192.168.3.0/24 –dport 22 -j ACCEPT# iptables -A INPUT -p tcp -m tcp -s 0.0.0.0 –dport 22 -j DROP
Siguiendo estas recomendaciones tendremos un servidor mucho mas seguro.
Comentarios
Publicar un comentario