Abgelaufenes Passwort und SSH-Schlüssel-basierte Anmeldung mit UsePAM ja

Abgelaufenes Passwort und SSH-Schlüssel-basierte Anmeldung mit UsePAM ja

Es gibt eine SLES 11-Maschine. Die Benutzer melden sich über SSH und Pubkey an (gemischt, einige Benutzer verwenden ein Passwort, andere einen SSH-Schlüssel).

Die sshd_config hat:

UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes

Das Problem: Wenn das Passwort eines Benutzers abläuft, der sich per Pubkey anmeldet, wird der Benutzer aufgefordert, sein Passwort zu ändern.

Die Frage:Wie können wir die PAM- oder SSHD-Konfiguration so einstellen, dass sich Benutzer anmelden können, wenn sie über einen gültigen SSH-Schlüssel verfügen und ihr Kennwort abgelaufen ist? –OhneEs erscheint die Meldung „Ändern Sie Ihr Passwort“.

UPDATE#1: Die Lösung kann nicht sein: „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:~ # 

UPDATE#2: Die Lösung kann nicht sein: Legen Sie das Benutzerkennwort so fest, dass es nie abläuft

UPDATE#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 # 

Antwort1

Die Reihenfolge der Vorgänge, die zur Abfrage eines abgelaufenen Passworts führen, ist wie folgt:

  • SSH führt die PAM- accountPhase aus, die überprüft, ob das Konto existiert und gültig ist. Die accountPhase stellt fest, dass das Kennwort abgelaufen ist, und benachrichtigt SSH darüber.
  • SSH führt eine schlüsselbasierte Authentifizierung durch. PAM wird hierfür nicht benötigt, daher wird die authPhase nicht ausgeführt. Anschließend richtet es die SSH-Anmeldesitzung ein und führt die PAM- sessionPhase aus.
  • Als nächstes erinnert sich SSH daran, dass PAM ihm mitgeteilt hat, dass das Passwort abgelaufen ist, gibt eine Warnmeldung aus und fordert PAM auf, den Benutzer aufzufordern, das Passwort zu ändern. Anschließend trennt SSH die Verbindung.

All dies ist SSHs Aufgabe und ich sehe keine SSH-Optionen, um dieses Verhalten zu konfigurieren. Wenn Sie also keine benutzerdefinierte Version von SSH und/oder PAM erstellen möchten, besteht die einzige Option, die ich sehe, darin, zu verhindern, dass PAM das abgelaufene Passwort an SSH meldet. Wenn Sie dies tun,Es deaktiviert die Überprüfung abgelaufener Passwörter über SSH vollständig, auch wenn sich der Benutzer über SSH mit einem Passwort anmeldet. Andere (nicht SSH-)Anmeldemethoden prüfen weiterhin das Ablaufdatum des Passworts.

Ihre aktuelle pam.d/sshdDatei hat einen account include common-accountEintrag. Ich nehme an, es gibt eine common-accountDatei, die einen Verweis auf enthält pam_unix.so. Dies ist die Zeile, die nach einem abgelaufenen Passwort sucht.

Sie möchten die Datei selbst wahrscheinlich nicht anfassen common-account, da sie für andere Anmeldemethoden verwendet wird. Stattdessen möchten Sie die includeaus Ihrer Datei entfernen. Wenn neben noch pam.d/sshdandere Funktionen in vorhanden sind , möchten Sie diese wahrscheinlich direkt in einfügen .common-accountpam_unix.sopam.d/sshd

Denken Sie zum Schluss daran, dass dies eine Änderung der Sicherheit Ihres Systems ist und Sie meinen guten Ratschlägen nicht blind vertrauen sollten. Informieren Sie sich über die Funktionsweise von PAM, wenn Sie damit nicht vertraut sind. Einige Ausgangspunkte könnten man 7 PAM, man 5 pam.conf, und sein man 8 pam_unix.

Antwort2

Zu pam_unix.so wurde (ungefähr im Februar 2016) eine Option namens no_pass_expiry hinzugefügt (Quellcodeänderung hieroderManpage hier). Im Grunde weist es pam_unix an, ein abgelaufenes Passwort zu ignorieren, wenn etwas anderes als pam_unix zur Authentifizierung verwendet wurde, z. B. wenn die Authentifizierung von sshd durchgeführt wurde.

Wenn Sie über eine Version von pam_unix.so verfügen, die diese Option enthält, sollten Sie PAM daher wie folgt konfigurieren können:

  1. Warnen Sie weiterhin, verlangen Sie jedoch keine Änderung eines abgelaufenen Passworts, wenn ein SSH-Schlüssel zur Authentifizierung über SSH verwendet wurde
  2. Fordern Sie eine Passwortänderung eines abgelaufenen Passworts an, wenn ein Login/Passwort über pam_unix.so zur Authentifizierung über SSH verwendet wurde
  3. Keine Auswirkung auf andere Authentifizierungssequenzen (z. B. über den Anmeldedienst).

Ich habe beispielsweise einen RHEL 7-Server für die oben genannten Aufgaben konfiguriert, indem ich einfach /etc/pam.d/sshd aktualisiert und pam_unix.so no_pass_expiry sowohl zu den Konto- als auch zu den Kennworttypen hinzugefügt habe, z. B.

account    required    pam_nologin.so
account    sufficient  pam_unix.so no_pass_expiry
account    include     password-auth
password   sufficient  pam_unix.so no_pass_expiry
password   include     password-auth

Antwort3

  • Aus Compliance-Gründen möchten Sie Ihr PAM oder Ihre sshd_config möglicherweise nicht ändern.
  • Sie verwenden möglicherweisePasswortAuthentifizierung neinin sshd_config
  • Möglicherweise verwenden Sie zufällige Passwörter.
  • Möglicherweise haben Sie sogar die CIS-Konformität implementiert.
  • Ihre Benutzer erhalten immer noch die Eingabeaufforderung

Anschließend kann Root das Datum der Passwortänderung anpassen:

for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done

verwandte Informationen