Automatisches Sperren von Benutzern nach fehlgeschlagenen Anmeldungen

6.6. Automatisches Sperren von Benutzern nach fehlgeschlagenen Anmeldungen#

Standardmäßig kann ein Benutzer sein Passwort beliebig oft falsch eingeben. Um Brute Force-Angriffe auf Passwörter zu erschweren, kann eine automatische Sperre von einem Benutzerkonto nach einer konfigurierbaren Anzahl von fehlerhaften Anmeldungen aktiviert werden.

UCS vereinheitlicht verschiedene Methoden zur Authentifizierung und Autorisierung von Benutzern. Abhängig von den installierten Softwarekomponenten kann es verschiedene Mechanismen geben, wie fehlgeschlagene Anmeldeversuche konfiguriert und gezählt werden.

Im folgenden werden die drei unterschiedlichen Methoden beschrieben.

6.6.1. Samba Active Directory Dienste#

In Samba Active Directory Umgebungen werden diverse Dienste von Samba bereitgestellt, wie zum Beispiel Kerberos. Um Benutzer nach fehlgeschlagenen Anmeldungen zu sperren, kann das Tool samba-tool verwendet werden.

  • Um die aktuell konfigurierten Werte anzuzeigen:

    $ samba-tool domain passwordsettings show
    
  • Um festzulegen, wie oft ein Benutzer versuchen kann, sich mit einem falschen Passwort anzumelden, bevor das Konto gesperrt wird:

    $ samba-tool domain passwordsettings set --account-lockout-threshold=5
    
  • Um festzulegen, wie viele Minuten ein Konto gesperrt wird, nachdem zu viele falsche Passwörter eingegeben wurden:

    $ samba-tool domain passwordsettings set --account-lockout-duration=3
    
  • Um die Anzahl der Minuten festzulegen, nach der der Zähler zurückgesetzt wird:

    $ samba-tool domain passwordsettings set --reset-account-lockout-after=5
    

    Wenn ein Konto automatisch nach der konfigurierten Aussperrungsdauer entsperrt wird, dann wird der Zähler nicht direkt mit zurückgesetzt, um das Konto noch eine gewisse Zeit unter strikter Beobachtung zu halten. In dem Zeitfenster nach dem Ende der Aussperrung und vor der endgültigen Rücksetzung des Zählers führt ein einziger erneuter Login-Versuch mit einem falschen Passwort direkt wieder zu einer Sperrung des Kontos.

Die manuelle Entsperrung eines Benutzers erfolgt in der Benutzerverwaltung auf dem Reiter Konto über die Aktivierung der Checkbox Aussperrung zurücksetzen.

6.6.2. PAM-Stack#

Das automatische Sperren von Benutzern nach fehlgeschlagenen Anmeldungen im PAM-Stack kann durch Setzen der Univention Configuration Registry Variable auth/faillog auf yes aktiviert werden. Die Obergrenze an fehlerhaften Passworteingaben, bei der eine Kontosperre aktiviert wird, wird in der Univention Configuration Registry Variable auth/faillog/limit konfiguriert. Unterhalb des Limits wird nach einer korrekten Passworteingabe der Zähler jedesmal wieder zurückgesetzt.

Die Sperre im PAM-Stack ist standardmäßig nur auf ein lokales System begrenzt. Wenn ein Benutzer also auf einem System zu oft sein Passwort falsch eingegeben hat, kann er sich auf einem anderen System weiterhin anmelden. Durch Setzen der Univention Configuration Registry Variable auth/faillog/lock_global kann die Sperre auch global erfolgen und wird im LDAP registriert. Die globale Sperrung kann nur auf Primary Directory Node/Backup-Systemen eingesetzt werden, da andere Systemrollen nicht über die nötigen Berechtigungen im LDAP-Verzeichnis verfügen. Auf allen Servern der genannten Systemrollen wird die Aussperrung aber automatisch auch lokal umgesetzt oder über das verwendete Listener-Modul auch wieder zurückgenommen, abhängig vom aktuellen Aussperrungszustands des Kontos im LDAP-Verzeichnis.

Standardmäßig ist die Sperre über den PAM-Stack unbegrenzt gültig, sie kann aber auch nach Ablauf eines Intervalls automatisch wieder aufgehoben werden. Hierzu ist in der Univention Configuration Registry Variable auth/faillog/unlock_time ein Zeitraum in Sekunden anzugeben. Wird der Wert auf 0 gesetzt, wird die Sperre direkt wiederaufgehoben.

Der root-Benutzer ist standardmäßig von der Passwort-Sperre ausgenommen, kann aber durch Setzen der Univention Configuration Registry Variable auth/faillog/root auf yes ebenfalls aufgenommen werden.

Werden Konten nur lokal gesperrt, kann der Administrator ein Benutzerkonto durch Eingabe des folgenden Befehls entsperren:

$ faillog -r -u USERNAME

Erfolgt die Sperrung global im LDAP, kann der Benutzer im UMC-Modul Benutzer unter dem Reiter Konto mit der Optionen Aussperrung zurücksetzen zurückgesetzt werden.

6.6.3. OpenLDAP#

Bei UCS Directory Nodes kann die automatische Kontosperre für den Fall eines wiederholten LDAP-Authentifizierungsfehlers aktiviert werden. Voraussetzung ist, dass das MDB LDAP-Backend verwendet wird. Dies ist seit UCS 4 das Standard Backend, vorherige Systeme müssen auf das MDB LDAP-Backend migriert werden, siehe UCS performance guide [5].

Die Aktivierung der automatischen Kontosperrung muss pro UCS Directory Node aktiviert werden. Dazu müssen die Univention Configuration Registry Variablen ldap/ppolicy und ldap/ppolicy/enabled auf yes gesetzt werden und der OpenLDAP Server muss neu gestartet werden:

$ ucr set ldap/ppolicy=yes ldap/ppolicy/enabled=yes
$ systemctl restart slapd

Die Standardrichtlinie ist so ausgelegt, dass fünf wiederholte LDAP-Authentifizierungsfehler innerhalb eines Überwachungsintervalls von fünf Minuten dazu führen, dass das authentifizierende Konto gesperrt wird. Ein gesperrtes Konto kann nur von einem Domain-Administrator über das UMC-Modul Benutzer über die Checkbox Aussperrung zurücksetzen im Reiter Konto freigeschaltet werden.

Die Anzahl der wiederholten LDAP-Authentifizierungsfehler kann in dem Konfigurationsobjekt mit der objectClass pwdPolicy angepasst werden:

$ univention-ldapsearch objectclass=pwdPolicy
pwdMaxFailure

Das Attribut bestimmt die Anzahl der LDAP-Authentifizierungsfehler vor der Sperrung.

pwdMaxFailureCountInterval

Das Attribut bestimmt das Zeitintervall in Sekunden, das berücksichtigt wird. LDAP-Authentifizierungsfehler außerhalb dieses Intervalls werden bei der Zählung vernachlässigt.

Um den Account erst nach 10 Versuchen zu sperren kann der folgende Befehl verwendet werden:

$ LB="$(ucr get ldap/base)"
$ ldapmodify -x -D "cn=admin,$LB" -y /etc/ldap.secret <<__EOT__
dn: cn=default,cn=ppolicy,cn=univention,$LB
changetype: modify
replace: pwdMaxFailure
pwdMaxFailure: 10
__EOT__

Die manuelle Entsperrung eines Benutzers erfolgt in der Benutzerverwaltung auf dem Reiter Konto über die Aktivierung der Checkbox Aussperrung zurücksetzen.