Active Directory (AD) wird von vielen Organisationen für die Benutzerverwaltung und Authentifizierungsdienste verwendet. Das Verständnis des Passwortablaufs von AD-Benutzerkonten ist wichtig, um die Sicherheit aufrechtzuerhalten. Mit PowerShell kann diese Aufgabe automatisiert werden, was die Verwaltung erleichtert. Dieser Artikel wird erklären, wie man den Passwortablauf von AD-Benutzerkonten mit PowerShell schrittweise überprüft.
Befehl zur Überprüfung des Passwortablaufs
Um den Passwortablauf eines Active Directory-Benutzerkontos zu überprüfen, kombinieren Sie das PowerShell-Cmdlet Get-ADUser mit mehreren Attributen. Unten steht der grundlegende Befehl, um den Passwortablauf für einen bestimmten Benutzer zu überprüfen.
# Überprüfung des Passwortablaufs des Benutzers
Get-ADUser -Identity "username" -Properties "PasswordLastSet", "PasswordNeverExpires" | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, @{Name="PasswordExpires"; Expression={if ($_.PasswordNeverExpires -eq $false) { $_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays) } else {"Niemals ablaufend"}}}
Dieser Befehl ruft „PasswordLastSet“ (das letzte Mal, dass das Passwort gesetzt wurde), ab, ob das Passwort so eingestellt ist, dass es nie abläuft „PasswordNeverExpires“, und wenn das Passwort ein Ablaufdatum hat, berechnet und zeigt an, wann dieses Ablaufdatum ist.
Kommentare
- Das Cmdlet
Get-ADUser
wird verwendet, um Benutzerinformationen aus AD abzurufen. - Der Parameter
-Identity
gibt den Zielbenutzernamen an. - Mit dem Parameter
-Properties
geben Sie an, welche Attribute Sie abrufen möchten. Standardmäßig werden nicht alle Attribute abgerufen. - Verwenden Sie das Cmdlet
Select-Object
, um die Informationen auszuwählen, die Sie anzeigen möchten, und fügen Sie benutzerdefinierte Eigenschaften hinzu.
Skriptbeispiel 1: Auflistung abgelaufener Benutzer
Ein Skript, um Benutzer zu identifizieren und aufzulisten, deren Passwörter unter allen Active Directory-Benutzern abgelaufen sind, kann dabei helfen, die Einhaltung der organisatorischen Sicherheitsrichtlinien zu überprüfen und Aufgaben im Konto-Management zu automatisieren.
Das folgende PowerShell-Skript erkennt Benutzer, deren Passwörter abgelaufen sind, indem es das aktuelle Datum vergleicht und eine Liste dieser Benutzer ausgibt.
# Liste abgelaufener Benutzer
Import-Module ActiveDirectory
$heute = (Get-Date)
Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $heute
} | Select-Object Name, PasswordLastSet, @{Name="PasswordExpires"; Expression={$_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)}}
Kommentare
Import-Module ActiveDirectory
macht Active Directory-bezogene Cmdlets verfügbar. Diese Zeile ist immer notwendig, bevor man AD-bezogene Skripte ausführt.- Das Cmdlet
Get-Date
wird verwendet, um das aktuelle Datum zu erhalten, das als Basis für die Bestimmung des Passwortablaufs dient. Get-ADUser -Filter *
zielt auf alle Benutzer in Active Directory ab.- Das Cmdlet
Where-Object
filtert Benutzer, deren Passwörter nicht dauerhaft gültig sind und deren Passwortsetzdatum plus die maximal gültige Periode, die durch die Passwortrichtlinie des Domäns definiert ist, vor dem heutigen Datum liegt. - Verwenden Sie das Cmdlet
Select-Object
, um nur die notwendigen Informationen auszuwählen und die benutzerdefinierte EigenschaftPasswordExpires
hinzuzufügen, um das Passwortablaufdatum zu berechnen und anzuzeigen.
Dieses Skript erleichtert die Verwaltung abgelaufener Benutzer und trägt zur Aufrechterhaltung der Sicherheit bei.
Skriptbeispiel 2: Automatische Benachrichtigungs-E-Mails vor Ablauf
Benutzer innerhalb der Organisation darüber zu informieren, dass ihr Passwort bald abläuft, kann das Benutzererlebnis verbessern und die Sicherheit erhöhen. Das folgende PowerShell-Skript erkennt Benutzer, deren Passwörter innerhalb einer bestimmten Anzahl von Tagen ablaufen werden, und sendet automatisch Benachrichtigungs-E-Mails an diese Benutzer.
# Senden von Benachrichtigungs-E-Mails vor dem Ablauf
Import-Module ActiveDirectory
$Benachrichtigungszeitraum = 14 # Anzahl der Tage vor dem Senden der Benachrichtigung
$smtpServer = "smtp.example.com" # SMTP-Serveradresse
$vonEmail = "admin@example.com" # E-Mail-Adresse des Absenders
$Betreff = "Ihr Passwort läuft bald ab" # E-Mail-Betreff
$benutzer = Get-ADUser -Filter * -Properties EmailAddress, PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays - $Benachrichtigungszeitraum)) -lt (Get-Date)
}
foreach ($benutzer in $benutzer) {
$anEmail = $benutzer.EmailAddress
$text = "Liebe(r) $($benutzer.Name),\n\nIhr Passwort wird in weniger als $Benachrichtigungszeitraum Tagen ablaufen. Bitte ändern Sie Ihr Passwort so bald wie möglich.\n\nMit freundlichen Grüßen,\nIhr IT-Team"
Send-MailMessage -SmtpServer $smtpServer -From $vonEmail -To $anEmail -Subject $Betreff -Body $text
}
Kommentare
- Dieses Skript verwendet die Variable
$Benachrichtigungszeitraum
, um festzulegen, wann mit der Benachrichtigung der Benutzer begonnen wird, in diesem Beispiel 14 Tage im Voraus. - Das Cmdlet
Get-ADUser
ruft Benutzerinformationen einschließlich der AttributeEmailAddress
,PasswordLastSet
undPasswordNeverExpires
ab. - Das Cmdlet
Where-Object
filtert nach Benutzern, deren Passwortablauf bevorsteht. - Die
foreach
-Schleife wird verwendet, um jedem relevanten Benutzer eine E-Mail zu senden, indem das CmdletSend-MailMessage
verwendet wird.
Durch regelmäßiges Ausführen dieses Skripts können Benutzer rechtzeitig Maßnahmen ergreifen, bevor ihre Passwörter ablaufen, was dazu beiträgt, die Kontosicherheit aufrechtzuerhalten und die Anzahl der Support-Tickets zu reduzieren.
Skriptbeispiel 3: Automatische Deaktivierung abgelaufener Benutzerkonten
Als Sicherheitsmaßnahme kann das automatische Deaktivieren von Benutzerkonten, deren Passwörter abgelaufen sind, das Risiko unbefugten Zugriffs verringern. Das folgende PowerShell-Skript erkennt Benutzerkonten mit abgelaufenen Passwörtern und deaktiviert diese Konten automatisch.
# Automatische Deaktivierung abgelaufener Benutzer
Import-Module ActiveDirectory
$heute = (Get-Date)
$abgelaufeneBenutzer = Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $heute
}
foreach ($benutzer in $abgelaufeneBenutzer) {
# Deaktivierung des Benutzerkontos
Disable-ADAccount -Identity $benutzer.SamAccountName
Write-Output "Deaktiviertes Konto: $($benutzer.Name)"
}
Kommentare
Import-Module ActiveDirectory
importiert das Active Directory-Modul, was die Verwendung von AD-bezogenen Cmdlets ermöglicht.- Das Cmdlet
Get-ADUser
ruft alle Benutzerinformationen ab und verwendetWhere-Object
, um nach Benutzern mit abgelaufenen Passwörtern zu filtern. - In der
foreach
-Schleife wird das CmdletDisable-ADAccount
verwendet, um die Konten von Benutzern zu deaktivieren, deren Passwörter abgelaufen sind. - Das Skript gibt in der Konsole aus, wenn ein Benutzerkonto deaktiviert wird.
Dieses Skript ist besonders nützlich für das Konto-Management in großen Organisationen, da es die Einhaltung von Sicherheitsrichtlinien automatisiert und den administrativen Arbeitsaufwand reduziert. Durch regelmäßiges Ausführen des Skripts wird sichergestellt, dass Konten mit abgelaufenen Passwörtern deaktiviert werden, was die Systemsicherheit erhöht.
Sicherheitsüberlegungen
Bei der Automatisierung der Passwortrichtlinie und des Benutzerkontenmanagements sollten mehrere Sicherheitsüberlegungen beachtet werden. Beachten Sie die folgenden Punkte bei der Implementierung und dem Betrieb dieser Skripte.
- Anwendung des Prinzips der geringsten Rechte: Dem Konto, das das Skript ausführt, sollten die minimal notwendigen Berechtigungen gewährt werden. Beispielsweise sollten, wenn nur Benutzerpasswortinformationen gelesen werden, nur Leseberechtigungen zugewiesen und nur die notwendigen Berechtigungen für das Deaktivieren von Konten gewährt werden.
- Sichere Skriptspeicherung: Da Skripte potenziell sensible Informationen oder Befehle enthalten können, die das System verändern, sollten sie sicher aufbewahrt werden, um sie vor unbefugtem Zugriff zu schützen.
- Protokollierung und Überwachung: Änderungen, die durch Skripte vorgenommen werden, sollten ordnungsgemäß protokolliert und überwacht werden. Dies ermöglicht eine schnelle Reaktion auf unerwartetes Verhalten oder Sicherheitsvorfälle.
- Aufrechterhaltung von Benachrichtigungsmechanismen: Insbesondere für Skripte, die Benutzer über bevorstehende Passwortabläufe informieren oder automatisch Konten deaktivieren, ist es ratsam, Mechanismen einzurichten, um Administratoren oder Benutzer zu benachrichtigen, wenn Aktionen durchgeführt werden.
- Regelmäßige Überprüfung und Aktualisierung: Skripte sollten regelmäßig überprüft und bei Bedarf in Reaktion auf Änderungen der organisatorischen Richtlinien oder Aktualisierungen der Active Directory-Umgebung aktualisiert werden.
Durch Beachtung dieser Sicherheitsüberlegungen können die durch diese Skripte erleichterten automatisierten Prozesse effizient funktionieren und gleichzeitig mit den organisatorischen Sicherheitsstandards übereinstimmen.
Fazit
Die Verwendung von PowerShell zur Überprüfung und Verwaltung des Passwortablaufs von Active Directory-Benutzerkonten ist wesentlich, um die organisatorische Sicherheit aufrechtzuerhalten. Durch die Nutzung der in diesem Artikel vorgestellten Skripte kann eine effiziente Überwachung des Passwortablaufs von AD-Benutzerkonten, eine Benachrichtigung vor dem Ablauf und eine automatische Kontoabschaltung basierend auf Sicherheitsrichtlinien erreicht werden.
Es ist wichtig, dass diese automatisierten Prozesse die Sicherheitsrichtlinien der Organisation unterstützen und verbessern. Jedoch muss die Automatisierung von der Anwendung des Prinzips der geringsten Rechte, der sicheren Skriptspeicherung, der angemessenen Protokollierung und Überwachung, der Aufrechterhaltung von Benachrichtigungsmechanismen und der regelmäßigen Überprüfung und Aktualisierung begleitet werden, unter anderem Sicherheitsüberlegungen.
Letztendlich kann durch die geeignete Kombination dieser Best Practices und Automatisierungsskripte die Verwaltung der Active Directory-Umgebung effizienter und sicherer werden.