Active Directory Wartung

AD Check-up

Health & Security

Ein gut funktionierendes Environment ist die Basis für ein reibungsloses Business.

Aus diesem Grund sollten regelmäßige Checks laufen, um den guten und gesunden Zustand im Netzwerk weiterhin aufrecht erhalten zu können.

Frühzeitig erkannte Probleme oder Fehlerkonfigurationen vermeiden unnötige Betriebsstörungen.

Folgende Komponenten sollten bei einem turnusmäßigen Check-up berücksichtig werden

Gruppenrichtlinien:

Mit dem Skript GP_Link_Reporter bekommen wir einen detaillierten Bericht über die vorhandenen Gruppenrichtlinien und deren Verlinkung.

GP_Link_Reporter

Skript Download: GP_Link_Reporter


Mit dem Befehl Backup-GPO -All -Path C:\GPOBackup erstellen wir ein Backup unserer Gruppenrichtlinien.

Backup-GPO


Prüfen als nächstes ob der Pfad zu den Gruppenrichtlinienvorlagen erreichbar ist.

Test-Path \\dwp.local\SYSVOL\dwp.local\Policies\PolicyDefinitions

Test-Path Policy Definitions


Prüfen die Konsistenz des Ordners SysVol > Jetzt ermitteln

Check-up SYSVol


Prüfen mit dem Tool Get-WinADDFSHealth den DFS Zustand.

Get-WinADDFSHealth


Geprüft werden könnte auch die Konfiguration zur automatischen DFSR-Wiederherstellung. Normalerweise ist diese Option deaktiviert, um Datenverlust durch nicht synchronisierten Upstreams zu vermeiden.

Get-ItemProperty “HKLM:\SYSTEM\CurrentControlSet\Services\DFSR\Parameters\” | select StopReplicationOnAutoRecovery

Zustand DFSR Wiederherstellung


Prüfen der Gruppenrichtlinien und der Owner-Eigenschaften.

Get-GPO -All | Select DisplayName,Owner

Get-GPO Owner and Permission

oder mit dem Powershell-Skript Get-NetGPO

Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | select ObjectDN, IdentityReference, ActiveDirectoryRights > C:\Temp\GP_Permissions.txt


Der PolicyAnalyzer hilft dabei zu prüfen, ob die Microsoft Empfehlungen zur Härtung eingesetzt wurden.

PolicyAnalyzer AD Check up


Verwaiste Gruppenrichtlinie aufspüren

Verwaiste GPOs finden

Skript Download: verwaistegpos


Die Kennwortrichtlinie sollte auch überprüft werden. Eventuell sind die Anforderungen mittlerweile auch zu schwach. Dann empfehle ich den Anixis Passwor Policy Enforcer.

Password Policy to weak

Domänen-Controller:

Halten die vorhandenen Domain Controller auch den GlobalCatalog und wie sind die Details?

Get-ADDomainController -Filter * | Select Domain,Name,IPv4Address,IsGlobalCatalog,Site,OperatingSystem

Details of Domain Controllers


Nicht verwendete Netzwerkadapter sollten deaktiviert werden.

netsh interface ipv4 show interfaces

Disable unused Nics


Sind die DNS-Server auch über Kreuz eingetragen?

netsh interface ipv4 show dnsservers

DNS Server über Kreuz


Kontroller der Event-Logs auf Fehler oder Warnungen

Show only Errors


Welche Windows Dienste laufen?

Get-Service | where {$_.Status -eq “Running”}

Check Windows Services


Welche Dienste laufen mit Dienstkosten wie z.B. System oder Netzwerk?

Get-WmiObject win32_service | where {($_.startname -ne “LocalSystem”) -and ($_.startname -ne “NT AUTHORITY\NetworkService”) -and ($_.startname -ne “NT AUTHORITY\NETWORK SERVICE”) -and ($_.startname -ne “NT AUTHORITY\LocalService”) } | FT name, startname, startmode

Welche Dienste laufen unter System


Sind noch alle installierten Windows Feature im Einsatz?

Import-Module ServerManager
Get-WindowsFeature | Where-Object {$_. installstate -eq “installed”} | Format-List Name,Installstate

Get Windows Feature are installed


Welche Drittanbieter Software ist noch installiert, ist diese aktuell und wird sie noch benötigt?

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName,Publisher,InstallDate | Sort DisplayName

Check Third-Party Software


Das DSRM Kennwort falls nicht mehr bekannt sollte geändert werden.

change dsrm password ntdsutil


Ist die Zeit korrekt eingestellt und der Provider?

Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\ | select Type, NtpServer

w32tm /query /status
w32tm /query /configuration

Check AD Time


