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.so
de lasession
sección de/etc/pam.d/sshd
(y reemplazarlo conpam_lastlog.so
si no está allí. No estoy seguro de sipam_unix.so/session
está haciendo esto o no, pero se siente como el lugar correcto.ForcedPasswdChange No
esto es para SSH1ForcedPasswdChange No
no 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:
account
etapa PAM , que verifica que la cuenta existe y es válida. Laaccount
etapa se da cuenta de que la contraseña ha caducado y le avisa a SSH.auth
escenario. Luego configura la sesión de inicio de sesión SSH y ejecuta lasession
etapa 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/sshd
archivo actual tiene unaaccount include common-account
entrada. Supongo que hay uncommon-account
archivo que contiene una referencia apam_unix.so
. Esta es la línea que busca una contraseña caducada.Probablemente no desee tocar el
common-account
archivo en sí, ya que se usa para otros métodos de inicio de sesión. En cambio, desea eliminar elinclude
de supam.d/sshd
archivo. Si hay otras funciones encommon-account
ademá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.conf
yman 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