Sicherung meiner Microsoft Remote Desktop-Verbindung über das Internet?

Auf meinem Windows 10-Heimcomputer habe ich den RDP-Port (3389) von Microsoft über meinen Router an den Port (20202) portiert. Auf diese Weise kann ich über die Microsoft Remote Desktop-Anwendung auf meinem Mac remote auf den Windows 10-Computer zugreifen, indem ich einfach <my public IP address>:<port> (z. B. 134.111.23.443:20202).

Ich frage mich, ob es eine Möglichkeit gibt, dies sicherer zu machen, z. B. das Tunneln über SSH, ohne dass andere Computer erforderlich sind (ich habe nur den Windows 10-Computer über das Festnetz mit dem Internet verbunden unter zu Hause, und mein MacBook, das ich mit mir nehme).

Author: robinCTS, 2018-07-29

2 answers

Microsofts Remote Desktop verwendet Verschlüsselung und Kommunikation sind daher angemessen geschützt. Der Schwachpunkt ist der Brute-Force-Angriff gegen Ihren Benutzernamen und Ihr Passwort.

Um RDP zu sichern, können Sie Folgendes tun:

  1. Ändern Sie den Standardport, den Remote Desktop abhört
    Das hast du schon getan.

  2. Starke Anmeldeinformationen
    Verwenden Sie einen nicht standardmäßigen Benutzernamen und einen langen und komplizierten Passwort -

  3. Eingeschränkte Benutzerkonten
    Beschränken Sie alle Benutzer, die RDP verwenden können, indem Sie ausführen secpol.msc > Lokale Richtlinien > Zuweisung von Benutzerrechten, doppelklicken Sie auf " Anmelden über Remotedesktopdienste zulassen" und entfernen Sie alle angezeigten Gruppen und fügen Sie dann Ihren einen Benutzer hinzu.

  4. Hohe Sicherheitsstufe
    Führen Sie gpedit.msc > Lokale Computerrichtlinie > Administrative Vorlagen > Windows-Komponenten > Remotedesktopdienste > Remotedesktopsitzung aus > Sicherheit.

    • "Set Client connection encryption level" - > Aktiviert und hochrangig, damit Ihre Sitzungen mit 128-Bit-Verschlüsselung gesichert werden können
    • "Erfordern die Verwendung von speziellen security layer for remote (RDP) connections" - > " SSL
    • "Benutzerauthentifizierung für Remoteverbindungen mithilfe der Authentifizierung auf Netzwerkebene erforderlich" - > Aktiviert
  5. Legen Sie eine Kontosperrrichtlinie fest
    So sperren Sie ein Konto für einen bestimmten Zeitraum nach einer Reihe von falschen erraten, gehen Sie zu Verwaltungstools > Lokale Sicherheitsrichtlinie > Kontorichtlinien > Kontosperrrichtlinien und legen Sie Werte für alle drei Optionen fest (3 ungültige Versuche mit einer Sperrdauer von 3 Minuten sind angemessen).

  6. Verfolgen Sie die Anmeldung an Ihrem PC
    Gehen Sie regelmäßig zu Ereignisanzeige > Anwendungen und Dienstprotokolle > Microsoft > Windows > TerminalServices-LocalSessionManger > Operational, um Login-Informationen zu sehen.

 3
Author: harrymc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-07-29 11:44:09

Es ist eine wirklich gute Entscheidung, da Microsoft immer noch nicht herausfinden kann, wie Brute-Forcing-Angriffe auf RDP-Sitzungen verhindert werden können. Es gibt eine Kontosperrrichtlinie (die einen Nachteil hat, lesen Sie weiter), die in nice @harrymc answer sehr gut beschrieben ist, sodass diejenigen, die keine Windows Pro-Version haben, einen solchen Workflow verwenden können.