Die Replikationsüberprüfung eines der wichtigsten Instrumente!

dcdiag /v /c /d /e /s:DC_Name
dcdiag /e /test:DNS /DNSAll
repadmin /queue
repadmin /replsummary
repadmin /showrepl
Get-ADReplicationFailure -Target dwp.local -Scope Domain

Check AD Replication Failures


Nicht benötige Dienste sollte nach dem NIST-Standard deaktiviert werden.

https://nvd.nist.gov/ncp/repository

Active Directory

Zuerst erstellen wir eine kurze Zusammenfassung.

Active Directory Information

Skript Download: Domain_Audit_Summary.


Dann kann man einen Schnappschuss der AD-Objekte erstellen. Dient zum späteren Vergleich.

https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer

Active Directory create Snapshot


Überprüfung der Tombstone-Lifetime


Überprüfen ob es Konten gibt die zur Anmeldung noch nicht eingesetzt wurden. Prüfen und bei Bedarf deaktivieren

Get-ADUser -Filter {(lastlogontimestamp -notlike “*”) -and (enabled -eq $true)} | Select Name,DistinguishedName


Überprüfen welche Kennwörter nicht ablaufen. Bei Bedarf anpassen.

Get-ADUser -filter * -properties Name, PasswordNeverExpires | where { $_.passwordNeverExpires -eq “true” } | where {$_.enabled -eq “true”} | fl Name,SamAccountName,PasswordNeverExpires


Überprüfen der Group Managed Services Accounts. Werden noch alle benötigt?

Get-ADServiceAccount -Filter * -Properties *


Überprüfung der Accounts die durch den AdminSDHolder geschützt werden.

Get-ADUser -filter {AdminCount -eq 1} -Properties * | select Name,DistinguishedName,LastLogonDate,Enabled,PasswordNeverExpires,MemberOf


Welche Benutzer oder Gruppen mit dem Namen *admin* bestehen eigentlich?

Get-ADUser -Filter {name -like “*adm*”} -Properties name | Select-Object Name
Get-ADGroup -Filter {name -like “*adm*”} -Properties name | Select-Object Name


Prüfen der Gruppenmitgliedschaften von privilegierten Gruppen!

Get-NetGroup “Enterprise Admins” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Schema Admins” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Domain Admins” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Administrators” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Backup Operators” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Account Operators” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “DNS Admins” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Print Operators” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Server Operators” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Group Policy Creator Owners” | Get-NetGroupMember | Select GroupName,MemberName
Get-NetGroup “Protected Users” | Get-NetGroupMember | Select GroupName,MemberName


Nicht mehr benutze AD-Konten ermitteln und bei Bedarf löschen. Natürlich auch delegierte Admin Konten.


Domain Name System

Replikationspartitionen prüfen

dnscmd /enumzones

Replikationspartitionen prüfen


Überprüfen der bedingten Weiterleitungen (Conditonal forwarders). Bei Bedarf entfernen.

Get-DnsServerZone


Ist das Scavenging Interval eingestellt?

dnscmd DC1 /info


Dann prüfen wir noch, ob NetBios auf den Netzwerkkarten deaktiviert ist


Weitere wichtige Prüfungen

Sind auf allen Maschinen die Protokolle LLMNR, WDigest, LM & NTLM auth deaktiviert? Am Besten lässt sich das über eine Gruppenrichtlinie umsetzen und steuern.


Ist LAPS Local Administrator Password Solution ausgerollt, um die Kennwörter der lokalen Administratoren zu steuern?


Ist die Powershell aktuell? Mindestens v5 oder höher aktuell 7.1.1. Sind die Ausführungsrichtlinien korrekt gesetzt?

msiexec.exe /package PowerShell-7.1.1-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1

PSVersionTable


Überprüfen aller SPNs Service Principal Names. Gibt es doppelte oder verwaiste Einträge?

Check all SPNs

Download Skript: Check all SPNs


Ist das KRBTGT Kennwort seit der Installation der Domäne schon einmal zurückgesetzt worden?


Wurde das schwache SMBv1 Protokoll domänenweit deaktiviert?


Ist Bitlocker oder eine Alternative auf den Clientsystemen zum Schutz ausgerollt worden?


Wird das Prinzip Least Privilege umgesetzt. Arbeit ein Administrator wirklich mit mindestens 2 unterschiedlichen Accounts?


Wird neben dem Passwort auch Multi-Faktor eingesetzt, z.B. zur Anmeldung an Windows Servern oder schützenswerten Applikationen?


Wurde die Firewall auf Windows Servern und Clientsystemen angepasst bzw. überprüft?


Wird Credential Guard zur Isolierung von LSASS benötigt?