en openssh, ¿puedo especificar un comando que se ejecutará en cada intento de inicio de sesión?

en openssh, ¿puedo especificar un comando que se ejecutará en cada intento de inicio de sesión?

Recibo muchos ataques de inicio de sesión ssh y quiero reducirlos. ¿Hay alguna manera de especificar un comando para que openssh se ejecute y verifique su valor de retorno y solo permita el intento de inicio de sesión si este comando devuelve 0?

La razón detrás de esto es que me gustaría poder tener reglas de inicio de sesión más complejas que pueda expresar en un script en lugar de a través de reglas simples basadas en IP/filewall.

Respuesta1

Sí, con un openssh suficientemente moderno hay un truco: usar AuthorizedKeysCommand. Esta opción de configuración le permite especificar un comando externo para recuperar claves SSH. Aquí puede poner lógica como recuperar claves SSH de LDAP, pero también cualquier otra lógica que desee. Siempre que acepte solo la autenticación basada en claves, no devolver ninguna clave hará que la autenticación falle.

En versiones anteriores de openssh puedes usar ForceCommand, pero es un comando forzado.despuésautenticación, no un comando que se ejecutaantesautenticación. Sin embargo, funciona con autenticación basada tanto en contraseña como en clave.

Si desea admitir la autenticación basada en contraseña y desea conectarse a la fase de autenticación, deberá escribir su propio módulo PAM y hacerlo obligatorio para la autenticación SSH. Esta no es la forma más trivial y no se solicita para la autenticación basada en claves.

Si todo lo que desea hacer es bloquear direcciones IP que tienen demasiadas fallas de autenticación, fail2ban también puede ayudarlo, sin requerir cambios en su configuración SSH.

información relacionada