Il y a une machine SLES 11. Les utilisateurs se connectent via SSH et pubkey (mixte, certains utilisateurs utilisent un mot de passe, certains utilisent la clé ssh)
Le sshd_config a:
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
Le problème: si le mot de passe expire pour un utilisateur qui utilise la connexion pubkey, l'utilisateur sera invité à modifier le mot de passe.
La question: Comment pouvons-nous définir la configuration PAM ou sshd pour permettre aux utilisateurs de se connecter s'ils ont une clé SSH valide et que leur mot de passe a expiré? - Sans faire apparaître "changer votre mot de passe".
MISE À JOUR # 1: La solution ne peut pas être: "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:~ #
MISE À JOUR # 2: La solution ne peut pas être: définissez le mot de passe des utilisateurs pour qu'il n'expire jamais
MISE À JOUR # 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
section de/etc/pam.d/sshd
(et en le remplaçantpam_lastlog.so
s'il n'est pas là. Je ne sais pas sipam_unix.so/session
c'est celui qui fait cela ou non, mais cela semble être le bon endroit.ForcedPasswdChange No
ceci est pour SSH1ForcedPasswdChange No
cela ne fonctionnera pas après l'expiration. vous cherchez une solution qui permettra à l'utilisateur expiré de se connecterRéponses:
L'ordre des opérations qui provoque l'invite de mot de passe expiré est le suivant:
account
étape PAM , qui vérifie que le compte existe et est valide. L'account
étape remarque que le mot de passe a expiré et informe SSH.auth
scène. Il configure ensuite la session de connexion SSH et exécute l'session
étape PAM .Tout cela est fait par SSH, et je ne vois aucune option SSH pour configurer ce comportement. Donc, sauf si vous souhaitez créer une version personnalisée de SSH et / ou PAM, la seule option que je vois est d'empêcher PAM de signaler le mot de passe expiré à SSH. Si vous faites cela, cela désactivera entièrement les vérifications de mot de passe expirés via SSH , même si l'utilisateur se connecte via SSH avec un mot de passe. D'autres méthodes de connexion (non SSH) vérifieront toujours l'expiration du mot de passe.
Votre
pam.d/sshd
fichier actuel a uneaccount include common-account
entrée. Je suppose qu'il y a uncommon-account
fichier qui contient une référence àpam_unix.so
. Il s'agit de la ligne qui recherche un mot de passe expiré.Vous ne voulez probablement pas toucher le
common-account
fichier lui-même, car il est utilisé pour d'autres méthodes de connexion. Au lieu de cela, vous souhaitez supprimer leinclude
de votrepam.d/sshd
fichier. S'il y a d'autres fonctions encommon-account
pluspam_unix.so
, vous voudrez probablement les mettre directement danspam.d/sshd
.Enfin, rappelez-vous qu'il s'agit d'une modification de la sécurité de votre système et que vous ne devriez pas simplement me faire aveuglément confiance pour vous donner de bons conseils. Lisez comment PAM fonctionne si vous ne le connaissez pas. Certains endroits de départ pourraient être
man 7 PAM
,man 5 pam.conf
etman 8 pam_unix
.la source
Une option a été ajoutée à pam_unix.so (vers février-2016) appelée no_pass_expiry ( changement de code source ici ou page de manuel ici ). Fondamentalement, il indique à pam_unix d'ignorer un mot de passe expiré si autre chose que pam_unix a été utilisé pour l'auth, par exemple si sshd a effectué l'auth.
Par conséquent, si vous avez une version de pam_unix.so qui contient cette option, vous devriez pouvoir configurer PAM pour:
Par exemple, j'ai configuré un serveur RHEL 7 pour faire ce qui précède en mettant simplement à jour /etc/pam.d/sshd et en ajoutant pam_unix.so no_pass_expiry aux types de compte et de mot de passe, par exemple
la source
Ensuite, root peut modifier la date de modification du mot de passe:
la source