Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen

Windows Server Härtung: CIS Benchmark, Microsoft Security Baseline und Praxis-Guide

Systematische Härtung von Windows Server 2019/2022 nach CIS Benchmark Level 1/2 und Microsoft Security Baseline: Dienste deaktivieren, SMB v1 abschalten, NTLM einschränken, LAPS v2 für lokale Administrator-Passwörter, PowerShell-Härtung, Windows Firewall, Audit-Policies (auditpol), Protected Users Security Group, Credential Guard, AppLocker und TLS 1.3 erzwingen. Mit priorisierten PowerShell-Skripten und Compliance-Prüfung.

Inhaltsverzeichnis (12 Abschnitte)

Windows Server ist das am häufigsten angegriffene Betriebssystem in Unternehmensumgebungen. Standardinstallationen enthalten zahlreiche unsichere Standardkonfigurationen, die Angreifern laterale Bewegung und Privilege Escalation erleichtern. Ungepatchte und schlecht konfigurierte Windows-Server sind die häufigste Ursache für laterale Bewegungen in Ransomware-Kampagnen. Dieser Guide führt durch die systematische Härtung nach CIS Benchmark und Microsoft Security Baseline.

Grundprinzipien und Härtungs-Prioritäten

Defense in Depth für Windows Server:

  1. Minimalprinzip: nur nötige Dienste, nötige Software
  2. Least Privilege: alle Accounts mit minimalen Rechten
  3. Audit: alle kritischen Ereignisse protokollieren
  4. Segmentierung: Server in eigene VLANs
  5. Patch: zeitnah einspielen
  6. Überwachung: EDR + SIEM

CIS Benchmark Levels:

  • Level 1: Minimale Einschränkung, für die meisten Umgebungen
  • Level 2: Höhere Sicherheit, kann Kompatibilität einschränken
  • STIG: US-Regierung, sehr restriktiv
Windows Server Härtungs-Prioritäten:

Kritisch (sofort umsetzen):
  □ Windows Updates aktuell (kritische Patches innerhalb 48h)
  □ Lokaler Administrator deaktiviert oder LAPS aktiviert
  □ SMB v1 deaktiviert (EternalBlue/WannaCry!)
  □ NTLM-Authentifizierung einschränken (Pass-the-Hash)
  □ Nicht benötigte Dienste und Rollen deinstallieren
  □ Windows Defender aktiviert und aktuell
  □ Passwort-Richtlinien (14+ Zeichen, Komplexität)

Hoch (innerhalb einer Woche):
  □ Windows Firewall mit Host-Based-Rules
  □ Audit-Logging vollständig konfigurieren
  □ RDP-Härtung (NLA, TLS, Port)
  □ PowerShell Logging aktivieren
  □ Credential Guard aktivieren (Hyper-V erforderlich)
  □ AppLocker / WDAC (Application Allowlisting)

Mittel (innerhalb eines Monats):
  □ CIS Benchmark vollständig umsetzen
  □ Microsoft Security Compliance Toolkit GPOs
  □ Protected Users Security Group
  □ TLS 1.3 erzwingen, ältere Versionen deaktivieren
  □ SMB Signing erzwingen

Schritt 1: Windows Security Baseline

# Microsoft Security Baseline herunterladen und anwenden
# https://www.microsoft.com/en-us/download/details.aspx?id=55319

# Baseline importieren (LGPO.exe erforderlich)
Import-Module PolicyFileEditor

# Lokale Sicherheitsrichtlinien prüfen
secedit /export /cfg C:\sec-policy.cfg /areas SECURITYPOLICY
notepad C:\sec-policy.cfg

# Wichtige Einstellungen in sec-policy.cfg:
# MinimumPasswordLength = 14
# PasswordComplexity = 1
# MaximumPasswordAge = 90
# LockoutBadCount = 5
# LockoutDuration = 30
# LSAAnonymousNameLookup = 0

Schritt 2: Dienste und Rollen deaktivieren (Minimalprinzip)

# Nicht benötigte Features deinstallieren:
Remove-WindowsFeature Telnet-Client        # Telnet: immer entfernen!
Remove-WindowsFeature TFTP-Client
Remove-WindowsFeature SNMP-Service         # SNMP v1/v2 unsicher
Remove-WindowsFeature Windows-Search
Remove-WindowsFeature Fax
Remove-WindowsFeature XPS-Viewer
Remove-WindowsFeature SMB1Protocol         # SMB v1 IMMER entfernen!

