So verhindern Sie, dass Benutzer ihr Fenster für die gültige Anmeldung erweitern

14

Ich habe an einigen Sicherheitsmaßnahmen für eine RedHat-Box gearbeitet und wollte wissen, ob es möglich ist, zu verhindern, dass ein Benutzer sein Kennwort ändert, wenn es abgelaufen ist.

Für einen unserer Kunden ist es erforderlich, dass er nur über temporäre Konten auf den Server zugreifen kann. Das bedeutet, dass das Kennwort nach dem Erstellen der Benutzeranmeldeinformationen innerhalb von 4 Stunden abläuft und dass es nach Ablauf des Kennworts nur von root geändert werden kann .

Für die erste Anforderung (Kennwörter, deren Gültigkeit nach 4 Stunden abläuft) könnte dies durch Festlegen von passwordMaxAge = 144000 erreicht werden . Aber ich konnte immer noch keine Möglichkeit finden, die Benutzer daran zu hindern, abgelaufene Kennwörter zu ändern, ohne den Kennwortablauf zu deaktivieren.

Kann jemand helfen?

geboren zu hula
quelle
4
Ist es in Ordnung, wenn der Benutzer vorhandene Anmeldesitzungen nach Ablauf des 4-Stunden-Fensters geöffnet lässt? Wenn das Passwort des Benutzers abläuft, werden sie nicht rausgeschmissen, wenn sie bereits angemeldet sind. Ich könnte eine SSH-Sitzung wochenlang offen halten.
Wyzard
Anstatt sich auf at / cronjobs und die Modifikation von System-Binärdateien zu verlassen, können Sie möglicherweise ein einfaches Pam-Modul schreiben, oder es gibt sogar eines (oder Sie können pam_time aufteilen, um weitere Optionen
einzuschließen

Antworten:

21

Im Allgemeinen wird der Kennwortablauf verwendet, um Benutzer zum Ändern ihrer Kennwörter zu zwingen . Es hört sich so an, als ob Sie das Konto sperren möchten , wodurch jede Anmeldung verhindert wird.

Ich würde stattdessen vorschlagen, dass Sie beim Erstellen des Kontos auch einen at-Job einrichten, der das Konto nach vier Stunden sperrt.

Beispielsweise:

useradd temp8143
echo chage -E 0 temp8143 | at now + 4 hours

(Es wird chage -Eerwartet, dass die Ablaufdaten in Tagen angegeben werden. Daher arbeiten wir mit einem at job daran.)

Michael Hampton
quelle
3
Das ist eine schöne Lösung. +1 von mir.
Jenny D
2
Ah, Wahnsinn - diese Idee gefällt mir auch ; auch +1. Sie könnten sogar einen atTest machen userdel, der den Vorteil hätte, all diese temporären Accounts aufzuräumen , damit sie nicht für immer herumhängen .
MadHatter
2
Ich denke, das ist eigentlich besser als mein Vorschlag.
Jenny D
Ich denke, passwd -l temp813wird das Gleiche erreichen wie chage -E 0 temp8143.
Nate Eldredge
5
@ NateEldredge Nicht genau. passwd -lDies verhindert beispielsweise nicht das Anmelden bei SSH-Schlüsseln oder Fingerabdrücken, während dies der Fall ist chage -E 0.
Michael Hampton
24

Wenn Sie das setuid-Bit aus dem passwd-Befehl entfernen, kann es nur root verwenden. Dadurch wird auch verhindert, dass Benutzer das Kennwort ändern, bevor es abläuft. Anderenfalls können die Benutzer das Konto um weitere vier Stunden verlängern.

[jenny@finch ~] sudo chmod -s /usr/bin/passwd
[jenny@finch ~]$ passwd
Changing password for user jenny.
Changing password for jenny.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: Authentication token manipulation error

Root kann weiterhin jedes Passwort ändern:

[jenny@finch ~]$ sudo passwd jenny
Changing password for user jenny.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
Jenny D
quelle
5
Elegant und sehr UNIX. +1 von mir. @borntohula, vergiss nicht, diese Antwort zu akzeptieren, indem du auf die "Häkchen" -Umrandung klickst, wenn du damit zufrieden bist.
MadHatter
6
Das funktioniert fast . Das Problem dabei ist, dass das Entfernen des Setuid-Bits rückgängig gemacht wird, wenn passwdes jemals vom System aktualisiert wird.
Michael Hampton
3
@ MichaelHampton Wahr. Dafür ist zB eine Marionette gedacht. Überprüfen nicht alle ihre Systeme nach jedem Update auf neue setuid / setgid-Bits?
Jenny D
1
@JennyD - sie sollten wahrscheinlich überprüfen, ob sich die setuid / setgid-Bits geändert haben , aber nur sehr wenige tun dies jemals
warren am
2
@warren - in diesem Satz könnte eine leichte Spur von Sarkasmus enthalten sein. Eine sehr kleine Spur. Minuscule.
Jenny D