JumalaSika ltd - Fotolia
Best Practices für das Cleanup von Active Directory
Es ist sinnvoll, ab und zu das Active Directory zu bereinigen. Dieser Beitrag zeigt Best Practices, um einen fehlerfreien Ablauf von Active Directory zu gewährleisten.
Damit Active Directory so fehlerfrei wie möglich funktioniert, sollten Admins in regelmäßigen Abständen Cleanups durchführen und nicht notwendige Objekte entfernen. Das maximiert die Sicherheit, verbessert die Leistung, erhöht die Übersicht, spart Speicherplatz, beschleunigt die Datensicherung und erleichtert die Verwaltung.
Inaktive Benutzerkonten finden
Ein häufiges Problem in vielen Umgebungen sind Benutzerkonten, die seit langer Zeit inaktiv, aber dennoch vorhanden sind. Cyberkriminelle können diese für ihre Attacken verwenden, um unbemerkt im Netzwerk zu agieren. Inaktive Konten lassen sich schnell und einfach in der Befehlszeile identifizieren:
dsquery user -inactive <Anzahl der Wochen>
Das Gleiche lässt sich auch mit Computerkonten durchführen:
dsquery computer -inactive <Anzahl der Wochen>
Auch deaktivierte Konten lassen sich in PowerShell finden:
Search-ADAccount UsersOnly -AccountInactive
Der Zeitraum, nachdem Konten als inaktiv betrachtet werden, wird auch über eine Variable gespeichert und genutzt:
$time = New-Timespan -Days 120
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $time
Haben sich Benutzer noch nie mit ihrem Benutzerkonten angemeldet, zeigt PowerShell das mit dem folgenden Befehl an:
Get-ADUser -Filter {(lastlogontimestamp -notlike "*")} | Select Name,DistinguishedName
Sind Konten deaktiviert, stellen diese dennoch eine Gefahr dar. Solche Konten sind mit dem folgenden Befehl in der Befehlszeile zu finden:
Search-ADAccount -AccountDisabled -UsersOnly | Select -Property Name,DistinguishedName
Um das letzte Anmeldedatum von bestimmten Konten zu überprüfen, kommt der folgende Befehl zum Einsatz:
Get-ADUser "joost" -Properties LastLogonDate | FT -Property Name, LastLogonDate -A
Auch Computerkonten lassen sich in PowerShell überprüfen:
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate
Leere Gruppen identifizieren und bereinigen
Wenn in einer Gruppe keine Mitglieder sind, wird diese in den meisten Fällen nicht mehr benötigt. Allerdings können Angreifer diese Gruppen verwenden, um sich selbst mehr Rechte zu erteilen. Hinter vielen Gruppen stehen oft weitreichende Berechtigungen. Es lohnt sich daher, das Active Directory zu durchsuchen, um leere Gruppen zu identifizieren. Der folgende Befehl wird in PowerShell genutzt:
Get-ADGroup -Filter * -Properties Members | where { -not $_.Members} | select Name
Generell ist es sinnvoll, vor allem Gruppen mit erweiterten Berechtigungen regelmäßig zu überprüfen und sich die Benutzerkonten anzuschauen, die Mitglieder sind. Das geht mit den standardmäßigen Tools wie Active-Directory-Benutzer und -Computer.
DNS überprüfen
Zur Bereinigung des Active Directory ist es wichtig, in regelmäßigen Abständen die Einträge der DNS-Zonen (Domain Name System) zu überprüfen und Stichproben durchzuführen, ob es Einträge gibt, die nicht mehr benötigt werden oder sogar falsch sind. Bei AD-integrierten DNS-Zonen erfolgt das zum Beispiel über dnsmgmt.msc auf den Domänencontrollern. Wichtig ist an dieser Stelle auch, ob in den Eigenschaften von DNS-Zonen – vor allem von Zonen fürs Active Directory – noch Namensserver für eine Zone eingetragen sind, die nicht richtig sind. Das kommt zum Beispiel beim Deinstallieren von Domänencontrollern vor.
Firewall-Regeln in der Windows-Firewall überprüfen
Auch die Firewall-Regeln auf Domänencontrollern sollten regelmäßig geprüft werden. Über wf.msc sind alle Regeln zu finden. Wichtig sind an dieser Stelle die eingehenden Regeln. Sind hier unbekannte Regeln aktiv, sollten diese überprüft und gegebenenfalls deaktiviert werden.
Berichte aus Active Directory erstellen – Active Directory Reporting Tools und PingCastle
Um einen Überblick zum Active Directory zu erhalten, sollten regelmäßig Berichte erstellt werden. Dadurch wird schnell klar, welche Objekte es gibt, und welche unter Umständen nicht mehr benötigt werden. Ein bekanntes, kostenloses Tool dafür ist Active Directory Reporting Tool.
Ein weiteres, wichtiges Tool in diesem Bereich ist PingCastle. Damit lassen sich Sicherheitslücken im Active Directory finden, die ebenfalls regelmäßig bereinigt werden sollten. Eine Installation des Tools ist nicht notwendig. Es reicht aus, das Tool zu starten und Active Directory zu scannen:
PingCastle --healthcheck --server joos.int
Vertrauensstellungen und Gruppenrichtlinien überprüfen und löschen
Vor allem im Rahmen von Migrationen kommt es immer wieder vor, dass Vertrauensstellungen zu anderen Domänen aufgebaut werden. Wenn diese nicht mehr benötigt werden, sollten diese gelöscht werden, um die Sicherheit zu verbessern. Vertrauensstellungen sind im Tool domain.msc in den Eigenschaften von Domänen zu finden.
In vielen Umgebungen sind darüber hinaus Gruppenrichtlinien im Einsatz, die nicht mehr verknüpft sind und auch nicht mehr benötigt werden. Mit gpmc.msc lassen sich die GPOs finden und nicht mehr benötigte GPOs löschen.
Verwaiste SIDs erkennen
Teilweise gibt es im Active Directory in verschiedenen Einträgen noch verwaiste SIDs von Objekten, die nicht mehr vorhanden sind. Diese sollten aus den verschiedenen Einträgen entfernt werden. Bei der Suche hilft zum Beispiel das PowerShell-Skript Remove-OrphanedSID.
Benutzer mit abgelaufenen Kennwörtern finden
Benutzerkonten, bei denen seit längerer Zeit das Kennwort abgelaufen ist, deuten darauf hin, dass sie nicht mehr benötigt und daher deaktiviert oder gelöscht werden können. Einen Überblick über diese Benutzerkonten sind in PowerShell mit dem folgenden Befehl zu finden:
Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" |Select-Object -Property "Displayname",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}