deepagopi2011 - Fotolia

So heben Sie Active-Directory-Kontosperren mit PowerShell auf

Aus Sicherheitsgründen sperrt Microsoft Nutzer aus Konten aus, wenn sie zu oft das falsche Passwort eingeben. Wir erklären, wie Sie das Problem schnell mit PowerShell beheben.

Unfälle passieren und insbesondere, wenn das Unternehmen veraltete Ratschläge, wie häufige erzwungene Passwortwechsel umsetzt, kommt es gelegentlich vor, dass ein Mitarbeiter zu oft das falsche Passwort eingegeben hat und aus seinem Computer ausgesperrt ist. Dann kann er nicht mehr arbeiten, bis ihm die IT-Abteilung zur Hilfe eilt.

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 dies 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.

Proaktives Vermeiden von Kontosperrungen durch Automatisierung

Ein häufiges Szenario für irrtümliche Accountsperren 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 der Laptop offline ist, hat er eine vorherige Kennwortänderung nicht registriert. Der Benutzer muss sich mit dem alten Kennwort anmelden. Wenn der Benutzer den Laptop mit ins Büro nimmt und versucht, auf das Netzwerk zuzugreifen, kann die Kennwortabweichung zu einer Kontosperre führen.

Warum sind Kontosperren ein 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.

Durchsuchen Sie die Ereignisprotokolle

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 der 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.

Abbildung 1: Durchsuchen Sie mit PowerShell die Ereignisprotokolle nach Kontosperren.
Abbildung 1: Durchsuchen Sie mit PowerShell die Ereignisprotokolle nach 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-Hashtabelle hinzugefügt. Dies weist PowerShell an, Ergebnisse zu ignorieren, die älter sind als das Datum und der Zeitstempel in der Variablen $Start.

So überprüfen Sie den Sperrstatus eines Kontos

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>

Abbildung 2: Verwenden sie PowerShell, um den Kontostatus zu prüfen und, wenn nötig, den Account wieder freizuschalten.
Abbildung 2: Verwenden sie PowerShell, um den Kontostatus zu prüfen und, wenn nötig, den Account wieder freizuschalten.

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.

PowerShell-Skripterstellung kann weitreichende Probleme angehen

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

ComputerWeekly.de
Close