# Gefährliche/unnötige Dienste deaktivieren
$servicesToDisable = @(
    "Browser",          # Computer Browser (SMB-Enumeration)
    "SSDPSRV",          # SSDP Discovery (UPnP-Schwachstellen)
    "upnphost",         # UPnP Device Host
    "RemoteRegistry",   # Remote Registry (KEIN Remote-Registry-Zugriff!)
    "Spooler",          # Print Spooler (PrintNightmare! - falls kein Drucker)
    "Fax",              # Fax-Dienst
    "XblAuthManager",   # Xbox Live Auth
    "WMPNetworkSvc",    # Windows Media Player Network
    "TapiSrv",          # Telephony (außer wenn VoIP!)
    "WinRM"             # WinRM - nur wenn PowerShell-Remoting nicht nötig
)

foreach ($service in $servicesToDisable) {
    if (Get-Service -Name $service -ErrorAction SilentlyContinue) {
        Set-Service -Name $service -StartupType Disabled
        Stop-Service -Name $service -Force -ErrorAction SilentlyContinue
        Write-Host "Disabled: $service"
    }
}

# Print Spooler auf DCs IMMER deaktivieren (PrintNightmare)
# CVE-2021-1675, CVE-2021-34527 - alle Windows-Versionen betroffen!

Schritt 3: SMB und Legacy-Protokolle

# SMBv1 deaktivieren (EternalBlue nutzt SMBv1!)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol" -NoRestart

# SMBv1 Client deaktivieren
sc.exe config mrxsmb10 start= disabled

# SMB Signing erzwingen (verhindert NTLM-Relay-Angriffe!)
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force

# SMB-Verschlüsselung aktivieren (SMBv3)
Set-SmbServerConfiguration -EncryptData $true -Force

# LAN Manager / NTLM Einschränkungen
# Network Security: LAN Manager authentication level
# = "Send NTLMv2 response only; refuse LM & NTLM" (Wert 5)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" `
    -Name "LmCompatibilityLevel" -Value 5 -Type DWord

# NTLM-Audit aktivieren (bevor Einschränkung!):
Set-ItemProperty `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" `
    -Name "AuditNtlmInDomain" `
    -Value 7  # Alle NTLM-Authentifizierungen loggen

# NTLM-Traffic in EventLog 8004:
Get-WinEvent -LogName "Microsoft-Windows-NTLM/Operational" |
    Where-Object {$_.Id -eq 8004} |
    Select-Object TimeCreated, Message

Schritt 4: PowerShell-Härtung

# PowerShell Constrained Language Mode
# Verhindert: System.Reflection, Add-Type, .NET-Interop
[System.Environment]::SetEnvironmentVariable("__PSLockdownPolicy", "4", "Machine")

# PowerShell Script Block Logging aktivieren (Audit)
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
New-Item -Path $regPath -Force
Set-ItemProperty -Path $regPath -Name "EnableScriptBlockLogging" -Value 1

# Module Logging
$regPath2 = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging"
New-Item -Path $regPath2 -Force
Set-ItemProperty -Path $regPath2 -Name "EnableModuleLogging" -Value 1
Set-ItemProperty -Path $regPath2 -Name "ModuleNames" -Value @("*") -Type MultiString

# PowerShell v2 deaktivieren (umgeht Logging!)
Disable-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2Root -NoRestart

# Transcription aktivieren (alle PowerShell-Ausgaben loggen)
$regPath3 = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription"
New-Item -Path $regPath3 -Force
Set-ItemProperty -Path $regPath3 -Name "EnableTranscripting" -Value 1
Set-ItemProperty -Path $regPath3 -Name "OutputDirectory" -Value "C:\PowerShellLogs"

Schritt 5: Audit-Richtlinien (SIEM-Grundlage)

# Alle relevanten Kategorien aktivieren
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
auditpol /set /subcategory:"Account Lockout" /success:enable /failure:enable
auditpol /set /subcategory:"Logoff" /success:enable
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable
auditpol /set /subcategory:"Process Termination" /success:enable
auditpol /set /subcategory:"Security Group Management" /success:enable /failure:enable
auditpol /set /subcategory:"User Account Management" /success:enable /failure:enable
auditpol /set /subcategory:"Sensitive Privilege Use" /success:enable /failure:enable
auditpol /set /subcategory:"Object Access" /success:enable /failure:enable
auditpol /set /subcategory:"Special Logon" /success:enable
auditpol /set /subcategory:"Kerberos Authentication Service" /success:enable /failure:enable
auditpol /set /subcategory:"Credential Validation" /success:enable /failure:enable
Wichtige Event-IDs für SIEM:
  4624: Erfolgreicher Logon (Typ 3=Netzwerk, Typ 10=Remote, Typ 4=Batch)
  4625: Fehlgeschlagener Logon (Brute Force!)
  4648: Logon mit expliziten Credentials (Pass-the-Hash Indikator)
  4672: Admin-Anmeldung (Special Privileges)
  4688: Prozess erstellt (Command Execution Logging)
  4698: Scheduled Task erstellt (Persistence!)
  4720: Benutzerkonto erstellt (Backdoor User!)
  4728/4732: Member zu Gruppe hinzugefügt (Admin-Gruppen!)
  4768: Kerberos TGT angefordert
  4769: Kerberos Service Ticket angefordert
  4771: Kerberos-Vorauthentifizierung fehlgeschlagen (AS-REP Roasting)
  4776: NTLM-Authentifizierung (Pass-the-Hash Detection)
  7045: Neuer Dienst installiert (Malware!)
  4103/4104: PowerShell-Module/Script Block Logging

Schritt 6: Windows Firewall konfigurieren

# Windows Defender Firewall aktivieren (alle Profile)
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

# Default Policy: DENY ALL → explizit ALLOW
Set-NetFirewallProfile -Profile Domain,Public,Private `
    -DefaultInboundAction Block -DefaultOutboundAction Allow `
    -NotifyOnListen True -AllowLocalFirewallRules False `
    -AllowLocalIPsecRules False

# Nötige eingehende Regeln (Beispiel Mitglied-Server)
New-NetFirewallRule -DisplayName "RDP (TCP)" -Direction Inbound `
    -Protocol TCP -LocalPort 3389 -Action Allow -RemoteAddress "10.10.10.0/24"
    # Nur aus Admin-VLAN!

New-NetFirewallRule -DisplayName "WinRM HTTPS (TCP)" -Direction Inbound `
    -Protocol TCP -LocalPort 5986 -Action Allow -RemoteAddress "10.10.10.0/24"
    # Nur aus Management-VLAN!

# Alle unbenutzten Dienste blockieren
New-NetFirewallRule -DisplayName "Block SMB Inbound" -Direction Inbound `
    -Protocol TCP -LocalPort 445 -Action Block

# Ausgehende Verbindungen einschränken (Egress Filtering)
New-NetFirewallRule -DisplayName "Block Telnet" -Direction Outbound `
    -Protocol TCP -RemotePort 23 -Action Block

New-NetFirewallRule -DisplayName "Block Tor Ports" -Direction Outbound `
    -Protocol TCP -RemotePort 9050,9001 -Action Block

Schritt 7: Protected Users und Credential Guard

# Protected Users Gruppe (verhindert NTLM, Delegation, etc.)
# Für alle privilegierten Konten empfohlen!
Add-ADGroupMember -Identity "Protected Users" -Members "DomainAdmin1","DomainAdmin2"

# Protected Users verhindert automatisch:
#  → NTLM-Authentifizierung
#  → DES oder RC4 Kerberos-Encryption
#  → Unconstrained Delegation
#  → Credential Caching (kein NTLM-Hash auf Disk)
#  → TGT nur 4h gültig (statt 10h)
# Achtung: Service Accounts die NTLM brauchen NICHT in Protected Users!

# Credential Guard aktivieren (Hyper-V Isolation für LSASS)
# Verhindert LSASS-Dumping / Mimikatz
# Voraussetzung: UEFI, Secure Boot, Hyper-V

$path = "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard"
Set-ItemProperty -Path $path -Name "EnableVirtualizationBasedSecurity" -Value 1
Set-ItemProperty -Path $path -Name "RequirePlatformSecurityFeatures" -Value 1
Set-ItemProperty -Path $path -Name "LsaCfgFlags" -Value 1  # Credential Guard

# Credential Guard Status prüfen
$devGuard = Get-CimInstance -ClassName Win32_DeviceGuard `
    -Namespace root\Microsoft\Windows\DeviceGuard
$devGuard.SecurityServicesRunning
# 1 = Credential Guard aktiv

Schritt 8: LAPS v2 (Local Administrator Password Solution)

# LAPS v2 (in Windows Server 2019/2022 integriert)
# Problem ohne LAPS: alle Maschinen im Domain: gleicher lokaler Admin + gleiches Passwort!
# Pass-the-Hash: ein System kompromittiert → alle anderen auch!

# LAPS-Schema für AD erweitern
Update-LapsADSchema

# LAPS-Berechtigungen setzen (IT-Admins dürfen Passwort lesen)
Set-LapsADComputerSelfPermission -Identity "OU=Servers,DC=firma,DC=de"
Set-LapsADReadPasswordPermission -Identity "OU=Servers,DC=firma,DC=de" `
    -AllowedPrincipals "FIRMA\IT-Admins"

# GPO: LAPS aktivieren
# Computer Config → Admin Templates → System → LAPS
# "Configure password backup directory" = Active Directory
# "Password complexity requirements" = Large letters + Small letters + Numbers + Special
# "Password length" = 16 (minimum!)
# "Password age (days)" = 30

# LAPS-Passwort abrufen (im Notfall)
Get-LapsADPassword -Identity "SERVER01" -AsPlainText

# Rotation erzwingen
Reset-LapsPassword -Identity "SERVER01"

# Lokalen Administrator umbenennen (verschleiert Standard-Kontonamen):
Rename-LocalUser -Name "Administrator" -NewName "adm-srv-01"
# Deaktivieren wenn LAPS aktiv:
Disable-LocalUser -Name "Administrator"

TLS und Kryptographie

# Unsichere Protokolle deaktivieren:
# SSL 2.0 deaktivieren:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
Set-ItemProperty -Path "HKLM:\...\SSL 2.0\Server" -Name "Enabled" -Value 0

# SSL 3.0 deaktivieren:
New-Item -Path "HKLM:\...\SSL 3.0\Server"
Set-ItemProperty -Path "HKLM:\...\SSL 3.0\Server" -Name "Enabled" -Value 0

# TLS 1.0 deaktivieren (Vorsicht: ältere Anwendungen!):
New-Item -Path "HKLM:\...\TLS 1.0\Server"
Set-ItemProperty -Path "HKLM:\...\TLS 1.0\Server" -Name "Enabled" -Value 0

# TLS 1.1 deaktivieren:
New-Item -Path "HKLM:\...\TLS 1.1\Server"
Set-ItemProperty -Path "HKLM:\...\TLS 1.1\Server" -Name "Enabled" -Value 0

# TLS 1.2 und 1.3: ENABLED
New-Item -Path "HKLM:\...\TLS 1.2\Server"
Set-ItemProperty -Path "HKLM:\...\TLS 1.2\Server" -Name "Enabled" -Value 1
New-Item -Path "HKLM:\...\TLS 1.3\Server"
Set-ItemProperty -Path "HKLM:\...\TLS 1.3\Server" -Name "Enabled" -Value 1

# Tool: IISCrypto (GUI-Alternative, einfacher):
# nartac.com/Products/IISCrypto → "Best Practices" Template

# RC4, DES, 3DES: explizit DEAKTIVIEREN
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_RC4_128_SHA"
Disable-TlsCipherSuite -Name "TLS_RSA_WITH_3DES_EDE_CBC_SHA"

CIS Benchmark Compliance prüfen

# Manuelle Kontrollen (wichtigste CIS L1 Checks):
$checks = @(
    @{Name="SMBv1 disabled"; Test={
        -not (Get-SmbServerConfiguration).EnableSMB1Protocol
    }},
    @{Name="NTLMv2 only (LAN Man Level = 5)"; Test={
        (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa").LmCompatibilityLevel -eq 5
    }},
    @{Name="Print Spooler disabled"; Test={
        (Get-Service Spooler).Status -eq "Stopped"
    }},
    @{Name="Guest Account disabled"; Test={
        (Get-LocalUser -Name "Guest").Enabled -eq $false
    }},
    @{Name="Remote Registry disabled"; Test={
        (Get-Service RemoteRegistry).StartType -eq "Disabled"
    }}
)

foreach ($check in $checks) {
    $result = & $check.Test
    $status = if ($result) {"PASS"} else {"FAIL"}
    Write-Host "$status | $($check.Name)"
}

Typische Härtungs-Reihenfolge

Priorität 1 - Sofort (verhindert häufigste Angriffe):
  ✓ SMBv1 deaktivieren
  ✓ Print Spooler auf DCs deaktivieren
  ✓ NTLM Level auf 5 setzen
  ✓ Local Admin-Passwort (LAPS) aktivieren
  ✓ Audit-Richtlinien aktivieren

Priorität 2 - Innerhalb 1 Woche:
  ✓ Credential Guard aktivieren
  ✓ Protected Users für Admins
  ✓ PowerShell-Logging aktivieren
  ✓ Unnötige Dienste deaktivieren
  ✓ Windows Firewall konfigurieren

Priorität 3 - Innerhalb 1 Monat:
  ✓ CIS Benchmark vollständig umsetzen
  ✓ AppLocker / WDAC konfigurieren
  ✓ JEA (Just Enough Administration) für Remote-Management
  ✓ Privileged Access Workstations (PAW) einführen
  ✓ SIEM-Integration für kritische Events
  ✓ TLS 1.0/1.1 deaktivieren
  ✓ SMB Signing erzwingen

Quellen & Referenzen

  1. [1] CIS Microsoft Windows Server 2022 Benchmark - CIS
  2. [2] BSI SiSyPHuS: Sicherheitsstudie zum Windows 10 Betriebssystem - BSI
  3. [3] Microsoft Security Baseline - Microsoft

Fragen zu diesem Thema?

Unsere Experten beraten Sie kostenlos und unverbindlich.

Erstberatung

Über den Autor

Chris Wojzechowski
Chris Wojzechowski

Geschäftsführender Gesellschafter

Geschäftsführender Gesellschafter der AWARE7 GmbH mit langjähriger Expertise in Informationssicherheit, Penetrationstesting und IT-Risikomanagement. Absolvent des Masterstudiengangs Internet-Sicherheit an der Westfälischen Hochschule (if(is), Prof. Norbert Pohlmann). Bestseller-Autor im Wiley-VCH Verlag und Lehrbeauftragter der ASW-Akademie. Einschätzungen zu Cybersecurity und digitaler Souveränität erschienen u.a. in Welt am Sonntag, WDR, Deutschlandfunk und Handelsblatt.

10 Publikationen
  • Einsatz von elektronischer Verschlüsselung - Hemmnisse für die Wirtschaft (2018)
  • Kompass IT-Verschlüsselung - Orientierungshilfen für KMU (2018)
  • IT Security Day 2025 - Live Hacking: KI in der Cybersicherheit (2025)
  • Live Hacking - Credential Stuffing: Finanzrisiken jenseits Ransomware (2025)
  • Keynote: Live Hacking Show - Ein Blick in die Welt der Cyberkriminalität (2025)
  • Analyse von Angriffsflächen bei Shared-Hosting-Anbietern (2024)
  • Gänsehaut garantiert: Die schaurigsten Funde aus dem Leben eines Pentesters (2022)
  • IT Security Zertifizierungen — CISSP, T.I.S.P. & Co (Live-Webinar) (2023)
  • Sicherheitsforum Online-Banking — Live Hacking (2021)
  • Nipster im Netz und das Ende der Kreidezeit (2017)
IT-Grundschutz-Praktiker (TÜV) IT Risk Manager (DGI) § 8a BSIG Prüfverfahrenskompetenz Ausbilderprüfung (IHK)
Dieser Artikel wurde zuletzt am 08.03.2026 bearbeitet. Verantwortlich: Chris Wojzechowski, Geschäftsführender Gesellschafter bei AWARE7 GmbH. Lizenz: CC BY 4.0 — freie Nutzung mit Namensnennung: „AWARE7 GmbH, https://a7.de

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung