Aprendiendo SSH: Buenas prácticas a realizar en un Servidor SSH
En este presente, sexto y último post, de nuestra serie de publicaciones sobre Aprendiendo SSH abordaremos de forma práctica, la configuración y uso de las opciones especificadas en el archivo de configuración de OpenSSH que se manejan del lado del servidor SSH, es decir, el archivo «SSHD Config» (sshd_config). Las cuales, abordamos en la entrega anterior.
De manera tal, de que podamos conocer de forma breve, sencilla y directa, algunas de las mejores buenas prácticas (recomendaciones y consejos) a la hora de configurar un Servidor SSH, tanto en el hogar, como en una oficina.
Y, antes de iniciar el tema de hoy, sobre las mejores «buenas prácticas a aplicar en las configuraciones de un Servidor SSH», dejaremos algunos enlaces a publicaciones relacionadas, para su posterior lectura:
Buenas prácticas en un Servidor SSH
¿Qué buenas prácticas aplican a la hora de configurar un Servidor SSH?
A continuación, y basándonos en las opciones y parámetros del archivo «SSHD Config» (sshd_config), antes vistos en el post anterior, estas serían algunas de las mejores buenas prácticas a realizar en cuanto a la configuración de dicho archivo, para asegurar lo mejor posible nuestras conexiones remotas, entrantes y salientes, sobre un determinado Servidor SSH:
Especificar los usuarios que pueden iniciar sesión SSH con la opción AllowUsers
Dado que, esta opción o parámetro no suele no venir incluida por defecto en dicho archivo, se puede insertar al final del mismo. Haciendo uso de una lista de patrones de nombre de usuario, separados por espacios. De forma tal, de que, si se especifica, el inicio de sesión, entonces solo se permitirá el mismo para las coincidencias de nombres de usuario y host que coincidan con uno de los patrones configurados.
Por ejemplo, tal como se ve a continuación:
AllowUsers *patron*@192.168.1.0/24 *@192.168.1.0/24 *.midominio.com *@1.2.3.4
AllowGroups ssh
Indicarle a SSH por cuál interfaz de red local escuchará con la opción ListenAddress
Para ello, se debe habilitar (descomentar) la opción ListenAddress, que viene de forma predeterminada con el valor «0.0.0.0», pero en realidad funciona en modo ALL, es decir, escuchar por todas las interfaces de red disponibles. Por ende, luego se debe establecer dicho valor de forma tal, de que se especifique cuál o cuáles direcciones IP locales serán utilizadas por el programa sshd para escuchar peticiones de conexión.
Por ejemplo, tal como se ve a continuación:
ListenAddress 129.168.2.1 192.168.1.*
Establecer el ingreso por SSH mediante llaves con la opción PasswordAuthentication
Para ello, se debe habilitar (descomentar) la opción PasswordAuthentication, que viene de forma predeterminada con el valor «yes». Y luego, establecer dicho valor como «No», para así exigir la utilización de llaves pública y privada para lograr la autorización de acceso a una máquina en específico. Logrando que, únicamente puedan ingresar los usuarios remotos, desde la o las computadoras, que sean autorizadas previamente. Por ejemplo, tal como se ve a continuación:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
PubkeyAuthentication yes
Desactivar el inicio de sesión como root mediante SSH con la opción PermitRootLogin
Para ello, se debe habilitar (descomentar) la opción PermitRootLogin, que viene de forma predeterminada con el valor «prohibit-password». Sin embargo, si se desea que de forma total, no se permita que un usuario root arranque una sesión SSH, el valor adecuado a configurar es «No». Por ejemplo, tal como se ve a continuación:
PermitRootLogin no
Cambiar el puerto por defecto de SSH con la opción Port
Para ello, se debe habilitar (descomentar) la opción Port, que viene de forma predeterminada con el valor «22». Sin embargo, es vital cambiar dicho puerto a cualquier otro disponible, para así, mitigar y evitar el número de ataques, manuales o de fuerza bruta, que puedan hacerse por dicho puerto hartamente conocido. Es importante asegurarse que, dicho nuevo puerto está disponible y puede ser usado por las demás aplicaciones que van a conectarse a nuestro servidor. Por ejemplo, tal como se ve a continuación:
Port 4568
Otras útiles opciones a establecer
Por último, y dado que, el programa SSH es demasiado amplio, y en la entrega anterior ya abordamos más a detalles cada una de las opciones, a continuación solo mostraremos algunas opciones más, con algunos valores que pudieran llegar a ser adecuados en múltiples y variados casos de uso.
Y estas son las siguientes:
- Banner /etc/issue
- ClientAliveInterval 300
- ClientAliveCountMax 0
- LoginGraceTime 30
- LogLevel INFO
- MaxAuthTries 3
- MaxSessions 0
- MaxStartups 3
- PermitEmptyPasswords No
- PrintMotd yes
- PrintLastLog yes
- StrictModes Yes
- SyslogFacility AUTH
- X11Forwarding yes
- X11DisplayOffset 5
Nota: Téngase en cuenta que, dependiendo del nivel de experiencia y experticia del o los SysAdmins y los requerimientos de seguridad de cada plataforma tecnológica, muchas de estas opciones pueden con todo derecho y lógica variar de formas muy distintas. Además, de que otras opciones mucho más avanzadas o complejas pueden llegar a habilitarse, por ser útiles o necesarias en diferentes entornos de operación.
Otras buenas prácticas
Entre otras buenas practicas a implementar en un Servidor SSH podemos mencionar las siguientes:
- Configurar una notificación de advertencia por correo para informar sobre todas o determinadas conexiones SSH.
- Proteger el acceso SSH a nuestros servidores contra ataques de fuerza bruta haciendo empleo de la herramienta Fail2ban.
- Chequear periódicamente con la herramienta Nmap en los servidores SSH y otros, en búsqueda de posibles puertos abiertos no autorizados o requeridos.
- Reforzar la seguridad de la plataforma informática mediante la instalación de un IDS (Sistema de Detección de Intrusiones) y un IPS (Sistema de Prevención de intrusiones).
Resumen
En resumen, con esta última entrega sobre «Aprendiendo SSH» finalizamos el contenido explicativo sobre todo lo relacionado con OpenSSH. Seguramente, en un corto tiempo, estaremos compartiendo un poco más de conocimiento esencial sobre el protocolo SSH, y con respecto a su uso por consola mediante Shell Scripting. Así que, esperamos que estas «buenas practicas en un Servidor SSH», hayan aportado mucho valor, tanto en lo personal como lo profesional, a la hora de utilizar GNU/Linux.
Si te ha gustado esta publicación, no dejes de comentarla y de compartirla con otros. Y recuerda, visitar nuestra «página de inicio» para explorar más noticias, además de unirte a nuestro canal oficial de Telegram de DesdeLinux, o este grupo para más información sobre el tema de hoy.