Remote-Arbeit im Büro. RDP, Port Knocking, Mikrotik: einfach und sicher

Im Zuge der COVID-19-Pandemie und dem allgemeinen Lockdown in vielen Ländern war der einzige Weg für viele Unternehmen, weiterhin zu operieren, der remote Zugriff auf Arbeitsplätze über das Internet. Es gibt viele relativ sichere Methoden für die Remote-Arbeit, aber angesichts des Ausmaßes des Problems ist eine einfache Verbindungsmethode erforderlich, die für alle Benutzer zugänglich ist, ohne dass zusätzliche Einstellungen, Erklärungen, mühsame Beratungen oder lange Anleitungen notwendig sind. Eine beliebte Methode, die viele Administratoren bevorzugen, ist RDP (Remote Desktop Protocol). Der direkte Zugriff auf den Arbeitsplatz über RDP löst unser Problem optimal, bis auf einen großen Wermutstropfen: Das Offenhalten des RDP-Ports für das Internet ist äußerst unsicher. Daher schlage ich im Folgenden eine einfache, aber zuverlässige Methode zur Absicherung vor.Remote-Arbeit im Büro. RDP, Port Knocking, Mikrotik: einfach und sicher

Da ich oft auf kleine Organisationen stoße, die zur Internetanbindung Mikrotik-Geräte verwenden, werde ich im Folgenden zeigen, wie dies auf Mikrotik realisiert wird. Die Port-Knocking-Schutzmethode ist jedoch auch auf anderen höherwertigen Geräten mit ähnlichen Einstellungen für den Eingangsrouting und die Firewall problemlos umsetzbar.

Kurz über Port Knocking. Der ideale extern Schutz eines mit dem Internet verbundenen Netzwerks besteht darin, dass alle Ressourcen und Ports durch eine Firewall von außen geschlossen sind. Auch wenn der Router mit einer entsprechend konfigurierten Firewall auf eingehende Pakete von außen nicht reagiert, lauscht er ihnen. Daher kann der Router so eingestellt werden, dass er bestimmten (Code-)Sequenzen von Netzwerpaketen an verschiedene Ports beim Erhalt diese Pakete von der IP, von der sie stammen, den Zugriff auf bestimmte Ressourcen (Ports, Protokolle usw.) öffnet.

Kommen wir nun zur Sache. Eine detaillierte Beschreibung der Firewall-Einstellungen auf MikroTik werde ich nicht geben – dafür gibt es im Internet ausreichend hochwertige Quellen. Idealerweise blockiert die Firewall alle eingehenden Pakete, aber

/ip firewall filter
add action=accept chain=input comment="established and related accept" connection-state=established,related

erlaubt eingehenden Verkehr von bereits etablierten (established, related) Verbindungen.
Jetzt konfigurieren wir Port Knocking auf MikroTik:

/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
move [/ip firewall filter find comment=RemoteRules] 1
/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389

Jetzt im Detail:

Die ersten zwei Regeln

/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules

verbieten eingehende Pakete von IP-Adressen, die während des Port-Scans auf die schwarze Liste gesetzt wurden;

Dritte Regel:

add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules

fügt die IP-Adresse der Liste der Hosts hinzu, die den richtigen ersten Klopf an den benötigten Port (19000) gemacht haben;
Die folgenden vier Regeln:

add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules

erstellen Fangports für diejenigen, die versuchen, Ihre Ports zu scannen. Wird ein solcher Versuch erkannt, wird die IP-Adresse für 60 Minuten auf die schwarze Liste gesetzt, in der die ersten beiden Regeln verhindern, dass solche Hosts auf die korrekten Ports zugreifen können;

Die nächste Regel:

add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules

stellt die IP-Adresse für eine Minute auf die erlaubte Liste (ausreichend für die Verbindungsherstellung), da der zweite korrekte Zugriff auf den benötigten Port (16000) erfolgt ist;

Der nächste Befehl:

move [/ip firewall filter find comment=RemoteRules] 1

Das verschiebt unsere Regeln nach oben in der Firewall-Verarbeitungskette. Wahrscheinlich haben wir bereits verschiedene gesperrte Regeln eingerichtet, die das Auslösen unserer neu erstellten Regeln verhindern. Die erste Regel im MikroTik beginnt bei null, aber auf meinem Gerät war die null durch eine interne Regel belegt, und ich konnte sie nicht verschieben – also habe ich sie auf 1 verschoben. Daher schauen wir uns unsere Einstellungen an – wohin wir verschieben können und geben die benötigte Nummer an.

Die nächste Einstellung:

/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp_to_33" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389

leitet den willkürlich gewählten Port 33890 auf den standardmäßigen RDP-Port 3389 und die IP-Adresse des benötigten Computers oder Terminalservers weiter. Solche Regeln erstellen wir für alle notwendigen internen Ressourcen, wobei es wünschenswert ist, unterschiedliche externe Ports zu verwenden. Natürlich müssen die IP-Adressen interner Ressourcen entweder statisch oder im DHCP reserviert sein. Server.

Jetzt ist unser MikroTik konfiguriert, und wir benötigen ein benutzerfreundliches Verfahren zur Verbindung mit unserem internen RDP. Da wir hauptsächlich Windows-Nutzer haben, erstellen wir eine einfache .bat-Datei und benennen sie StartRDP.bat:

1.htm
1.rdp

entsprechend enthält 1.htm den folgenden Code:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
Bitte aktualisieren Sie die Seite, um erneut per RDP zuzugreifen.
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

Hier finden Sie zwei Links zu virtuellen Bildern, die unter der Adresse my_router.sn.mynetname.net gespeichert sind – diese Adresse erhalten wir aus dem DDNS-System von MikroTik, indem wir dies in unserem MikroTik aktivieren: Gehen Sie zum Menü IP -> Cloud, aktivieren Sie das Kontrollkästchen DDNS Enabled, klicken Sie auf Anwenden und kopieren Sie den DNS-Namen unseres Routers. Dies ist jedoch nur erforderlich, wenn die externe IP-Adresse des Routers dynamisch ist oder eine Konfiguration mit mehreren Internetanbietern verwendet wird.

Der Port in der ersten URL :19000 entspricht dem ersten Port, den Sie ansprechen müssen, in der zweiten URL entsprechend dem zweiten. Zwischen den Links gibt es eine kurze Anleitung, die zeigt, was zu tun ist, wenn unsere Verbindung aufgrund kurzer Netzwerkprobleme unterbrochen wird – wir aktualisieren die Seite, der RDP-Port öffnet sich für uns erneut für 1 Minute und unsere Sitzung wird wiederhergestellt. Außerdem verursacht der Text zwischen den img-Tags im Browser eine Mikroverzögerung, die die Wahrscheinlichkeit reduziert, dass das erste Paket den zweiten Port (16000) erreicht – bis jetzt gab es in den letzten zwei Wochen (30 Nutzer) keine derartigen Fälle.

Hier ist die Datei 1.rdp, die wir entweder für alle Benutzer gemeinsam oder individuell für jeden Benutzer konfigurieren können (so habe ich es gemacht – es ist einfacher, einmal 15 Minuten zu investieren, als mehrere Stunden mit denen zu verbringen, die nicht weiterkommen).

screen mode id:i:2
use multimon:i:1
.....
connection type:i:6
networkautodetect:i:0
.....
disable wallpaper:i:1
.....
full address:s:my_router.sn.mynetname.net:33890
.....
username:s:myuserlogin
domain:s:mydomain

Eine interessante Einstellung hier ist use multimon:i:1 – das aktiviert die Nutzung mehrerer Monitore – einige benötigen dies, kommen aber selbst nicht darauf.

connection type:i:6 und networkautodetect:i:0 – angesichts dessen, dass die meisten mit über 10 Mbit/s ins Internet gehen, stellen wir den Verbindungstyp 6 (lokales Netzwerk 10 Mbit und mehr) ein und schalten die Netzwerkerkennung aus, da diese im Standardmodus (auto) selbst bei seltenen, kleinen Verzögerungen im Netzwerk über längere Zeit eine reduzierte Geschwindigkeit für unsere Sitzung festlegt, was in der Arbeit, insbesondere bei grafischen Programmen, merkliche Verzögerungen verursachen kann.

disable wallpaper:i:1 – wir deaktivieren das Hintergrundbild.
username:s:myuserlogin – den Benutzernamen geben wir an, da ein erheblicher Teil unserer Nutzer ihren Benutzernamen nicht kennt.
domain:s:mydomain – wir geben die Domain oder den Computernamen an.

Um den Prozess der Verbindungsherstellung zu erleichtern, können wir auch PowerShell verwenden — StartRDP.ps1

Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 19000
Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 16000
mstsc /v:my_router.sn.mynetname.net:33890

Ein bisschen über den RDP-Client in Windows: Microsoft hat viel Zeit in die Optimierung des Protokolls sowie seiner Server- und Client-Komponenten investiert und viele nützliche Funktionen implementiert — dazu gehört die Unterstützung von Hardware-3D, die Anpassung der Bildschirmauflösung an Ihren Monitor, Multiscreen und mehr. Allerdings wird alles in einem Modus der Abwärtskompatibilität realisiert. Wenn der Windows-Client 7 ist und der Remote-PC Windows 10, funktioniert RDP unter Verwendung des Protokolls der Version 7.0. Glücklicherweise können die RDP-Versionen auf neuere aktualisiert werden — zum Beispiel kann das Protokoll von 7.0 (Windows 7) auf 8.1 erhöht werden. Daher ist es wichtig, die Serverkomponenten auf die höchstmöglichen Versionen zu aktualisieren und Links zum Upgrade der RDP-Client-Protokolle bereitzustellen.

Letztendlich haben wir eine einfache und relativ sichere Technologie für den Remote-Zugriff auf den PC oder den Terminalserver. Für eine noch sicherere Verbindung kann unsere Methode des Port Knockings so angepasst werden, dass sie auf mehrere Ebenen erschwert wird, indem zusätzliche Ports zur Überprüfung hinzugefügt werden – man könnte nach demselben Prinzip 3, 4, 5, 6… Ports hinzufügen, sodass ein direkter Zugriff auf Ihr Netzwerk nahezu unmöglich wird.

Vorlagen für die Erstellung einer Remote-Verbindung zu RDP.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster