RDP-Härtung: Remote Desktop Protocol für Windows Server sicher konfigurieren

Der Remote Desktop Protocol (RDP) ist eines der am häufigsten angegriffenen Protokolle im Windows-Ökosystem. Offene RDP-Ports (3389) im Internet ziehen automatisierte Brute-Force-Angriffe, Credential-Stuffing und Exploits wie BlueKeep (CVE-2019-0708) oder DejaBlue an. Eine konsequente Härtung ist für jede Windows-Server-Umgebung Pflicht – egal ob On-Premises, in der Cloud oder im Homelab.

1. Netzwerkebene: RDP nicht direkt ins Internet exponieren

Die wirksamste Maßnahme ist, Port 3389 gar nicht erst öffentlich erreichbar zu machen:

  • VPN oder RDP-Gateway: Clients verbinden sich per VPN (WireGuard, OpenVPN, IPsec) oder über einen RD Gateway Server (HTTPS auf 443) mit Vorauthentifizierung.
  • Firewall-Regeln einschränken: Auf dem Server erlaubt die Windows-Firewall eingehenden RDP-Verkehr nur aus vertrauenswürdigen Netzen (z. B. Management-VLAN, VPN-Subnetz). Beispiel PowerShell:
New-NetFirewallRule -DisplayName "RDP aus Management-Netz" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 10.10.10.0/24 -Action Allow -Profile Domain,Private
  • Just-in-Time-Zugriff (Azure/AWS): In Cloud-Umgebungen JIT-VM-Zugriff aktivieren – Port 3389 öffnet sich nur auf Anfrage für begrenzte Zeit.

2. Authentifizierung: Network Level Authentication (NLA) erzwingen

NLA erfordert Authentifizierung vor der eigentlichen RDP-Sitzung. Das schützt vor unauthentifizierten Exploits (z. B. BlueKeep) und reduziert Ressourcenverbrauch durch abgebrochene Verbindungsversuche.

  • Per GPO: Computerkonfiguration → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktopsitzungs-Host → Sicherheit → Benutzerauthentifizierung für Remoteverbindungen mithilfe der Netzwerkebene-Authentifizierung verlangen → Aktiviert.
  • Per PowerShell (lokal):
Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -Name 'UserAuthentication' -Value 1 -Type DWord
  • Prüfung: Get-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -Name 'UserAuthentication' muss 1 zurückgeben.

3. Verschlüsselung: Hohe Verschlüsselungsstufe festlegen

RDP unterstützt vier Verschlüsselungsstufen. Für produktive Umgebungen ist Hohe Ebene (FIPS 140) Mindeststandard.

  • Per GPO: Computerkonfiguration → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktopsitzungs-Host → Sicherheit → Clientverbindungs-Verschlüsselungsstufe festlegen → Aktiviert → Hohe Ebene.
  • Registry: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpMinEncryptionLevel = 3 (3 = High).
  • Hinweis: Ab Windows Server 2012 R2 / Windows 8.1 ist NLA mit CredSSP die einzige Methode, die TLS 1.2 nutzt. Ältere Stufen (Low, Client Compatible) verwenden RC4 und sind unsicher.

4. CredSSP-Oracle-Schutz (CVE-2018-0886) aktivieren

Die CredSSP-Schwachstelle erlaubt Man-in-the-Middle-Angriffe, wenn der Client auf „Vulnerable“ steht. Der Fix erfordert auf Client und Server den Patch (März 2018 oder neuer) und die Einstellung „Force updated clients“ oder „Mitigated“.

  • Per GPO (Server): Computerkonfiguration → Administrative Vorlagen → System → Anmeldeinformationen delegieren → Oracle-Schutz für Remoteverbindungen → Aktiviert → Force updated clients (empfohlen) oder Mitigated.
  • Registry (Server): HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParametersAllowEncryptionOracle = 1 (1 = Force updated clients, 2 = Mitigated, 0 = Vulnerable – nicht verwenden).
  • Client-Seite: Derselbe GPO-Schlüssel unter Computerkonfiguration → Administrative Vorlagen → System → Anmeldeinformationen delegieren muss auf den Clients ebenfalls gesetzt sein, sonst schlagen Verbindungen fehl.

5. Konto-Schutz: Sperrrichtlinien und starke Kennwörter

  • Kontosperrung: GPO Computerkonfiguration → Windows-Einstellungen → Sicherheitseinstellungen → Kontoeinstellungen → Konto-Sperrrichtlinie: Sperrdauer 15 Min, Sperrschwellwert 5 ungültige Anmeldungen, Zurücksetzen nach 15 Min.
  • Kennwortrichtlinie: Mindestlänge 14 Zeichen, Komplexität aktiviert, Kennworthistorie 24, max. Kennwortalter 90 Tage.
  • Lokale Administratoren: Das lokale Administrator-Konto umbenennen, deaktivieren oder per GPO Computerkonfiguration → Einstellungen → Systemsteuerung → Lokale Benutzer und Gruppen ein zufälliges, langes Kennwort setzen (LAPS nutzen).

6. RDP-Einschränkungen per GPO: Geräteumleitung, Drucker, Zwischenablage

Nicht benötigte Funktionen reduzieren die Angriffsfläche und verhindern Datenabfluss:

  • Computerkonfiguration → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktopsitzungs-Host → Geräte- und Ressourcenumleitung:
    • Laufwerke nicht umleiten → Aktiviert
    • Drucker nicht umleiten → Aktiviert (wenn nicht benötigt)
    • Zwischenablage nicht umleiten → Aktiviert (bei sensiblen Umgebungen)
    • COM-Ports nicht umleiten → Aktiviert
    • Unterstützung für Plug-and-Play-Geräte nicht zulassen → Aktiviert

7. Sitzungssicherheit: Timeouts und Begrenzungen

  • Leerlauf-Timeout: GPO Computerkonfiguration → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktopsitzungs-Host → Sitzungszeitlimits → Zeitlimit für aktive, aber inaktive Remotedesktopsitzungen festlegen → z. B. 15 Minuten (900000 ms).
  • Getrennte Sitzungen beenden: Zeitlimit für getrennte Sitzungen festlegen → 1 Minute (60000 ms), damit verwaiste Sessions Ressourcen freigeben.
  • Maximale Sitzungen pro Benutzer: Remotedesktopsitzungs-Host → Verbindungen → Remotedesktopdienste beschränken, sodass Benutzer auf eine einzelne Sitzung beschränkt sind → Aktiviert.

8. Zertifikatbasierte Authentifizierung (Optional, für Hochsicherheit)

Statt Kennwörter können Smartcards oder Zertifikate genutzt werden:

  • RD Gateway mit Clientzertifikat-Authentifizierung (AD CS oder öffentliches PKI).
  • Remotedesktop-Verbindungsbroker für Hochverfügbarkeit mit Zertifikaten.
  • GPO: Computerkonfiguration → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktopverbindungs-Client → Serverauthentifizierung erfordern → Aktiviert.

9. Überwachung und Logging

  • Erfolgs- und Fehlschlag-Auditing: GPO Computerkonfiguration → Windows-Einstellungen → Sicherheitseinstellungen → Erweiterte Auditrichtlinien → Anmeldung/Abmeldung → Anmelden überwachen → Erfolg + Fehler.
  • Event-IDs im Blick behalten: 4624 (Erfolg), 4625 (Fehlschlag, Typ 10 = RDP), 4771 (Kerberos-Vorauthentifizierung fehlgeschlagen), 1149 (RDP-Client-Verbindung).
  • Windows Defender ATP / Defender for Endpoint: RDP-bezogene Alerts (Brute-Force, lateral movement) aktivieren.

10. Härtung per PowerShell-Skript (Zusammenfassung)

Das folgende Skript setzt die wichtigsten Registry-Werte für einen einzelnen Server (lokal als Administrator ausführen):

# RDP-Härtung – lokale Registry (ergänzt GPO, nicht ersetzen)
$base = 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp'
Set-ItemProperty -Path $base -Name 'UserAuthentication' -Value 1 -Type DWord        # NLA erzwingen
Set-ItemProperty -Path $base -Name 'MinEncryptionLevel' -Value 3 -Type DWord        # High Encryption
Set-ItemProperty -Path $base -Name 'SecurityLayer' -Value 2 -Type DWord             # 2 = SSL (TLS 1.2)
Set-ItemProperty -Path $base -Name 'fDenyTSConnections' -Value 0 -Type DWord         # RDP aktiv (1 = aus)

# CredSSP Oracle Protection (Server)
$credssp = 'HKLM:SoftwareMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters'
if (-not (Test-Path $credssp)) { New-Item -Path $credssp -Force | Out-Null }
Set-ItemProperty -Path $credssp -Name 'AllowEncryptionOracle' -Value 1 -Type DWord  # Force updated clients

# Firewall: RDP nur aus Management-Subnetz (Beispiel 10.10.10.0/24 anpassen!)
New-NetFirewallRule -DisplayName 'RDP aus Management-Netz' -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress '10.10.10.0/24' -Action Allow -Profile Domain,Private -ErrorAction SilentlyContinue

Write-Host 'RDP-Härtung angewendet. GPO-Einstellungen für Domain-Umgebungen separat konfigurieren.'

Quellen

Hinweis: Dieser Beitrag wurde mit Unterstützung künstlicher Intelligenz (KI) erstellt.

Tags

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert