Hay una máquina SLES 11. Los usuarios inician sesión a través de SSH y pubkey (mixto, algunos usuarios usan contraseña, otros usan clave ssh)
El sshd_config tiene:
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
El problema: si la contraseña caduca para un usuario que utiliza el inicio de sesión de pubkey, se le solicitará al usuario que cambie la contraseña.
La pregunta: ¿Cómo podemos configurar la configuración PAM o sshd para permitir que los usuarios inicien sesión si tienen una clave SSH válida y caducaron las contraseñas? - Sin aparecer "cambiar su contraseña".
ACTUALIZACIÓN # 1: La solución no puede ser: "UsePAM no"
SERVER:~ # cat /etc/pam.d/sshd
#%PAM-1.0
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
SERVER:~ #
ACTUALIZACIÓN # 2: La solución no puede ser: configurar la contraseña del usuario para que nunca caduque
ACTUALIZACIÓN # 3:
SERVER:/etc/pam.d # cat common-account
#%PAM-1.0
...
account required pam_unix2.so
account required pam_tally.so
SERVER:/etc/pam.d #

pam_unix.sode lasessionsección de/etc/pam.d/sshd(y reemplazarlo conpam_lastlog.sosi no está allí. No estoy seguro de sipam_unix.so/sessionestá haciendo esto o no, pero se siente como el lugar correcto.ForcedPasswdChange Noesto es para SSH1ForcedPasswdChange Nono funcionará después de la expiración. está buscando una solución que permita al usuario expirado iniciar sesiónRespuestas:
El orden de las operaciones que provoca la solicitud de contraseña caducada es el siguiente:
accountetapa PAM , que verifica que la cuenta existe y es válida. Laaccountetapa se da cuenta de que la contraseña ha caducado y le avisa a SSH.authescenario. Luego configura la sesión de inicio de sesión SSH y ejecuta lasessionetapa PAM .Todo esto lo está haciendo SSH, y no veo ninguna opción de SSH para configurar este comportamiento. Entonces, a menos que desee crear una versión personalizada de SSH y / o PAM, la única opción que veo es evitar que PAM informe la contraseña caducada a SSH. Si hace esto, deshabilitará por completo las verificaciones de contraseña expiradas a través de SSH , incluso si el usuario inicia sesión a través de SSH con una contraseña. Otros métodos (no SSH) de inicio de sesión seguirán verificando la caducidad de la contraseña.
Su
pam.d/sshdarchivo actual tiene unaaccount include common-accountentrada. Supongo que hay uncommon-accountarchivo que contiene una referencia apam_unix.so. Esta es la línea que busca una contraseña caducada.Probablemente no desee tocar el
common-accountarchivo en sí, ya que se usa para otros métodos de inicio de sesión. En cambio, desea eliminar elincludede supam.d/sshdarchivo. Si hay otras funciones encommon-accountademáspam_unix.so, es probable que desee para ponerlos directamente enpam.d/sshd.Finalmente, recuerde que esta es una modificación a la seguridad de su sistema y que no debe confiar ciegamente en mí para darle buenos consejos. Lea sobre cómo funciona PAM si no está familiarizado con él. Algunos puntos de partida podrían ser
man 7 PAM,man 5 pam.confyman 8 pam_unix.fuente
Se agregó una opción a pam_unix.so (alrededor de febrero de 2016) llamada no_pass_expiry ( cambio de código fuente aquí o página de manual aquí ). Básicamente le dice a pam_unix que ignore una contraseña caducada si se usó algo diferente a pam_unix para la autenticación, por ejemplo, si sshd realizó la autenticación.
Como resultado, si tiene una versión de pam_unix.so que contiene esa opción, debería poder configurar PAM para:
Por ejemplo, configuré un servidor RHEL 7 para hacer lo anterior simplemente actualizando /etc/pam.d/sshd y agregando pam_unix.so no_pass_expiry a los tipos de cuenta y contraseña, por ejemplo
fuente
Luego, root puede modificar la fecha de cambio de contraseña:
fuente