Mensaje de error personalizado para sshd

8

¿Es posible establecer un mensaje de error personalizado para los usuarios a los que se les niega el acceso a un servidor? De hecho, me gustaría mostrar este mensaje solo si un usuario fue rechazado debido al filtro IP establecido sshd_config. Pero un mensaje de error global sería suficiente.

Mikulas Dite
fuente

Respuestas:

6

Por "mensaje de error" creo que quiere decir que el programa cliente muestra una cadena de texto. La palabra "mensaje" tiene algún contexto en el protocolo de autenticación SSH RFC que haré referencia más adelante, pero no creo que esa sea la connotación en la que lo está utilizando.

Creo que está pensando en SSH como algo parecido a TELNET, donde el cliente mostrará cadenas de texto arbitrarias enviadas por el demonio del servidor. SSH utiliza un protocolo de autenticación que pasa mensajes tokenizados en forma de valores binarios de ida y vuelta entre el cliente y el servidor. Uno de estos mensajes tokenizados, "SSH_MSG_USERAUTH_BANNER", puede usarse para indicar al cliente que muestre cadenas de texto arbitrarias (si así lo desea), pero tendría que modificar su demonio SSH para enviarlos en el momento apropiado. No creo que OpenSSH tenga ninguna funcionalidad incorporada para enviar mensajes SSH_MSG_USERAUTH_BANNER durante puntos arbitrarios en el proceso de autenticación.

Me preguntaría por qué le gustaría dar a un atacante remoto cualquier información adicional sobre por qué ha fallado su autenticación. Saben que ha fallado porque su cliente SSH recibe y reacciona al mensaje tokenizado del demonio SSH que indica la falla.

Evan Anderson
fuente
1

EDITAR: Evan Anderson escribe más rápido que yo, y parece confirmar que el mensaje no es personalizable en el tamaño del servidor.

Puede especificar un archivo de banner en sshd_config. El banner se mostrará a todos los usuarios antes de la solicitud de inicio de sesión y declarará que solo se permiten inicios de sesión de ciertos dominios y direcciones.

SSH puede pasar el inicio de sesión al comando unix / bin / login. Dependiendo de su sistema operativo, ¿puede tener una opción allí para personalizar las indicaciones y los errores?

Cualquier otra cosa que se me ocurra probablemente signifique editar código y volver a compilar. Y es posible que el mensaje de error no se envíe desde el servidor al cliente como una cadena, sino como un código, para evitar que un atacante recopile información. (Si se trata de una cadena y se puede personalizar, alguien lo configurará como "Error de inicio de sesión. OpenSSH_3.7_p2 21032004")

Bill Gates
fuente
0

Esto no funcionaría específicamente para el filtro ip sshd_config, pero funcionaría para cualquier control de acceso implementado por PAM mediante el uso pam_echo.so.

Por ejemplo:

account [success=2 default=ignore] pam_lastlog.so inactive=30
account optional pam_echo.so file=/path/to/lastlog_error_message.txt
account requisite pam_deny.so
account ...

En este escenario, si un usuario autenticado no había iniciado sesión en los últimos treinta días, el contenido de se /path/to/lastlog_error_message.txtharía eco a la salida estándar antes de que se cerrara la conexión SSH. Si se ha pasado la comprobación de pam_lastlogentonces la evaluación saltaría los pam_echoy las pam_denyinvocaciones a seguir evaluando los restantes módulos PAM.

jgibson
fuente