Aprendiendo SSH: Opciones y parámetros del archivo SSHD Config
En la anterior (cuarta) entrega de esta serie de post sobre Aprendiendo SSH abordamos las opciones especificadas en el archivo de configuración de OpenSSH que se manejan del lado del cliente SSH, es decir, el archivo «SSH Config» (ssh_config).
Por tal razón, hoy continuaremos en esta penúltima y quinta entrega, con 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).
Y, antes de iniciar el tema de hoy, sobre el contenido gestionable del archivo «SSHD Config» (sshd_config) de OpenSSH, dejaremos algunos enlaces de publicaciones relacionadas:
Opciones y parámetros del archivo SSHD Config (sshd_config)
¿Qué es el archivo SSHD Config (sshd_config) para OpenSSH?
Tal como expresamos en el tutorial anterior, OpenSSH posee 2 archivos de configuración. Uno llamado ssh_config para la configuración del lado del cliente SSH y otro llamado sshd_config para la configuración del lado del servidor SSH. Ambos, ubicados en la ruta o directorio siguiente: /etc/ssh.
Por ende, este suele ser más importante o relevante, ya que, nos permite segurizar las conexiones SSH que vamos a permitir en nuestros Servidores. Lo que suele ser parte de algo conocido como Hardening de Servidores.
Razón por la cual, a continuación, hoy mostraremos para qué sirven muchas de las opciones y parámetros dentro de dicho archivo, para en nuestra última y sexta entrega de esta serie ofrecer recomendaciones más prácticas y reales de como hacer dichos ajustes o cambios mediante dichas opciones y parámetros.
Listado de opciones y parámetros existentes
Al igual que en el archivo «SSH Config» (ssh_config), el archivo «SSHD Config» (sshd_config) posee muchas opciones y parámetros, pero unas de las más conocidas, usadas o importantes son las siguientes:
AllowUsers / DenyUsers
Esta opción o parámetro suele no venir incluida por defecto en dicho archivo, pero insertada en el mismo, por lo general al final del mismo, ofrece la posibilidad de indicar quien o quienes (usuarios) pueden iniciar sesión en el servidor vía conexión SSH.
Por ende, esta opción o parámetro se usa acompañada 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 los nombres de usuario que coincidan con uno de los patrones.
Téngase en cuenta que, de forma predeterminada, el inicio de sesión está permitido para todos los usuarios de cualquier host. Sin embargo, si el patrón se configura de esta forma «USUARIO@HOST», entonces USER y HOST se verifican por separado, lo que restringe los inicios de sesión a usuarios particulares desde hosts particulares.
Y para HOST, también pueden utilizarse direcciones en formato de dirección IP/máscara CIDR. Por último, AllowUsers puede ser sustituido por DenyUsers para denegar los mismos patrones de usuarios.
ListenAddress
Permite especificar las direcciones IP locales (interfaces de red locales del equipo servidor) en las que el programa sshd debe escuchar. Y para ello, se pueden usar las siguientes formas de configuración:
- ListenAddress nombredehost | dirección IPv4/IPv6 [dominio ]
- ListenAddress nombredehost : puerto [dominio ]
- ListenAddress dirección IPv4/IPv6 : puerto [dominio ]
- ListenAddress [nombredehost | dirección IPv4/IPv6] : puerto [dominio ]
LoginGraceTime
Permite especificar un tiempo (de gracia), después del cual, el servidor se desconecta, si el usuario que está intentando realizar una conexión SSH, no la logra con éxito. Si el valor es cero (0), se establece que no hay límite de tiempo, mientras que, de forma predeterminada está establecido en 120 segundos.
LogLevel
Permite especificar el nivel de verbosidad para los mensajes de registro de sshd. Y los valores manejables son: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 y DEBUG3. Mientras que, el valor predeterminado es INFO.
MaxAuthTries
Permite especificar el número máximo de intentos de autenticación permitidos por conexión. De forma predeterminada, su valor está establecido en 6.
MaxSessions
Permite especificar el número máximo de sesiones abiertas de Shell por cada conexión de red establecida, ya sean, mediante inicios de sesión o por subsistema usados, por ejemplo, vía sftp. Establecer su valor en 1, hará que se deshabilite la multiplexación de sesiones, mientras que si se establece en 0, se bloquearán todos los tipos de conexiones y sesiones. De forma predeterminada, su valor está establecido en 10.
MaxStartups
Permite especificar el número máximo de conexiones no autenticadas simultáneas al demonio SSH, es decir, la cantidad de conexiones SSH que se pueden abrir por cada IP/Host. Su valor predeterminado suele ser 10, 30 o 100, lo cual suele ser considerado alto, por lo que se recomienda un valor menor.
PasswordAuthentication
Permite especificar si se exigirá la autenticación mediante contraseña. De forma predeterminada, su valor está establecido como «Si» (Yes).
PermitEmptyPasswords
Permite especificar si el servidor aprobará (autorizará) el iniciar de sesión en cuentas de usuarios con cadenas de contraseña vacías. De forma predeterminada, su valor está establecido como «No».
PermitRootLogin
Permite especificar si el servidor aprobará (autorizará) el comenzar sesiones de conexión en cuentas de usuarios root. Aunque, de forma predeterminada, su valor está establecido como «prohibit-password», lo ideal es establecerlo en «No», que establece de forma total que no se permite que un usuario root arranque una sesión SSH.
Port
Permite especificar el número de puerto, a través del cual, el programa sshd estará escuchando todas las peticiones de conexión SSH. De forma predeterminada, su valor está establecido en «22».
StrictModes
Permite especificar si el programa SSH debe verificar los modos de archivo y la propiedad de los archivos y el directorio de inicio del usuario antes de aceptar el inicio de sesión. De forma predeterminada, su valor está establecido como «Si» (Yes).
SyslogFacility
Permite que se proporcione el código de instalación que se utiliza al registrar mensajes del programa SSH. De forma predeterminada, su valor está establecido como «Autorización» (AUTH).
Nota: Dependiendo del SysAdmin y los requerimientos de seguridad de cada plataforma tecnológica, muchas otras opciones pueden ser muy útiles o necesarias. Tal como veremos en nuestra próxima y última publicación de esta serie, donde nos enfocaremos en las buenas prácticas (consejos y recomendaciones) sobre SSH, a aplicar usando todo lo hasta ahora mostrado.
Más información
Y en esta cuarta entrega, para ampliar esta información, y estudiar todas y cada una de las opciones y parámetros disponibles dentro del archivo de configuración «SSHD Config» (sshd_config), recomendamos explorar los siguientes enlaces: Archivo de configuración SSH para el Servidor OpenSSH y Manuales oficiales de OpenSSH, en inglés. Y tal como, en las tres anteriores entregas, explorar los siguientes contenidos oficiales y confiables en línea sobre SSH y OpenSSH:
- Wiki Debian
- Manual del Administrador de Debian: Inicio de sesión remoto / SSH
- Manual de seguridad de Debian: Capítulo 5. Asegurando los servicios
Resumen
En resumen, con esta nueva entrega sobre «Aprendiendo SSH» estamos casi finalizando el contenido explicativo sobre todo lo relacionado con OpenSSH, al ofrecer el conocimiento esencial sobre los archivos de configuración «SSHD Config» (sshd_config) y «SSH Config» (ssh_config). Por ende, esperamos que esté siendo útil para muchos, tanto en lo personal como lo profesional.
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.