Las opciones de OpenSSH son controladas por el fichero /etc/ssh/sshd_config. En esta ocasión veremos 7 opciones que podemos ajustar para mejorar todavía más la seguridad. En el fichero sshd_config, como todos los ficheros de configuración en GNU/Linux, las líneas que empiezan con el caracter # son comentarios.
Es en estas opciones donde OpenSSH utiliza los valores por defecto y el fichero sshd_config tiene dichas líneas comentadas. Esto hace el trabajo más fácil ya que sólo necesitamos remover dicho caracter y no buscar opciones por otro lado.
Gracias a nuestro querido amigo Isidro Rodríguez por sus sugerencias en el post anterior sobre este tema. He traducido para ustedes este post de The Geek Stuff. Espero les sea de gran ayuda!
Deshabilitar el login para el usuario root (PermitRootLogin)
Por defecto podemos loguearnos como root. Esto no es bueno permitirlo. Lo mejor es loguearnos con un usuario diferente de root y luego si necesitamos hacer alguna tarea administrativa obtenemos los privilegios adecuador logueandonos como root con el comando ‘su -‘ o ‘sudo’. Además esto facilita la auditoría del sistema cuando hay varios sysadmins conectándose mediante SSH.
# nano /etc/ssh/sshd_config
PermitRootLogin no
Permitir solo usuarios o grupos específicos (AllowUsers/AllowGroups)
Por defector cualquiera que pueda autenticarse satisfactoriamente le es permitido loguearse. Podemos restringir cuales usiarios o grupos pueden hacerlo. Además esto es muy útil si utilizamos NIS u OpenLDAP para la autenticación de los usuarios.
Separamos los usuarios o grupos por espacios.
# nano /etc/ssh/sshd_config
AllowUsers ramesh john jason
AllowGroups sysadmin dba
Bloquear usuarios o grupos específicos (DenyUsers DenyGroups)
Esto es todo lo contrario del punto anterior.
# nano /etc/ssh/sshd_config
DenyUsers cvs apache jane
DenyGroups developers qa
Podemos utilizar las directivas Allow y Deny en combinación. Estas son procesadas en el orden que sigue: DenyUsers, AllowUsers, DenyGroups, y AllowGroups.
Cambiar el puerto por defecto
Por defecto SSH trabaja en el puerto 22. Los atacantes revisarán si este puerto está abierto y utilizarán ataques de fuerza bruta para hacerse del servidor.
Si cambiamos el puerto a otro diferente, tendrán que saber exactamente cual es el puerto para loguearse vía SSH.
# nano /etc/ssh/sshd_config
Port 222
Cambiar el «tiempo de gracia» (LoginGraceTime)
Cuando hacemos una petición de logueo a un servidor SSH tenemos 2 minutos para entrar nuestras credenciales. Si no lo hacemos en este tiempo, SSH se desconectará. 2 minutos es demasiado. Lo ideal serían unos 30 segundos o como mucho 1 minuto.
# nano /etc/ssh/sshd_config
LoginGraceTime 1m
Restringir la interfaz (IP Address) para loguarse (ListenAddress)
Si tenemos varias NIC en el servidor y están configuradas con diferentes redes, debemos impedir que entren por SSH desde todas estas interfaces, ya que OpenSSH escucha desde todas las interfacez que haya en el sistema.
# nano /etc/ssh/sshd_config
ListenAddress 192.168.10.200
ListenAddress 192.168.10.202
Desconectar SSH cuando no hay actividad (ClientAliveInterval)
Una vez que nos logueamos satisfactoriamente en el sistema, debemos hacer que se desconecte cuando no hay actividad por un período de tiempo determinado. En OpenSSH esto puede lograrse combinando las opciones ClientAliveCountMax y ClientAliveInterval en el fichero de consfiguración sshd_config.
ClientAliveCountMax – Indica el número total de mensajes que son enviados por el servidor al cliente sin tener respuesta. Por defectu su valor es 3.
ClientAliveInterval – Indica el tiempo de espera en segundos. Después de un número determinado de segundos, el servidor SSH enviará un mensaje al cliente esperando respuesta. Por defecto su valor es 0 (lo que indica que el servidor nunca enviará dicho mensaje al cliente para verificar).
Si queremos que el cliente sea desconectado automáticamente después de 10 minutos (600 segundos), lo pondremos de la siguiente manera
# nano /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0
Fuente: TheGeekStuff