Es gibt eine SLES 11-Maschine. Die Benutzer melden sich über SSH und Pubkey an (gemischt, einige Benutzer verwenden das Kennwort, andere den SSH-Schlüssel).
Die sshd_config hat:
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
Das Problem: Wenn das Kennwort für einen Benutzer abläuft, der die Pubkey-Anmeldung verwendet, wird der Benutzer aufgefordert, das Kennwort zu ändern.
Die Frage: Wie können wir die PAM- oder sshd-Konfiguration so einstellen, dass Benutzer sich anmelden können, wenn sie einen gültigen SSH-Schlüssel haben und das Kennwort abgelaufen ist? - Ohne "Passwort ändern" aufzutauchen.
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: Setzen Sie das Benutzerkennwort so, dass es niemals 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 #
pam_unix.so
aus demsession
Abschnitt von entfernen/etc/pam.d/sshd
(und ihn durch ersetzen,pam_lastlog.so
wenn er nicht vorhanden ist. Ich bin mir nicht sicher, obpam_unix.so/session
derjenige dies tut oder nicht, aber es fühlt sich wie der richtige Ort an.ForcedPasswdChange No
dies ist für SSH1ForcedPasswdChange No
dies nach Ablauf nicht mehr funktioniert. Sie suchen nach einer Lösung, mit der sich abgelaufene Benutzer anmelden könnenAntworten:
Die Reihenfolge der Vorgänge, die die Abfrage des abgelaufenen Kennworts verursachen, lautet wie folgt:
account
Phase aus, in der überprüft wird, ob das Konto vorhanden und gültig ist. Dieaccount
Phase stellt fest, dass das Kennwort abgelaufen ist, und teilt SSH dies mit.auth
Bühne. Anschließend wird die SSH-Anmeldesitzung eingerichtet und die PAM-session
Phase ausgeführt.All dies macht SSH, 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 darin, zu verhindern, dass PAM das abgelaufene Kennwort an SSH meldet. Wenn Sie dies tun, werden abgelaufene Kennwortprüfungen über SSH vollständig deaktiviert , selbst wenn sich der Benutzer über SSH mit einem Kennwort anmeldet. Andere (Nicht-SSH-) Anmeldemethoden überprüfen weiterhin den Ablauf des Kennworts.
Ihre aktuelle
pam.d/sshd
Datei hat einenaccount include common-account
Eintrag. Ich nehme an, es gibt einecommon-account
Datei, die einen Verweis auf enthältpam_unix.so
. Dies ist die Zeile, in der nach einem abgelaufenen Kennwort gesucht wird.Sie möchten die
common-account
Datei wahrscheinlich nicht selbst berühren , da sie für andere Anmeldemethoden verwendet wird. Stattdessen möchten Sie dasinclude
aus Ihrerpam.d/sshd
Datei entfernen . Wenn escommon-account
nebenbei noch andere Funktionen gibtpam_unix.so
, möchten Sie diese wahrscheinlich direkt einfügenpam.d/sshd
.Denken Sie schließlich daran, dass dies eine Änderung der Sicherheit Ihres Systems darstellt und Sie mir nicht einfach blind vertrauen sollten, Ihnen gute Ratschläge zu geben. Lesen Sie, wie PAM funktioniert, wenn Sie damit nicht vertraut sind. Einige Startplätze sein könnte
man 7 PAM
,man 5 pam.conf
undman 8 pam_unix
.quelle
Zu pam_unix.so (ca. Februar 2016) wurde eine Option namens no_pass_expiry hinzugefügt ( Änderung des Quellcodes hier oder Manpage hier ). Grundsätzlich weist es pam_unix an, ein abgelaufenes Passwort zu ignorieren, wenn etwas anderes als pam_unix für die Authentifizierung verwendet wurde, z. B. wenn sshd die Authentifizierung durchgeführt hat.
Wenn Sie eine Version von pam_unix.so haben, die diese Option enthält, sollten Sie PAM daher wie folgt konfigurieren können:
Zum Beispiel habe ich einen RHEL 7-Server so konfiguriert, dass er die oben genannten Schritte ausführt, indem ich einfach /etc/pam.d/sshd aktualisiere und pam_unix.so no_pass_expiry sowohl zum Konto- als auch zum Kennworttyp hinzufüge, z
quelle
Dann kann root das Datum der Passwortänderung ändern:
quelle