Absicherung von Remotedesktopzugängen

Allgemeine Hinweise
Remotedesktop ist für viele Nutzer und Administratoren unverzichtbar für die tägliche Arbeit geworden, da es den weltweiten Zugriff auf den Windows-Desktop einschließlich aller gestarteten Anwendungen ermöglicht.
Um so wichtiger ist es, den Zugriff auf den vom Remotedesktopdienst benutzten TCP-Port (Standard 3389) abzusichern.
Dies können Sie mit den Bordmitteln des Betriebssystems (Windows Firewall, Benutzerrechte, RDP-ACLs, IPSec-Schutz) und/oder Zusatzsoftware (VPN, Remotedesktop-Gateway) erreichen.
Achtung! Die Voraussetzung für ein sicheres System ist die Installation der aktuellen Windows-Sicherheitsupdates per Windows Update!
Welche Methode der Absicherung ist für mich geeignet?
Für alle Nutzer geeignet:
- Einschränkung der Reichweite des Remotedesktop-TCP-Ports (dringend empfohlen)
- Härten des RDP-Protokolls (dringend empfohlen)
- Unterbinden administrativer Anmeldungen per Remotedesktop mittels RDP-ACLs
Für Administratoren geeignet:
- Anlegen eines RDP-Ports für administrative Zugänge
- Deaktivieren der Switch-User-Funktionalitäten (nur notwendig auf gemeinschaftlich genutzten Systemen, wie z.B. Pool-PCs oder Anwendungsservern)
- Nutzung von IPSec für Verschlüsselung und Integrität
Auswirkungen der Schutzmaßnahmen auf die verschiedenen RDP-Angriffsvektoren
Die nachfolgende Tabelle stellt in Kurzform die Wirksamkeit der einzelnen Schutzmaßnahmen in Bezug auf das Unterbinden der verschiedenen RDP-Angriffsvektoren dar.
Einschränkung der Reichweite des Remotedesktop-TCP-Ports | unterbunden | unterbunden | unterbunden | unterbunden |
Härten des RDP-Protokolls | möglich | möglich | möglich | unterbunden |
Unterbinden administrativer Anmeldungen per Remotedesktop | möglich | möglich | unterbunden | möglich |
Anlegen eines RDP-Ports für administrative Zugänge (mit Einschränkung der Reichweite auf vertrauenswürdige IP-Adressen) | unterbunden | unterbunden | unterbunden | unterbunden |
Nutzung von IPSec für Verschlüsselung und Integrität | unterbunden | unterbunden | unterbunden | unterbunden |
Nutzung von VPN-Servern | unterbunden | möglich, nach erfolgter VPN-Anmeldung | möglich, nach erfolgter VPN-Anmeldung | möglich, nach erfolgter VPN-Anmeldung |
Nutzung von Remotedesktop-Gatewayservern | unterbunden | unterbunden | unterbunden | unterbunden |
Absicherung mit Bordmitteln
Einschränkung der Reichweite des Remotedesktop-TCP-Ports
Die einfachste Art der Absicherung von Remotedesktopzugängen ist die Einschränkung der Reichweite des Remotedesktop-TCP-Ports auf vertrauenswürdige IP-Adressen per Windows Firewall, entweder per grafischer Oberfläche (GUI) oder per Kommandozeile. Dies ist ab Windows XP möglich.
Die Batchdatei "Restrict_RDP.bat", beschränkt den Zugriff auf den Remotedesktop-TCP-Port 3389 auf das Subnetz 192.168.0.0/16. Die Batchdatei "Restrict_RDP.bat" ist für administrativer Nutzer ab Windows Vista/Windows Server 2008 nutzbar.
Laden Sie sich die Datei Restrict_RDP.bat herunter, passen Sie die Reichweite des Remotedesktop-RDP-Ports über die Variable RDIPs Ihrer Umgebung an und führen Sie die veränderte Batchdatei "Restrict_RDP.bat" aus.
Dazu gehen Sie folgt vor:
- Laden Sie sich die Datei Restrict_RDP.bat herunter, indem Sie auf folgenden Link klicken Restrict_RDP.bat und speichern Sie die Datei.
- Laden Sie die gespeicherte Datei "Restrict_RDP.bat" in einen Editor.
- Suchen Sie die Zeile
set RDIPs=192.168.0.0/16
- Tragen Sie kommagetrennt die IP-Adressen und/oder Subnetze in CIDR-Schreibweise (http://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing) ein, welche auf den Remotedesktop-TCP-Port zugreifen dürfen, z.B.:
set RDIPs=192.168.3.4/32,10.0.110.0/24
- Öffnen Sie eine Kommandozeile mit administrativen Rechten, indem Sie die rechte Maustaste auf den Shortcut "Eingabeaufforderung" unter "START -> Alle Programme -> Zubehör" drücken und anschließend den Befehl "Als Administrator ausführen" auswählen.
- Führen Sie die Datei Restrict_RDP.bat aus.
Falls es eventuell nicht sinnvoll ist, den Remotedesktop-TCP-Port auf vertrauenswürdige IP-Adressen einzuschränken, wie z.B. auf Arbeitsplatz-PCs oder zentralen Remotedesktopservern, dann sollten Sie nachstehende Möglichkeiten der Absicherung nutzen.
Härten des RDP-Protokolls
Führen Sie jeweils folgendes Kommando als Administrator aus. Die entsprechende Einstellung ist anschließend für jede neue RDP-Sitzung aktiviert.
Erzwingen der Verschlüsselung per TLS
- reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t reg_dword /d 0x2 /f
Es ist auch möglich diese Einstellungen per Gruppenrichtline vorzunehmen, s. dazu
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc781085(v=ws.10)
Erzwingen aktualisierter RDP-Clients für Sicherheitsproblem CVE-2018-0886 des CredSSP-Protokolls
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 0x0 /f
Es ist auch möglich diese Einstellungen per Gruppenrichtline vorzunehmen, s. dazu
https://support.microsoft.com/en-us/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018
Achtung! Linux-Clients müssen anschließend auf Remmina 1.4.3 oder höher umsteigen, s . dazu
https://www.itmz.uni-rostock.de/onlinedienste/anwendungsserver-des-itmz/downloads/
Alle Mac- und Windows-Clients sollten mit aktuellen RDP-Clients problemlos arbeiten können.
Um die Standardeineinstellungen wiederherzustellen, führen Sie folgende Kommandos an einer administrativen Kommandozeile aus:
- reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t reg_dword /d 0x1 /f
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 0x1 /f
Referenz:
Absichern der administrativen Remotedeskzugänge
Um sicherzustellen, dass trotz des Besitzes eines Kontos (z.B. Kenntnis von administrativem Nutzerkennzeichen und Passwort) keine Anmeldung per Remotedesktop erfolgen kann, gibt es folgende Möglichkeiten:
Unterbinden administrativer Anmeldungen per Remotedesktop mittels Nutzerrechten
Konfigurieren Sie das Nutzerrecht "Anmelden über Remotedesktopdienste verweigern" über Gruppenrichtlinien oder das Kommadozeilentool ntrigths.exe aus dem Windows Server 2003 Resource Kit (Download unter http://www.microsoft.com/en-us/download/details.aspx?id=17657)
Um allen lokalen Administratoren die Anmeldung per Remotedesktop zu verbieten, führen Sie folgendes Kommando in einer administrativen Kommandozeile aus:
ntrights.exe -u VORDEFINIERT\Administratoren +r SeDenyRemoteInteractiveLogonRight
Unterbinden administrativer Anmeldungen per Remotedesktop mittels RDP-ACLs
Folgende Kommandos setzen einen Deny-Zugriffseintrag (Deny ACE) für die Gruppe Administratoren auf die Standardremotedesktopverbindungen (RDP-Tcp) des Systems.
Führen Sie folgende Kommandos in einer administrativen Kommandozeile aus:
wmic.exe RDACCOUNT where "(TerminalName='RDP-Tcp') and AccountName='VORDEFINIERT\\Administratoren'" CALL ModifyPermissions 0,5
wmic.exe RDACCOUNT where "(TerminalName='Console') and AccountName='VORDEFINIERT\\Administratoren'" CALL ModifyPermissions 0,5
Die Standard-RDP-ACLs lassen durch folgende Kommandos an einer administrativen Kommandozeile wiederherstellen:
wmic.exe RDPermissions where "(TerminalName='RDP-Tcp')" call RestoreDefaults
wmic.exe RDPermissions where "(TerminalName='Console')" call RestoreDefaults
Mit folgendem Kommando lassen sich die Zugriffsrechte der RDP-Zugänge anzeigen:
wmic.exe RDPermissions get TerminalName,StringSecurityDescriptor
Referenz:
https://learn.microsoft.com/en-US/troubleshoot/windows-server/remote/add-user-services-rdp-permissions
Anlegen eines RDP-Ports für administrative Zugänge
Darüber hinaus kann es sinnvoll sein, einen zusätzlichen RDP-Port für Remotedesktopzugriffe zu öffnen, um über diesen Port administrative Zugänge zu ermöglichen. Die Reichweite dieses zusätzlichen TCP-Ports schränken Sie per Windows Firewall auf vertrauenswürdige IP-Adressen ein.
Führen Sie dazu folgende Kommandos in einer administrativen Kommandozeile aus:
reg.exe save "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" %TEMP%\RDP-Tcp.hiv /y
reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Adm" /f
reg.exe restore "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Adm" %TEMP%\RDP-Tcp.hiv
reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Adm" /v PortNumber /t REG_DWORD /d 3390 /f
REM ******************************************************************
REM Restart Remote Desktop Services or reboot system.
REM ******************************************************************
wmic.exe RDPermissions where "(TerminalName='RDP-Adm')" call RestoreDefaults
Anschließend ist es möglich, über den TCP-Port 3390 auf den Remotedesktopdienst zu zugreifen, wenn der TCP-Port 3390 zusätzlich im Windows Firewall freigegeben wurde.
Referenz:
Deaktivieren der Switch-User-Funktionalitäten
Damit ein kompromittiertes administratives Konto nicht weltweit per RDP-Zugang benutzt werden kann, ist es außerdem nötig, entweder alle Switch-User-Funktionalitäten von Windows für nicht-administrative Nutzer abzuschalten oder für administrative Nutzer zu unterbinden, indem das für ein Switch-User benötige Benutzerrecht "Allow log on locally" per Benutzerrecht "Deny log on locally" administrativen Konten verweigert wird. Dies betrifft das Kommandozeilentool runas.exe und die UAC-Switch-User-Funktionalitäten wie z.B. "Als Administrator ausführen".
Führen Sie dazu folgende Kommandos in einer administrativen Kommandozeile aus, um
a) runas.exe zu deaktivieren:
sc.exe config seclogon start= disabled
sc.exe stop seclogon
und
b) die UAC-Switch-User-Funktionalitäten für alle nicht-administrative Nutzer zu deaktivieren:
reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
/v ConsentPromptBehaviorUser /t REG_DWORD /d 0 /f
Nutzung von IPSec für Verschlüsselung und Integrität
Um den Zugriff auf Remotedesktop-TCP-Port nur vertrauenswürdigen Systemen unabhängig von der jeweiligen IP-Adresse des RDP-Clients zu erlauben, kann IPSec benutzt werden. Dazu wird mittels IPSec die anonyme Verbindungsaufnahme unterbunden und entweder ein Password (PSK - Preshared Key) oder Zertifikate überprüft.
Der preshared key-basierte IPSec-Schutz ist verglichen mit dem zertifikats-basierten IPSec-Schutz unsicherer, aber um ein Vielfaches sicherer als einen TCP-Port ohne IPSec-Schutz zu öffnen, da durch den IPSec-Schutz in jedem Fall die anonyme Verbindungsaufnahme unterbunden wird.
Vor allem TCP-Ports, welche internetweit geöffnet werden müssen, lassen sich per IPSec wirksam ohne den Einsatz von zusätzlichen Mitteln schützen.
Folgende UDP-Ports müssen weltweit im Firewall geöffnet werden, damit der IPSec-Schutz funktioniert:
IPSec-Schutz mit einem Preshared Key
Dazu muß jeweils auf dem Remotedesktopserver (z.B. Arbeitsplatz-PC, Anwendungsserver usw.) und dem zugreifenden System (z.B. PC zu Hause, Laptop unterwegs) IPSec konfiguriert werden, da sowohl auf dem Server als auch auf Client der preshared Key und die Verschlüsselungs- und Integritätsprotokolle aktiviert werden müssen, bevor eine IPSec-gesicherte Verbindung hergestellt werden kann.
Die Konfiguration kann per GUI oder Kommandozeile erfolgen.
Nachfolgend finden Sie zwei Beispielbatchdateien, welche Sie sich herunterladen, anpassen und anschließend für die IPSec-Konfiguration des Servers und des Clients verwenden können:
Folgende Schritte sind für eine erfolgreiche Konfiguration des IPsec-Schutzes zwischen zwei Systemen notwendig.
- Anpassen der Variablen PSK und TrustedIPs der Batchdateien.
- Ausführen der Kommandos auf dem RDP-Client
IPSec_RDPClient.bat CreatePolicy
IPSec_RDPClient.bat EnablePolicy
- Ausführen der Kommandos auf dem RDP-Server
IPSec_RDPServer.bat CreatePolicy
IPSec_RDPServer.bat EnablePolicy
Ausführlichere Informationen dazu finden Sie in den nächsten Zeilen.
Systemvoraussetzungen
- Windows Vista/Server 2008 oder höher.
Ausführen der Batchdateien
Die beiden Batchdateien müssen jeweils auf dem Remotedesktopserver und auf dem Remotedesktopclient ausgeführt werden, damit die dazugehörigen IPSec-Policies konfiguriert werden können.
- IPSec_RDPServer.bat - Batchdatei zur Ausführung auf dem Remotedesktopserver
- IPSec_RDPClient.bat - Batchdatei zur Ausführung auf dem Remotedesktopclient
Parameter der Batchdateien
Anlegen der IPSec-Policy zum Schutz des RDP-TCP-Ports
- Batchdateiname.bat CreatePolicy
Löschen der IPSec-Policy zum Schutz des RDP-TCP-Ports
- Batchdateiname.bat DeletePolicy
Aktivieren der IPSec-Policy zum Schutz des RDP-TCP-Ports
- Batchdateiname.bat EnablePolicy
Desktivieren der IPSec-Policy zum Schutz des RDP-TCP-Ports
- Batchdateiname.bat DisablePolicy
Anpassen der Batchdateien
Beide Batchdateien lassen mittels folgender Variablen anpassen, indem Sie die Dateien direkt verändern.
Anpassbare Variablen der Batchdatei
PSK | beliebige Zeichenkette | wj+fQ3MuXOE_mKRi_KoS8UBUT]jbtZBe*HC#t#$?;BSUWu.%TB 2H;)8:hjOPVx(+b>^{XyK/*&CQ]nz%oMk&@2(#x[UyWD0ggo] | Preshared Key für IPsec-Schutz |
TrustedIPs | Leer (TrustedIPs=) oder Kommagetrennte Liste von IP-Adressen oder Subnetzen in CIDR-Format | 192.168.1.0/24,192.168.3.4/32 | Liste von vertrauenswürdigen IP-Adressen oder Subnetzen |
Generierung eines Preshared Keys
Führen Sie folgende Kommandos in einer Windows-Powershell im Full Language Mode nacheinander aus:
[Reflection.Assembly]::LoadWithPartialName(“System.Web") > $null
[System.Web.Security.Membership]::GeneratePassword(100,5)
Diese Befehle erzeugen ein Zufallspasswort mit einer Länge von 100 Zeichen und mindestens 5 Sonderzeichen.
Referenz:
IPSec-Konfiguration des Servers (z.B. Arbeitsplatz-PC, Anwendungsserver usw.)
Laden Sie sich die Datei IPSec_RDPServer.bat herunter, passen Sie die Datei Ihrer Umgebung an und führen Sie die veränderte Batchdatei "IPSec_RDPServer.bat" aus.
Dazu gehen Sie folgt vor:
- Laden Sie sich die Datei IPSec_RDPServer.bat herunter, indem Sie auf folgenden Link klicken IPSec_RDPServer.bat und speichern Sie die Datei.
- Laden Sie die gespeicherte Datei "IPSec_RDPServer.bat" in einen Editor.
- Passen Sie die Konfiguration entsprechend Ihrer Bedürfnisse an, indem Sie die Variablen PSK und TrustedIPs entsprechend der Vorgaben der Tabelle "Anpassbare Variablen der Batchdatei" anpassen.
- Öffnen Sie eine Kommandozeile mit administrativen Rechten, indem Sie die rechte Maustaste auf den Shortcut "Eingabeaufforderung" unter "START -> Alle Programme -> Zubehör" drücken und anschließend den Befehl "Als Administrator ausführen" auswählen.
- Führen Sie folgende Kommandos aus
IPSec_RDPServer.bat CreatePolicy
IPSec_RDPServer.bat EnablePolicy
IPSec-Konfiguration des Clients (z. B. PC zu Hause, Laptop unterwegs)
Laden Sie sich die Datei IPSec_RDPClient.bat herunter, passen Sie die Datei Ihrer Umgebung an und führen Sie die veränderte Batchdatei "IPSec_RDPServer.bat" aus.
Dazu gehen Sie folgt vor:
- Laden Sie sich die Datei IPSec_RDPClient.bat herunter, indem Sie auf folgenden Link klicken IPSec_RDPClient.bat und speichern Sie die Datei.
- Laden Sie die gespeicherte Datei "IPSec_RDPClient.bat" in einen Editor.
- Passen Sie die Konfiguration entsprechend Ihrer Bedürfnisse an, indem Sie die Variablen PSK und TrustedIPs entsprechend der Vorgaben der Tabelle "Anpassbare Variablen der Batchdatei" anpassen.
- Öffnen Sie eine Kommandozeile mit administrativen Rechten, indem Sie die rechte Maustaste auf den Shortcut "Eingabeaufforderung" unter "START -> Alle Programme -> Zubehör" drücken und anschließend den Befehl "Als Administrator ausführen" auswählen.
- Führen Sie folgende Kommandos aus
IPSec_RDPClient.bat CreatePolicy
IPSec_RDPClient.bat EnablePolicy
Absicherung mit Zusatzsoftware
Beide nachfolgend angebenen Schutzmöglichkeiten beruhen darauf, den Zugriff auf den Remotedesktop-TCP-Port mit einer zusätzlichen Anmeldung per Nutzerkennzeichen und Passwort zu versehen.
Dies verringert die Angriffsmöglichkeiten auf den Remotedesktop-TCP-Port erheblich.
Nutzung von VPN-Servern
Voraussetzung für einen sinnvollen Schutz des Remotedesktop-TCP-Ports mittels VPN ist die Einschränkung der Reichweite des Remotedesktop-TCP-Ports 3389 auf die vom VPN-Server ausgegebenen IP-Adressen. Dies lässt sich einfach per Windows Firewall-Regeln umsetzen, s. dazu auch das Batchdateibeipiel weiter oben.
Anschließend kann ein Zugriff auf den Remotedesktop-TCP-Port nur aus den Subnetzen oder von den IP-Adressen erfolgen, welche der VPN-Server nach erfolgter Anmeldung per VPN-Client ausgibt.
Dadurch sind alle direkten Angriffe auf den Remotedesktop-TCP-Port abgeschaltet.
Hinweise zur Nutzung des VPN-Servers des ITMZ finden Sie hier
Nutzung von Remotedesktop-Gateways
Ein Remotedesktop-Gateway ermöglicht es einem Remotedesktop-Client das Remotedesktop-Protokoll über das HTTPS-Protokoll zu tunneln.
Dadurch kann die Reichweite des Remotedesktop-TCP-Port 3389 auf das Remotedesktop-Gateway eingeschränkt werden, da alle Remotedesktop-Clients über das Remotedesktop-Gateway arbeiten können.
Dadurch sind alle direkten Angriffe auf den Remotedesktop-TCP-Port unterbunden.
Die Nutzung eines Remotedesktop-Gateways durch den Windows Remotedesktop-Client "mstsc.exe" konfigurieren Sie wie folgt:
- Klicken Sie auf die Schaltfläche Start. Geben Sie im Suchfeld den Text mstsc.exe ein, und klicken Sie anschließend in der Ergebnisliste auf "mstsc.exe".
- Klicken Sie auf "Optionen", klicken Sie auf die Registerkarte "Erweitert", und klicken Sie dann unter Verbindung von überall aus herstellen auf "Einstellungen".
- Aktivieren Sie "Diese Einstellungen für Remotedesktop-Gatewayserver" verwenden, und geben Sie dann den Remotedesktop-Gatewayserverservernamen ein.
- Klicken Sie auf die Schaltfläche "OK".
- Klicken Sie auf die Registerkarte "Allgemein".
- Tragen Sie im Feld "Computer" den Remotedesktopservernamen ein und klicken dann auf "Verbinden".
Referenz:
FAQ
Network Level Authentication (NLA) wurde mit Windows Server 2008 eingeführt. NLA dient dem Schutz von RDP-Servern vor Denial of Service (DoS) Angriffen und bei einer Anmeldung über Kerberos dem Schutz vor Phishing, weil über Kerberos die Identität des Zielservers über das NLA-Protokoll überprüft werden kann.
Da es grundsätzlich empfohlen ist, RDP über TLS per Serverzertifikat abzusicheren, kann die Identität des Zielservers auch über ein Serverzertifikat überprüft werden.
Es gibt Einsatzszenarien, bei denen es sinnvoll sein kann, NLA nicht zu erzwingen, z.B. wenn Clients das NLA-Protokoll nicht unterstützen oder die Reichweite von Anmeldungen eingeschränkt werden soll (z.B. Domain Admins), aber auf dem benutzten Endgerät das eingeschränkte Konto nicht benutzt werden soll, sondern nur auf dem Zielserver.
Um das serverseitige Erzwingen von NLA über Gruppenrichlinien zu deaktivieren gegen Sie wie folgt vor:
Öffnen Sie das entsprechende Gruppenrichtlinienobjekt, wechseln Sie zu
und konfigurieren Sie die folgenden Einstellungen:
Weiterhin muss NLA im benutzten Remotedesktopprogramm deaktiviert werden, z.B. für das Microsoft Remotedesktopprogramm mstsc.exe wie folgt:
- Editieren der versteckten Datei default.rdp unter "Eigene Dateien" ("My Documents") oder Dokumente (Documents)
- Hinzufügen der Zeile
enablecredsspsupport:i:0
Weitere Informationen dazu unter:
Weitere Informationen
Bei Fragen oder Hinweisen zu diesem Dokument melden Sie sich bitte per E-Mail bei joerg.maletzky(at)uni-rostock.de.