kras99 - stock.adobe.com

Wie Sie mit PowerShell AD-Kontosperrungen aufheben

Je mehr Anmeldeinformationen Benutzer im Griff behalten müssen, desto eher kommt es zu Fehleingaben und Kontosperren. Diese lassen sich von Admins per PowerShell aufheben.

Das Aussperren aus einem Computer kann schnell passieren, beispielsweise wenn ein Mitarbeiter nach zu vielen erzwungenen Passwortwechseln mehrmals das falsche eingibt. Bis die IT-Abteilung ihm hilft, kann er sein Konto nicht mehr nutzen.

Ziel der Kontosperre ist es, Angriffe von Hackern zu verhindern, die versuchen, das Kennwort eines Benutzers durch Raten herauszufinden. Doch nicht immer steckt ein Angriff dahinter, oder ein Nutzer, der sein Passwort vergessen hat.

Auch Anwendungen können manchmal auf diese Weise blockiert werden. Sie sind oft auf ein Dienstkonto angewiesen, um die notwendigen Zugriffsrechte zu erhalten. Wenn sich jedoch das Kennwort des Dienstkontos ändert und diese Änderung nicht an die Anwendung durchgereicht wird, kann das zu einer Sperre des Dienstkontos führen.

Redundante Anmeldeinformationen sind eine weitere häufige Ursache für Kontosperren. Ein Benutzer kann ein Dutzend oder mehr Sätze von Anmeldeinformationen haben, die an einen gemeinsamen Benutzernamen gebunden sind. Es ist nicht ganz einfach, den Überblick über all diese Konten zu behalten. Nicht selten verwendet ein Mitarbeiter in so einer Situation mehrmals die falschen Anmeldedaten und sperrt sich aus.

Wie Sie durch Automatisierung proaktiv Kontosperrungen vermeiden

Ein häufiges Szenario für irrtümliche Accountsperrungen ist, dass ein Benutzer von einem domänenverbundenen Windows-Desktop im Büro auf einen anderen Windows-Rechner zu Hause wechselt, der derzeit nicht mit einem Netzwerk verbunden ist.

Da das Notebook offline ist, hat er eine vorherige Kennwortänderung nicht registriert. Der Benutzer muss sich mit dem alten Kennwort anmelden. Wenn der Benutzer das Notebook mit ins Büro nimmt und versucht, auf das Netzwerk zuzugreifen, kann die Kennwortabweichung zu einer Kontosperre führen.

Kontosperren als Problem für die IT-Abteilung

Einer der Hauptgründe, warum gesperrte Konten so problematisch sind, ist, dass sie in der Regel unbemerkt ablaufen. Als Administrator wissen Sie möglicherweise nicht einmal, dass eine Kontosperrung aufgetreten ist, bis der Benutzer anruft oder Sie ein Kontosperrungsereignis in den Windows-Ereignisprotokollen sehen. Sie können jedoch die PowerShell-Automatisierung verwenden, um einen besseren Überblick über diese Vorfälle zu erhalten.

Wie Sie die Ereignisprotokolle durchsuchen

So ist es möglich, mit PowerShell in den Ereignisprotokollen nach Sperren zu suchen:

Get-WinEvent -FilterHashTable @{LogName="Security"; ID=4740} | Select-Object TimeCreated, Message | Format-Table -Wrap

Das Cmdlet Get-WinEvent fragt Ereignisprotokolle ab. Der FilterHashTable-Teil gibt die Elemente an, nach denen in den Protokollen gesucht werden soll. In diesem Fall weist der LogName-Parameter das Cmdlet Get-WinEvent an, das Windows-Sicherheitsprotokoll zu durchsuchen. Außerdem sucht der ID-Parameter nach Instanzen der Ereignis-ID 4740, die eine Kontosperre anzeigt.

Die Pipeline leitet die Ereignisse an das Cmdlet Select-Object weiter, das Meldung und Zeitpunkt des Ereignisses anzeigt. Normalerweise schneidet PowerShell die Kontosperrungsmeldung ab, doch das Cmdlet Format-Table zwingt PowerShell zusammen mit dem Wrap-Parameter dazu, alle relevanten Informationen anzuzeigen.

