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
PowerShell AD
Abbildung 1: Die PowerShell hilft beim Bereinigen von Active Directory.

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.

Gruppen
Abbildung 2: Leere Gruppen und Gruppenmitgliedschaften sollten regelmäßig im Active Directory überprüft werden.

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.

DNS
Abbildung 3: Die Namensserver für DNS-Zonen und die Hosteinträge sollten Admins ab und zu überprüfen.

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.

AD Reporting Tool
Abbildung 4: Das Active Directory Reporting Tool erstellt Berichte fürs Active Directory und hilft bei der Bereinigung.

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
PingCastle
Abbildung 5: PingCastle gibt einen Überblick zum Active Directory, hilft bei der Bereinigung und erhöht die Sicherheit.

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.

Vertrauensstellung
Abbildung 6: Vertrauensstellungen spielen bei der Bereinigung von Active Directory ebenfalls eine wichtige Rolle.

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")}}

Erfahren Sie mehr über Serverbetriebssysteme