TL;DR
Unternehmen härten ihre Windows-Systeme effektiv durch die konsequente Anwendung von CIS Benchmarks und Microsoft Security Baselines, um Angriffsflächen zu minimieren. Ein zentraler Aspekt ist die Implementierung robuster Account Policies, wie eine Mindestpasswortlänge von 14 Zeichen und die Nutzung von LAPS (Local Administrator Password Solution) für einzigartige lokale Admin-Passwörter auf jedem PC, die in AD-Attributen gespeichert werden. Des Weiteren ist die vollständige Konfiguration erweiterter Audit-Richtlinien entscheidend, um kritische Ereignisse wie Prozess-Erstellung (Event ID 4688) und privilegierte Nutzung zu protokollieren und das Security-Log auf mindestens 1 GB zu erweitern. Diese Maßnahmen bilden eine mehrschichtige Verteidigung gegen Cyberbedrohungen.
Diese Zusammenfassung wurde KI-gestützt erstellt (EU AI Act Art. 52).
Inhaltsverzeichnis (7 Abschnitte)
Windows-Härtung ist keine einmalige Aktion - es ist ein fortlaufender Prozess, der mit Standardkonfigurationen beginnt und schichtenweise Schutzmaßnahmen aufbaut. Dieser Guide zeigt die wichtigsten Härtungsmaßnahmen nach CIS Benchmark und Microsoft Security Baseline.
Baseline und Tools
Ausgangspunkt: Microsoft Security Compliance Toolkit:
Download und Analyse:
# Microsoft Security Compliance Toolkit (MSCT):
# https://www.microsoft.com/en-us/download/details.aspx?id=55319
# Enthält: Security Baseline für Windows 11, Windows Server 2022, Edge
# Policy Analyzer - Baseline vergleichen:
PolicyAnalyzer.exe # GUI-Tool
# Importiert: aktuelle Gruppenrichtlinien
# Vergleicht: mit Microsoft-Baseline
# Zeigt: Abweichungen farbkodiert
# LGPO.exe (Local Group Policy Object):
# Baseline auf einzelnen Rechner anwenden:
LGPO.exe /g "Windows 11 Security Baseline\GPOs"
CIS Benchmark:
# CIS Windows 11 Benchmark (Level 1 + Level 2):
# Download: cisecurity.org (kostenlos mit Account)
# Level 1: Standard-Empfehlungen (produktionsgeeignet)
# Level 2: Strikter (kann Kompatibilität beeinflussen)
# CIS-CAT Pro (Assessment-Tool):
# Prüft automatisch Compliance gegen CIS Benchmark
# Output: HTML-Report mit Score (0-100%)
Account Policies
Passwort- und Kontosperrungsrichtlinien (GPO):
Computer Configuration → Windows Settings → Security Settings → Account Policies:
Password Policy (Passwortrichtlinie):
Minimum password length: 14 (CIS Level 1: 14+)
Password complexity: Enabled (Groß/Klein/Zahl/Sonderzeichen)
Maximum password age: 365 days (oder 0 für "nie" wenn MFA!)
Minimum password age: 1 day (verhindert sofortiges Zurücksetzen)
Enforce password history: 24 passwords (Wiederverwendung verhindern)
Store passwords using reversible: Disabled!
# WICHTIG: Bei MFA → Passwortrotation weniger kritisch
# Microsoft empfiehlt seit 2019: kein Maximum-Age bei MFA!
# Dafür: Passwortlänge erhöhen (>= 16 Zeichen)
Account Lockout Policy (Kontosperrung):
Account lockout threshold: 5 invalid attempts
Account lockout duration: 15 minutes (0 = nur Admin kann freischalten)
Reset account lockout counter: 15 minutes
LAPS (Local Administrator Password Solution):
# Jeder PC hat einzigartiges lokales Admin-Passwort!
# Gespeichert in AD-Attribut (verschlüsselt ab LAPS v2)
# LAPS v2 Setup (Windows Server 2022 / Windows 11 22H2):
# 1. Schema erweitern:
Update-LapsADSchema
# 2. OU für Computer konfigurieren:
Set-LapsADComputerSelfPermission -Identity "OU=Workstations,DC=corp,DC=local"
# 3. GPO: LAPS aktivieren (Computer Configuration → Policies →
# Administrative Templates → System → LAPS):
Configure password backup directory: Active Directory
Password Settings: Complexity + Length 16 + Expiry 30 days
# 4. Passwort auslesen (IT-Admin):
Get-LapsADPassword -Identity "WORKSTATION01" -AsPlainText
Audit-Richtlinien
Windows-Auditing vollständig konfigurieren:
Erweiterte Überwachungsrichtlinien (Advanced Audit Policy):
Computer Config → Windows Settings → Security Settings → Advanced Audit Policy:
# Anmeldung:
Account Logon:
Credential Validation: Success, Failure
Kerberos Authentication: Success, Failure
Kerberos Service Ticket: Success, Failure # Kerberoasting!
Account Management:
Computer Account Management: Success, Failure
Security Group Management: Success, Failure
User Account Management: Success, Failure
Detailed Tracking:
Process Creation (4688): Success # Prozess-Monitoring!
Process Termination: Success
DS Access:
Directory Service Access: Failure
Directory Service Changes: Success, Failure
Logon/Logoff:
Account Lockout: Failure
Logon: Success, Failure
Logoff: Success
Special Logon: Success # Admin-Logins!
Object Access:
File System: (nur für kritische Ordner)
Registry: (nur für kritische Keys)
SAM: Failure # Passwort-Extraktionsversuche
Policy Change:
Audit Policy Change: Success, Failure
Authentication Policy Change: Success
Privilege Use:
Sensitive Privilege Use: Success, Failure # Mimikatz!
System:
Security State Change: Success, Failure
Security System Extension: Success, Failure
Audit-Log-Größe erhöhen:
# Security-Log: mindestens 1 GB:
Computer Config → Windows Settings → Security Settings →
Event Log → Maximum Security Log Size: 1048576 KB (1 GB)
# Logs nicht überschreiben (zu SIEM forwarden!):
Maximum Security Log Size: "Do not overwrite events (Clear log manually)"
# Aber: Sysmon/WEC für Forwarding konfigurieren!
Windows Defender und Credential Guard
Windows Defender Attack Surface Reduction (ASR):
ASR-Regeln (per GPO oder Intune):
Computer Config → Administrative Templates → Windows Defender → Exploit Guard → ASR:
# Wichtigste ASR-Regeln:
# Modus: 2 = Audit (zählen), 1 = Block, 0 = Off
Block Office macros from Win32 API calls:
GUID: 92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B
Mode: 1 (Block)
Block executable content from email/webmail:
GUID: BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550
Mode: 1 (Block)
Block Office from creating child processes:
GUID: D4F940AB-401B-4EFC-AADC-AD5F3C50688A
Mode: 1 (Block)
Block credential stealing from LSASS:
GUID: 9E6C4E1F-7D60-472F-BA1A-A39EF669E4B0
Mode: 1 (Block) # Mimikatz!
Block process creations from PSExec and WMI:
GUID: D1E49AAC-8F56-4280-B9BA-993A6D77406C
Mode: 1 (Block)
Use advanced protection against ransomware:
GUID: C1DB55AB-C21A-4637-BB3F-A12568109D35
Mode: 1 (Block)
Credential Guard:
# Isoliert LSASS in Hyper-V-Container → Mimikatz kann nicht lesen!
# Voraussetzung: UEFI, Secure Boot, Virtualization-Based Security (VBS)
# GPO aktivieren:
Computer Config → Administrative Templates → System → Device Guard:
"Turn on Virtualization Based Security": Enabled
Platform Security Level: Secure Boot and DMA Protection
Virtualization Based Protection of Code Integrity: Enabled with UEFI lock
Credential Guard Configuration: Enabled with UEFI lock
# Überprüfen:
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
# SecurityServicesRunning sollte "2" enthalten (Credential Guard)
Tamper Protection (Defender-Einstellungen schützen):
# Verhindert: Malware deaktiviert Defender!
Set-MpPreference -DisableTamperProtection $false
# Oder via Intune/Endpoint Manager (empfohlen): Einstellung gesperrt für User
SMB und Netzwerk-Härtung
SMB-Härtung (kritisch für Ransomware-Schutz!):
SMBv1 deaktivieren (SOFORT!):
# SMBv1 = WannaCry, NotPetya, EternalBlue-Vektor!
# Windows Server:
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
# Windows Client:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
# GPO (Computer Config → Administrative Templates → Network → Lanman Workstation):
Enable insecure guest logons: Disabled
SMB Signing erzwingen:
# Verhindert SMB-Relay-Angriffe (NTLM-Relay):
# Computer Config → Windows Settings → Security Settings → Local Policies → Security Options:
Microsoft network server: Digitally sign communications (always): Enabled
Microsoft network client: Digitally sign communications (always): Enabled
NTLM einschränken (schrittweise!):
# GPO: Network Security → LAN Manager authentication level:
# Level 5: Send NTLMv2 response only. Refuse LM & NTLM
# (Breaking Change! Erst in Lab testen!)
# NTLM-Audit (vor Einschränkung):
Computer Config → Security Settings → Local Policies → Security Options:
Network security: Restrict NTLM: Audit NTLM authentication in this domain: Enable all
NetBIOS und LLMNR deaktivieren:
# LLMNR Poisoning-Angriff verhindern (Responder!):
# Computer Config → Administrative Templates → Network → DNS Client:
Turn off multicast name resolution: Enabled
# NetBIOS:
# Netzwerkadapter → TCP/IP Properties → Advanced → WINS:
Disable NetBIOS over TCP/IP
# Via PowerShell (alle Adapter):
$adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled }
foreach ($adapter in $adapters) {
$adapter.SetTcpipNetbios(2) # 2 = Disable
}
PowerShell-Härtung
PowerShell-Sicherheitseinstellungen:
Execution Policy (schwacher Schutz, aber Grundschutz):
# GPO: Computer Config → Administrative Templates → Windows Components →
# Windows PowerShell:
Turn on Script Execution: Enabled
Execution Policy: Allow only signed scripts # AllSigned
Script Block Logging:
# Loggt ALLE PowerShell-Befehle als Event 4104!
# GPO:
Turn on PowerShell Script Block Logging: Enabled
Log script block invocation start / stop events: Enabled
# Event-ID 4104 in Windows Event Log:
# Event Log: Microsoft-Windows-PowerShell/Operational
# Inhalt: vollständiger Script-Text!
Constrained Language Mode (WDAC aktiviert automatisch):
# Mit WDAC aktiv → PS automatisch in CLM
# Oder manuell für Tests:
$ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"
# CLM blockiert: Add-Type, [System.Reflection.Assembly], COM-Objekte
# Überprüfen:
$ExecutionContext.SessionState.LanguageMode
# → "ConstrainedLanguage" (gehärtet) oder "FullLanguage"
PowerShell v2 deaktivieren (umgeht alle Schutzmaßnahmen!):
# PS v2 kennt kein AMSI, kein Script Block Logging!
# Deaktivieren:
Disable-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2Root
# Überprüfen:
powershell -version 2 -command "echo test"
# → "Version 2 not supported" wenn korrekt deaktiviert
BitLocker und Geräte-Verschlüsselung
BitLocker für alle Endpoints:
GPO-Konfiguration:
Computer Config → Administrative Templates → Windows Components → BitLocker:
# TPM + PIN (stärker als TPM allein):
Require additional authentication at startup: Enabled
Allow BitLocker without a compatible TPM: Disabled
Configure TPM startup: Require TPM
Configure TPM startup PIN: Require startup PIN with TPM
# Algorithmus: AES-256-XTS (Windows 10+):
Choose drive encryption method and cipher strength:
For operating system drives: XTS-AES-256-bit
# Recovery-Key in AD speichern:
Choose how BitLocker-protected drives can be recovered: Enabled
Save BitLocker recovery information to AD DS: Enabled
Do not enable BitLocker until recovery info is stored in AD DS: Enabled
PowerShell-Deployment:
# BitLocker aktivieren (mit TPM + PIN):
$securePin = Read-Host "Enter BitLocker PIN" -AsSecureString
Enable-BitLocker -MountPoint "C:" `
-EncryptionMethod XtsAes256 `
-TpmAndPinProtector `
-Pin $securePin
# Recovery-Key in AD speichern:
Backup-BitLockerKeyProtector -MountPoint "C:" `
-KeyProtectorId (Get-BitLockerVolume -MountPoint "C:").KeyProtector[0].KeyProtectorId
# Status aller BitLocker-Volumes:
Get-BitLockerVolume | Select-Object MountPoint, EncryptionMethod,
ProtectionStatus, EncryptionPercentage
Intune-Deployment:
# Endpoint Security → Disk Encryption → Create Policy:
Platform: Windows 10 and later
Profile: BitLocker
BitLocker base settings:
Full disk encryption: Yes
BitLocker system drive policy: Configure
Startup authentication required: Yes
Compatible TPM startup: Required
Compatible TPM startup PIN: Blocked (kein PIN = einfacheres Deployment)
Recovery key storage: Azure AD Nächster Schritt
Unsere zertifizierten Sicherheitsexperten beraten Sie zu den Themen aus diesem Artikel — unverbindlich und kostenlos.
Kostenlos · 30 Minuten · Unverbindlich