Wenn Sie Eigentümer der Home-Version sind, können Sie die Kontosperrrichtlinie aktivieren, indem Sie die Registrierung direkt in bearbeiten Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters\AccountLockout
  • Doppelklicken Sie auf den Wert MaxDenials und geben Sie die Anzahl der fehlgeschlagenen Versuche ein, bevor das Konto gesperrt werden soll.
  • Doppelklicken Sie auf den Wert ResetTime (mins) und ändern Sie den Standardwert 0xB40, der hexadezimal für 2.880 Minuten (zwei Tage) ist, in etwas Vernünftiges, sagen wir 15-20 Minuten.

Das Problem mit der Windows-Kontosperrrichtlinie besteht darin, dass Ihr Computer gesperrt wird, wenn jemand anderes versucht, das Kennwort mit Brute-Force zu erzwingen. Politik ist nicht abhängig von der IP des Urhebers, Zählen Sie nur Anmeldeversuche und lösen Sie das Kontosperrereignis aus, wodurch der Zugriff auf beide - den Eigentümer und den Angreifer-effektiv deaktiviert wird.

Ein weiterer meiner Meinung nach viel stärkerer Schutz ist die Verwendung von SSH Public Key-Authentifizierung, die viel stärker ist als passwortbasierte Authentifizierung.

Sie hätten Ihre Frage fast beantwortet, indem Sie SSH erwähnt hätten. Set cygwin auf dem windows-PC, führen Sie SSH-Dienst und aktivieren sshd_config tunneling und legen Sie die Authentifizierung mit öffentlichem Schlüssel fest, während Sie die Authentifizierung mit einfachem Kennwort deaktivieren (testen Sie die SSH-Verbindung, während Sie sich in Ihrem Heim-LAN befinden, wenn sie erfolgreich funktioniert).
Leiten Sie auf Ihrem Router einen nicht standardmäßigen SSH-Port (22) weiter, z. B. 20202, wie Sie es für RDP auf diesem Windows-Computer auf Port 22 auf Windows-PCS getan haben (vergessen Sie nicht, auch die Weiterleitung an RDP zu deaktivieren). Wenn Sie eine Verbindung zu RDP herstellen, starten Sie die erste SSH-Sitzung mit dem folgenden Skript auf einem entfernten Windows-PC:
(skript für Unix-basierte Betriebssysteme wie Linux, BSD, macOS sowie für diejenigen, die cygwin verwenden. Diejenigen, die Windows als Client verwenden, siehe Abschnitt "Verbinden" unten)

#!/bin/sh

# Script that can be use on remote client that running Unix based OS

RemotePC_IP=1.2.3.4  # Public IP address of your home
WindowsUserName=Gates  # Windows user name on remote computer
RDPlocalListenPort=12345  # Local port that that will be forwarded to RDP
Path2prvKey='/path/to/private/key' # Path to private key
RemoteSSHport=20202 # The port that opened on your home router
                    # and forwarded to SSH service port on Windows PC

ssh -N -L ${RDPlocalListenPort}:localhost:3389 \
    -i ${Path2prvKey} -p ${RemoteSSHport} ${WindowsUserName}@${RemotePC_IP}                   

# If you also want to use bunch of useful Unix utilites (that doesn't
# exist natively on Windows) besides of port forwarding, you can remove
# `-N` option from this script and use cygwin's terminal to run Windows's
# and Unix's console base programs remotely without starting RDP session. 

Es leitet Ihren lokalen Port 12345 über eine sicher verschlüsselte SSH-Sitzung an den RDP-Port(3389) auf einem entfernten Windows-Computer weiter und stellt dann mithilfe der Verbindungszeichenfolge eine Verbindung zu RDP her localhost:12345

Vorteil einer solchen Methode Sicherung RDP-Sitzung ist, dass Kanal mit asymmetrischer Kryptographie verschlüsselt, die viel stärker als jedes komplizierte Passwort ist. Außerdem von starke Verschlüsselung man kann reiche Unix-Dienstprogramme verwenden, um über sicheren Kanal Remote-Windows-PC zu verwalten.

Eine weitere nette Sache, die Sie durch die Verwendung von SSH tun können, - Wenn Sie keine statische IP-Adresse zu Hause haben ODER Unternehmen wie LogMeIn oder TeamViewer ODER Ihrem PC, der sich hinter einer strengen Firewall befindet, nicht vollständig vertrauen möchten Sie können keine Portweiterleitung einrichten ODER Sie haben keine Kontrolle über das primäre Gateway/die primäre Firewall, dann kann man SSH im umgekehrten Modus einrichten, verbindung zu einem Zwischenserver mit statischer IP, die Sie steuern. Auf diese Weise müssen Sie keine direkte Verbindung zum Windows-PC herstellen, sondern eine Verbindung zum Zwischenserver herstellen, der viele Computer bedienen kann. Ein solches Setup ist sehr praktisch, wenn man mobile Kunden unterstützen muss, welche IP unbekannt ist, und wenn der IT-Support den mobilen PC des Unternehmens unterstützen sollte, ohne Dienste von Drittanbietern zu verwenden, da hohe Unternehmensgeheimnisse das Risiko verringern, dass Daten kompromittiert werden.

Während der Installation unten sieht ziemlich lang aus zu lesen, in der Praxis dauert eine solche Installation 10-15 Minuten, wenn Sie verstehen, wie es funktioniert.

Details:

Cygwin installieren

Update: Beginnend mit Windows 10 v. 1803 Microsoft wird mit bereits vorinstalliertem OpenSSH Server und Client ausgeliefert, daher sind die folgenden Schritte für diejenigen, die Windows 10 noch nicht haben oder noch nicht auf Windows 10 v. 1803 und höher aktualisiert haben.

Um SSH unter Windows zu installieren, folgen Sie der Dokumentation von Oracle, das im Detail und mit Screenshots beschreibt, wie SSH-Dienst einzurichten.
Sie müssen nur Abschnitten folgen 5.3, 5.4, 5.5 hier

Ich werde unten die wichtigsten Schritte posten, die zur Installation des SSH-Dienstes ausgeführt werden müssen.

  • Download ausführbare Setup-Datei von cygwin primäre Website. Es gibt zwei Versionen von Setup-Dateien: setup-x86.exe und setup-x86_64.exe. Wählen Sie geeignete Datei für Ihre Maschine. Wenn Sie wollen verwenden andere Unix-Basis-utilities neben SSH, dann rate ich, die x86 - Version zu verwenden, auch wenn Ihr Computer 64-Bit ist, da nicht alle Dienstprogramme auf die 64-Bit-Version portiert wurden.
  • Setup-Prozess ist ziemlich einfach und intuitiv:
    Wählen Sie auf dem Bildschirm Installationstyp auswählen die Option Aus dem Internet installieren aus und klicken Sie dann auf Weiter.
  • Geben Sie auf dem Bildschirm Installationsverzeichnis auswählen C:\cygwin klicken Sie als Stammverzeichnis auf Weiter. Setzen Sie das Optionsfeld Install for auf Alle Benutzer
  • Auf dem Bildschirm Lokales Paketverzeichnis auswählen, wählen Sie ein Verzeichnis auf Ihrem lokalen Computer aus, in dem Sie die heruntergeladenen Installationsdateien speichern möchten, und klicken Sie dann auf Weiter. (Sie können Standard c:\packages)
  • Wählen Sie auf dem Bildschirm Verbindungstyp auswählen die entsprechenden Einstellungen aus, um eine Verbindung zum Internet herzustellen, und klicken Sie dann auf Weiter. Wenn Sie PC haben direkten Zugang zum Internet ohne Proxies, dann wählen Direct connections
  • Wählen Sie auf dem Bildschirm Download-Site(s) auswählen eine beliebige Site aus der verfügbaren Liste aus und klicken Sie dann auf Weiter. Wählen Sie dort am nächsten zu Ihnen Website. Auf stellen Sie im Bildschirm Pakete auswählen sicher, dass Sie mindestens die folgenden Pakete auswählen, und klicken Sie dann auf Weiter:
    • openssh, openssl, unzip, xz, zip, mc
  • Nachdem Sie die Pakete ausgewählt und auf Weiter geklickt haben, wird der Bildschirm Abhängigkeiten auflösen angezeigt. Klicken Sie auf Weiter, um fortzufahren.
  • Wenn Sie denken, dass Sie Unix - basierte Dienstprogramme verwenden würden, nehmen Sie auf dem Bildschirm Installationsstatus und Symbole erstellen keine Änderungen vor. Klicken Sie auf Fertig stellen, um die installation abzuschließen verarbeiten, ansonsten Kontrollkästchen deaktivieren.