Durchsuchung der Ereignisprotokolle
Abbildung 1: Mit PowerShell durchsuchen Sie die Ereignisprotokolle nach den Kontosperren.

In einer Produktionsumgebung könnte diese Active-Directory-Kontosperrenabfrage eine übermäßige Anzahl von Ergebnissen zurückgeben, da sie das Sicherheitsereignisprotokoll auf alle Instanzen der Ereignis-ID 4740 überprüft, unabhängig davon, wann das Ereignis aufgetreten ist. Dieses Problem lässt sich am besten mit dem Filter StartTime beheben. Der folgende Befehl sucht zum Beispiel nach Ereignissen, die in den letzten 24 Stunden aufgetreten sind:

$Start=(Get-Date).AddDays(-1)

Get-WinEvent -FilterHashTable @{LogName="Security"; ID=4740;StartTime=$Start}

| Select-Object TimeCreated, Message | Format-Table -Wrap

Der erste Befehl erstellt eine Variable mit dem Namen $Start und setzt sie über AddDays(-1) auf die letzten 24 Stunden. Um die Protokolle der letzten Wochen zu prüfen, verwenden Sie AddDays(-7).

Der zweite Befehl ist mit dem früheren Code identisch. Wir haben nur StartTime=$Start zur Filter-Hash-Tabelle hinzugefügt. Das weist PowerShell an, Ergebnisse zu ignorieren, die älter sind als das Datum und der Zeitstempel in der Variablen $Start.

Wie Sie den Sperrstatus eines Kontos überprüfen

Eine weitere Möglichkeit, wie PowerShell bei Active-Directory-Kontosperrungen hilft, ist die Verwendung des Cmdlets Get-ADUser zum Überprüfen des Sperrstatus des Kontos. Verwenden Sie den folgenden Befehl, um Attribute abzurufen, die sich auf Active-Directory-Benutzerkonten beziehen.

Get-ADUser -Identity <Benutzername> -Properties * | Select-Object LockedOut, AccountLockoutTime, BadLogonCount

Der Identitätsparameter gibt den Kontonamen des zu untersuchenden Benutzers an. Rufen Sie in diesem Fall alle Eigenschaften des Kontos ab, und verwenden Sie dann das Cmdlet Select-Object, um den Sperrstatus, den Zeitpunkt der Sperre und die Anzahl der fehlgeschlagenen Anmeldeversuche anzuzeigen. Die Eigenschaft LockedOut ist entweder als true oder false gesetzt: ein gesperrtes Konto steht auf true, ein nicht-gesperrtes auf false.

Um ein Konto zu entsperren, verwenden Sie den folgenden PowerShell-Befehl, wobei Sie <Benutzername> durch den Namen des Benutzers ersetzen, dessen Konto Sie entsperren möchten.

Unlock-ADAccount <Benutzername>
Überprüfung des Kontostatus und Freischaltung
Abbildung 2: Mit PowerShell überprüfen Sie den Kontostatus und können den Account wieder freischalten.

Das PowerShell-Cmdlet Get-ADUser ruft den Kontosperrungsstatus eines Benutzers ab. In diesem Fall gibt der Wert true an, dass das Konto des Benutzers gesperrt ist. Das Cmdlet Unlock-ADAccount hebt die Sperre des Kontos auf. Sie können das Cmdlet Get-ADUser verwenden, um zu überprüfen, ob die Entsperrung erfolgreich war.

Angehen von weitreichenden Problemen mit der PowerShell-Skripterstellung

PowerShell bietet Ihnen die grundlegenden Tools zum Erkennen und Beheben von Kontosperrungsereignissen. Verwenden Sie die Befehle und Techniken in diesem Artikel, um darauf aufzubauen und automatisierte Skripte zu erstellen, die bei der Behebung von Kontosperrungsereignissen im großen Maßstab helfen.

Erfahren Sie mehr über Serverbetriebssysteme