# AD Health Check Dokumentation
## Planung
Um eine AD Health Check durchzuführen, müssen im Vorfeld diverse Informationen mit dem Kunden abgestimmt werden.
### Zielsetzung
Dem Kunden sollte im Vorfeld eine Frage gestellt und auf Basis dieser eine entsprechende Diskussion eingeleitet werden.
"Was erhoffen Sie sich durch einen AD Health Check"
### Technische Voraussetzungen
- ein Windows 10 Domain joined Endgerät mit installiertem Office Produkt (Word ist in der Regel ausreichend)
- Ein Account zur Anmeldung auf den DCs oder einem Adminserver (zur Prüfung der Dienste und Eventlogs)
- Ein Account zur Anmeldung am Windows 10 Endgerät
### Aufwandsschätzung
3-5 Tage (Sammeln der Informationen, Aufbereiten der Informationen, Ergebnisbesprechung mit dem Kunden)
## Umsetzung
1. Repadmin /replsummary
auf Fehler prüfen
2. Repadmin /Showrepl
auf Fehler prüfen
3. Forrest und Domain Functional Level prüfen
(get-addomain).DomainMode
(get-adforrest).ForestMode
4. Prüfung der Versionsstände der Domain Controller
[System.environment]::OSVersion.Version
5. Prüfung der auf dem DC installierten Rollen und Features
Import-module servermanager ; Get-WindowsFeature | where-object {$_.Installed -eq $True} | format-list DisplayName
6. Prüfung der aud den DCs laufenden Dienste
get-service DFSR
get-service FRS
get-service DNS
get-service NTDS
get-service NETLOGON
7. Prüfung der essentiellen AD Dienste via DCDIAG
dcdiag /test:netlogons
dcdiag /test:replications
dcdiag /test:advertising
dcdiag /test:fsmocheck
dcdiag /test:DFSREvent
dcdiag /test:SystemLog
dcdiag /test:KnowsOfRoleHolders
dcdiag /test:SysVolCheck
8. Prüfung der Eventlogs auf den DCs
Administrative Ereignisse
DNS Server
DFS Replikation
Directory Service
9. Prüfung DNS Einstellungen
10. Security Relevante Prüfungen
- ms-DS-MachineAccountQuota
- Prüfung der Standardgruppen (Domain Admins, Enterprise Admins, Schema Admins, etc.)
- Get-ADUser -Identity krbtgt -Properties PasswordLastSet (sollte regelmäßig geändert werden)
10. Starten der folgenden Scripte, analyse der erzeugten Dateien
a. ADHC.ps1
b. ADHealthCheck_v2_Signed.ps1
c. ADDS_Inventory_V2_Signed.ps1
### Powershell Abfragen
```powershell=
Get-ADComputer -Filter {OperatingSystem -Like '*Windows 7*'} -Properties OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack,LastLogonDate,ServicePrincipalName,TrustedForDelegation,TrustedtoAuthForDelegation | Export-Csv -Delimiter ";" -NoClobber -NoTypeInformation -Encoding UTF8 -Path "C:\temp\$(Get-Date -Format yyyyMMdd-HHmm)-ComputerWindows7.csv"
```
```powershell=
Get-ADComputer -Filter {OperatingSystem -Like '*Windows 8*'} -Properties OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack,LastLogonDate,ServicePrincipalName,TrustedForDelegation,TrustedtoAuthForDelegation | Export-Csv -Delimiter ";" -NoClobber -NoTypeInformation -Encoding UTF8 -Path "C:\temp\$(Get-Date -Format yyyyMMdd-HHmm)-ComputerWindows8.csv"
```
```powershell=
Get-ADComputer -Filter {OperatingSystem -Like '*Windows 2000*'} -Properties OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack,LastLogonDate,ServicePrincipalName,TrustedForDelegation,TrustedtoAuthForDelegation |Export-Csv -Delimiter ";" -NoClobber -NoTypeInformation -Encoding UTF8 -Path "C:\temp\$(Get-Date -Format yyyyMMdd-HHmm)-ComputerWindows2000.csv"
```
```powershell=
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2003*'} -Properties OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack,LastLogonDate,ServicePrincipalName,TrustedForDelegation,TrustedtoAuthForDelegation | Export-Csv -Delimiter ";" -NoClobber -NoTypeInformation -Encoding UTF8 -Path "C:\temp\$(Get-Date -Format yyyyMMdd-HHmm)-ComputerWindows2003.csv"
```
```powershell=
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2008*'} -Properties OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack,LastLogonDate,ServicePrincipalName,TrustedForDelegation,TrustedtoAuthForDelegation | Export-Csv -Delimiter ";" -NoClobber -NoTypeInformation -Encoding UTF8 -Path "C:\temp\$(Get-Date -Format yyyyMMdd-HHmm)-ComputerWindows2008.csv"
```
```powershell=
Get-ADUser krbtgt -Property PasswordLastSet
```