SSH konfigurieren

  • C:\cygwin Nachdem Sie Cygwin installiert haben, navigieren Sie zum Verzeichnis C:\cygwin, öffnen Sie die Datei Cygwin.bat im Bearbeitungsmodus mit einem beliebigen Editor und fügen Sie die folgende Zeile hinzu, bevor Sie die Bash-Shell aufrufen.
    set CYGWIN=binmode ntsec wie im Beispiel unten:

    @echo off C: chdir C:\cygwin\bin set CYGWIN=binmode ntsec bash --login -i

  • Um zu überprüfen, ob Cygwin (cygrunsrv) richtig installiert ist, ausführen
    C:\cygwin\Cygwin.bat, und führen Sie den folgenden Befehl aus:
    cygrunsrv -h
    Wenn Cygwin ist richtig installiert, dann werden alle Cygwin-Hilfe-Optionen auf dem Bildschirm angezeigt. Wenn dieser Befehl jedoch eine Fehlermeldung zurückgibt, müssen Sie Cygwin möglicherweise neu installieren.

  • Um den Dienst SSHD zu konfigurieren, führen Sie C:\cygwin\Cygwin.bat aus und führen den folgenden Befehl aus:
    ssh-host-config
    Nach dem Ausführen des Befehls werden Sie zu folgenden Fragen aufgefordert:
    *** Query: Should privilege separation be used? <yes/no>: yes *** Query: New local account 'sshd'? <yes/no>: yes *** Query: Do you want to install sshd as a service? *** Query: <Say "no" if it is already installed as a service> <yes/no>: yes *** Query: Enter the value of CYGWIN for the deamon: [] binmode ntsec *** Query: Do you want to use a different name? (yes/no) yes/no
    An dieser Stelle, wenn Sie den gleichen Namen verwenden möchten, das ist cyg_server, geben Sie keine. Sie werden dann Folgendes aufgefordert Fragen:
    *** Query: Create new privileged user account 'cyg_server'? (yes/no) yes *** Query: Please enter the password: *** Query: Renter:
    Wenn Sie jedoch einen anderen Namen verwenden möchten, geben Sie Ja ein. Sie werden dann aufgefordert, die folgenden Fragen:
    *** Query: Enter the new user name: cyg_server1 *** Query: Reenter: cyg_server1 *** Query: Create new privileged user account 'cyg_server1'? (yes/no) yes *** Query: Please enter the password: *** Query: Reenter:
    Wenn die Konfiguration erfolgreich ist, wird die folgende Meldung angezeigt:
    Host configuration finished. Have fun!
  • Sichern Sie die Datei c:\cygwin\etc\passwd (falls vorhanden) und führen Sie den folgenden Befehl aus:
    /bin/mkpasswd -l >/etc/passwd
    bearbeiten Sie dann passwd, indem Sie mcedit /etc/passwd
    Entfernen Sie alle Benutzer, die keine Verbindung über SSH herstellen, insbesondere:
    SYSTEM, LOCAL SERVICE, NETWORK SERVICE, NT SERVICE+TrustedInstaller, Guest

