He leído en otros lugares que otras personas piden que se "arregle" SSH para que las cuentas bloqueadas no puedan iniciar sesión a través de SSH. (consulte el error de Debian 219377) Esta solicitud fue rechazada como un parche "porque rompe algunas expectativas de los usuarios [que estaban] acostumbrados a passwd -l solo bloqueando la contraseña". (consulte el error de Debian 389183), p. algunas personas QUERÍAN poder bloquear las cuentas de los inicios de sesión con contraseña, pero aún así permitir el acceso con la clave SSH.
PAM no denegará la autenticación de la clave SSH a las cuentas que se acaban de bloquear (por ejemplo, debido a intentos de contraseña no válidos, porque la autenticación de la clave SSH está diseñada para no prestar atención al campo de la contraseña, que es donde generalmente se bloquean las cuentas).
Entiendo que la entrada del hash de la contraseña se verifica implícitamente en el momento de pam_authenicate(), no en el momento de pam_acct_mgmt(). pam_unix.así que pam_sm_acct_mgmt() no verifica el hash de la contraseña en absoluto, y pam_authenticate() no se llama durante la autenticación de clave pública.
Si su intención es poder deshabilitar de forma centralizada el inicio de sesión de las cuentas, existen otras posibles soluciones, que incluyen:
Cambiando el shell de inicio de sesión.
(re)mover su archivo authorized_keys.
Otra opción para denegar el acceso podría ser el uso de DenyGroups o AllowGroups en sshd_config (luego, agregar al usuario a un grupo "sshdeny" o eliminarlo de un grupo "sshlogin" para impedir que inicie sesión). (Lea aquí:https://help.ubuntu.com/8.04/serverguide/user-management.html )
De http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuLI lee:"El problema es que pam_unix verifica solo las fechas de vencimiento de la entrada oculta, no el contenido del campo hash de la contraseña". Si esto es cierto, expirando la cuenta en lugar de bloquearla, ¿hace lo que necesita?
La respuesta a su pregunta es posiblemente "sí, si los está deshabilitando en otro lugar que no sea el campo de contraseña"
Hice un poco más de tarea y estoy respondiendo mi propia pregunta.
En pam_krb5 de RedHat (pam_krb5-2.3.14-1/src/acct.c
), a menos que el módulo haya participado en la etapa de autenticación, la función pam_sm_acct_mgmt() devuelve PAM_IGNORE o PAM_USER_UNKNOWN según la configuración del módulo. Por lo tanto, requeriría cambios en el código pam_krb5 para hacer lo que quiero.
La respuesta de JohnGH es una buena solución; usar atributos de "proxy" para transmitir el mismo significado, como romper el caparazón o agregar a un grupo de "usuarios deshabilitados".
Otra solución (parcialmente probada) es establecer una fecha de vencimiento de la cuenta en el pasado y usar un módulo como pam_unix para fallar las verificaciones de la cuenta. Esto usa LDAP, en lugar de KRB5, pero consulta en el mismo directorio de usuarios administrado centralmente.
La autenticación basada en clave SSH es independiente de PAM. Tienes las siguientes soluciones:
- deshabilitar la autenticación basada en claves en sshd_config
- cambie y vuelva a compilar sshd y agregue un enlace para que la autenticación basada en claves verifique también si la cuenta es válida a través de pam.
Si desea utilizar el inicio de sesión sin contraseña a través de Kerberos, debe asegurarse de que:
- no estás usando pam para sshd
- tiene Kerberos correctamente configurado. P.ej. puedes hacer
kinit -k host/[email protected]
-
tu sshd está configurado para usar gssapi:
KerberosAuthentication síGSSAPIAuthentication síGSSAPICleanupCredentials yesUsePAM no
-
utiliza un cliente ssh kerberizado como PuTTY v0.61 o posterior.