Feinabstimmung von SSHD Dienst

  • Edit - sshd_config Datei - (SSH-service), die durch laufen:
    mcedit /etc/sshd_config
  • Fügen Sie am Ende der Datei folgenden Inhalt hinzu:

########################### Customization ##########################
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms [email protected],diffie-hellman-group-exchange-sha256
MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected]
#
UseDNS no
UsePAM yes
LoginGraceTime 20
#
PermitRootLogin prohibit-password
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
HostbasedAuthentication no
#
PermitTunnel yes
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 10
GatewayPorts no
AllowTcpForwarding yes

  • Jetzt muss man Schlüssel für public key Authentication
    Führen Sie im Terminal cygwin folgende Befehle aus:
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    cd ~/.ssh
    echo > ~/.ssh/authorized_keys

    • Generiere Schlüssel auf Unix-Weise: (Ersetze "Benutzername" durch ein Windows-Konto, das über SSH verbunden wird)
      In cygwin terminal führen Sie folgende Befehle aus:
      cd ~/.ssh
      ssh-keygen -t ed25519 -o -a 127 -C "UserName" -f "UserName.ed25519.key"
      cp -f UserName.ed25519.key.pub ~/.ssh/authorized_keys
    • Windows-Weg:
      Herunterladen PuTTY und führe puttygen.exe aus. Wählen Sie die zu generierende Taste als ED25519 und drücken Sie Generate. Speichern Sie den privaten Schlüssel in einer Datei, die später als Autorisierungsschlüssel verwendet werden kann. Wählen Sie den öffentlichen Schlüssel oben aus dem Feld aus, das als markiert ist (Öffentlicher Schlüssel für die Übergabe an OpenSSH), klicken Sie mit der rechten Maustaste auf Auswahl und wählen Sie copy dann paste kopierten Inhalt zu
      ~/.ssh/authorized_keys
  • Starten Sie schließlich den SSH-Dienst, indem Sie den folgenden Befehl ausführen:
    cygrunsrv -S sshd

Verbindung vom Remote-Client zum RDP über SSH-Verbindung

  • Um eine Verbindung auf Unix-basierten Betriebssystemen wie Linux, FreeBSD und macOS herzustellen, kann man ein Shell-Skript verwenden, das oben auf der Antwort steht. Variablen bearbeiten Verwenden Sie oben im Skript den privaten Schlüssel, der in den vorherigen Schritten generiert wurde.
  • Um eine Verbindung von Computern mit Windows herzustellen, kann man verwenden PuTTY client-Programm. Führen Sie vor dem Herstellen einer Verbindung zum Remotecomputer über RDP(Remotedesktopverbindung) zuerst PuTTY aus und legen Sie die Portweiterleitung und den privaten Schlüssel fest:
    • Gehen Sie im linken Baumfenster zu
      Connection->SSH->Auth klicken Sie auf die Schaltfläche Durchsuchen Pfad zum privaten Schlüssel hinzufügen, der in den vorherigen Schritten generiert wurde.
    • Gehen Sie im linken Baumfenster zu
      Connection->SSH->Tunnels und geben Sie in Feld Source port 12345 und setze localhost:3389 in das Feld destination, setze dann die Optionsfelder auf Local und Auto und drücke Schaltfläche hinzufügen.
    • Gehen Sie im linken Baumfenster zu Session und geben Sie im Feld [[66]} die IP-Adresse des Remote-Windows-PCS ein, auf dem SSH ausgeführt wird, sowie den Remote-Listening-Port des Home-Routers im Feld Port.
    • Fügen Sie den beschreibenden Namen Ihrer Sitzung in das Feld Saved Sessions ein und speichern Sie die Konfiguration.
  • Wenn eine Verbindung über SSH hergestellt ist, führen Sie das Programm Remote Desktop Connection aus und verwenden Sie localhost:12345, um über den SSH-Tunnel eine Verbindung zum Remotecomputer herzustellen.
 3
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-08-11 18:06:45