Fernarbeit im BĂŒro. RDP, Port Knocking, Mikrotik: einfach und sicher

Aufgrund der Pandemie des COVID-19-Virus und der allgemeinen QuarantĂ€ne in vielen LĂ€ndern war der einzige Ausweg fĂŒr viele Unternehmen, um weiterarbeiten zu können, der Fernzugriff auf ArbeitsplĂ€tze ĂŒber das Internet. Es gibt viele relativ sichere Methoden fĂŒr das Remote-Arbeiten. Angesichts des Ausmaßes des Problems ist jedoch eine Methode erforderlich, die fĂŒr alle Benutzer einfach zu bedienen ist, ohne zusĂ€tzliche Einstellungen, ErklĂ€rungen, mĂŒhsame Beratungen und lange Anleitungen. Eine solche Methode ist das von vielen Administratoren geschĂ€tzte RDP (Remote Desktop Protocol). Der direkte Zugriff auf den Arbeitsplatz ĂŒber RDP löst unser Problem ideal, hat jedoch einen großen Nachteil: Es ist sehr unsicher, den RDP-Port fĂŒr das Internet offen zu halten. Daher biete ich im Folgenden eine einfache, aber zuverlĂ€ssige Schutzmethode an.Fernarbeit im BĂŒro. RDP, Port Knocking, Mikrotik: einfach und sicher

Da ich hĂ€ufig auf kleine Organisationen treffe, die Mikrotik-GerĂ€te fĂŒr den Internetzugang verwenden, werde ich im Folgenden zeigen, wie dies auf Mikrotik implementiert werden kann. Die Port-Klopf-Methode lĂ€sst sich jedoch leicht auch auf anderen, höherklassigen GerĂ€ten bei Ă€hnlichen Einstellungen des Eingangsrouters und der Firewall umsetzen.

Kurz und knapp ĂŒber Port Knocking. Der ideale externe Schutz eines Netzwerks, das mit dem Internet verbunden ist, besteht darin, dass alle Ressourcen und Ports von der Firewall nach außen geschlossen sind. Auch wenn der Router mit einer solchen konfigurierten Firewall auf eingehende Pakete aus dem Internet nicht reagiert, ĂŒberwacht er sie. Daher kann der Router so konfiguriert werden, dass er bei Erhalt einer bestimmten (Code-)Folge von Netzwerkpaketen an verschiedene Ports den Zugriff auf bestimmte Ressourcen (Ports, Protokolle usw.) fĂŒr die IP-Adresse, von der die Pakete eingingen, öffnet.

Nun zum Thema. Eine detaillierte Beschreibung der Firewall-Konfiguration auf Mikrotik werde ich nicht geben – im Internet gibt es dafĂŒr zahlreiche 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 beiden 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 beim Scannen der Ports in die schwarze Liste aufgenommen 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 in die Liste der Hosts hinzu, die den richtigen ersten Klopfcode auf den benötigten Port (19000) gesendet 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 Fallenports fĂŒr alle, die versuchen, Ihre Ports zu scannen, und bei Erkennung solcher Versuche wird ihre IP-Adresse fĂŒr 60 Minuten auf die schwarze Liste gesetzt, wĂ€hrend derer die ersten beiden Regeln solchen Hosts kein Zutritt zu den richtigen Ports ermöglichen;

Regel zwei:

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

setzt die IP fĂŒr 1 Minute auf die erlaubte Liste (genug, um eine Verbindung herzustellen), da ein zweiter korrekter Zugriff auf den gewĂŒnschten Port (16000) erfolgt ist;

Der nÀchste Befehl:

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

verschiebt unsere Regeln nach oben in der Kette der Firewall-Verarbeitung, da wir wahrscheinlich bereits verschiedene Blockierungsregeln haben, die verhindern, dass unsere neu erstellten Regeln funktionieren. Die erste Regel in MikroTik beginnt bei null, aber in meinem GerĂ€t war null mit der eingebauten Regel belegt, und ich konnte sie nicht verschieben - also habe ich sie auf 1 verschoben. Daher sehen wir uns unsere Einstellungen an - wo wir verschieben können und geben die gewĂŒnschte 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 normalen RDP-Port 3389 und die IP des benötigten Computers oder Terminalservers um. Solche Regeln erstellen wir fĂŒr alle erforderlichen internen Ressourcen, vorzugsweise mit nicht standardmĂ€ĂŸigen (und unterschiedlichen) externen Ports. Es ist natĂŒrlich, dass die IPs der internen Ressourcen entweder statisch oder auf DHCP festgelegt sein sollten. Server.

Jetzt ist unser MikroTik konfiguriert und wir benötigen ein einfaches Benutzerverfahren, um uns mit unserem internen RDP zu verbinden. Da wir hauptsÀchlich Windows-Benutzer haben, erstellen wir eine einfache .bat-Datei und nennen sie StartRDP.bat:

1.htm
1.rdp

enthÀlt entsprechend den folgenden Code:

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

Hier gibt es zwei Links zu fiktiven Bildern, die unter der Adresse my_router.sn.mynetname.net zu finden sind – diese Adresse nehmen wir aus dem DDNS-System des Mikrotik, nachdem wir dies in unserem Mikrotik aktiviert haben: Wir gehen ins MenĂŒ IP->Cloud – setzen das HĂ€kchen bei DDNS Enabled, klicken auf Anwenden und kopieren den DNS-Namen unseres Routers. Dies ist jedoch nur erforderlich, wenn die externe IP des Routers dynamisch ist oder eine Konfiguration mit mehreren Internetanbietern verwendet wird.

Der Port im ersten Link :19000 entspricht dem ersten Port, den wir ansprechen mĂŒssen, im zweiten Link entsprechend dem zweiten. Zwischen den Links befindet sich eine kurze Anleitung, die zeigt, was zu tun ist, falls unsere Verbindung aufgrund kurzer Netzwerkprobleme unterbrochen wird – wir aktualisieren die Seite, der RDP-Port öffnet sich wieder fĂŒr 1 Minute und unsere Sitzung wird wiederhergestellt. Auch der Text zwischen den img-Tags erzeugt eine Mikroverzögerung im Browser, die die Wahrscheinlichkeit verringert, dass das erste Paket den zweiten Port (16000) erreicht – in den zwei Wochen Nutzung (30 Personen) gab es bisher keine solchen VorfĂ€lle.

Weiter geht es mit der Datei 1.rdp, die wir entweder fĂŒr alle oder separat fĂŒr jeden Benutzer einrichten können (ich habe es so gemacht – es ist einfacher, zusĂ€tzlich 15 Minuten zu investieren, als mehrere Stunden mit Beratung zu verbringen fĂŒr diejenigen, die nicht zurechtkommen).

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

Zu den interessanten Einstellungen gehört hier use multimon:i:1 – dies aktiviert die Verwendung mehrerer Monitore – manchen ist das erforderlich, und sie wĂŒrden selbst nicht darauf kommen.

connection type:i:6 und networkautodetect:i:0 – da die meisten mit Internetgeschwindigkeiten ĂŒber 10 Mbit ausgestattet sind, aktivieren wir den Verbindungstyp 6 (lokales Netzwerk 10 Mbit und mehr) und deaktivieren networkautodetect, da bei der Standardeinstellung (auto) selbst eine seltene kleine Verzögerung im Netzwerk automatisch die Geschwindigkeit fĂŒr unsere Sitzung lange Zeit herabsetzt, was besonders in grafikintensiven Programmen spĂŒrbare Verzögerungen verursachen kann.

disable wallpaper:i:1 – wir deaktivieren das Hintergrundbild des Desktops.
username:s:myuserlogin – wir geben den Benutzernamen an, da ein erheblicher Teil unserer Benutzer nicht weiß, was ihr Login ist.
domain:s:mydomain – wir geben die Domain oder den Computernamen an.

Aber wenn wir uns die Aufgabe, ein Verbindungsverfahren zu erstellen, erleichtern wollen, 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

Auch ein wenig ĂŒber den RDP-Client in Windows: Microsoft hat einen langen Weg zur Optimierung des Protokolls und seiner Server- und Client-Seite zurĂŒckgelegt und viele nĂŒtzliche Funktionen implementiert - wie die UnterstĂŒtzung von Hardware-3D, die Optimierung der Bildschirmauflösung fĂŒr Ihren Monitor, Mehrbildschirmbetrieb und mehr. NatĂŒrlich wurde alles im RĂŒckwĂ€rtskompatibilitĂ€tsmodus implementiert, und wenn der Client Windows 7 ist und der Remote-PC Windows 10, wird RDP mit Protokollversion 7.0 funktionieren. Zum GlĂŒck kann man die RDP-Versionen auf neuere Versionen aktualisieren - beispielsweise die Protokollversion von 7.0 (Windows 7) auf 8.1 erhöhen. Daher sollten fĂŒr die Bequemlichkeit der Clients die Server-Versionen so weit wie möglich erhöht werden, und die Links zum Upgrade auf neue Versionen des RDP-Protokolls sollten bereitgestellt werden.

Letztendlich haben wir eine einfache und relativ sichere Technologie fĂŒr die Remoteverbindung zu einem Arbeits-PC oder Terminalserver. Aber fĂŒr eine sicherere Verbindung kann unser Port Knocking-Verfahren auf mehrere Ebenen komplizierter gemacht werden, indem Ports zur ÜberprĂŒfung hinzugefĂŒgt werden - man kann nach demselben Prinzip 3, 4, 5, 6
 Ports hinzufĂŒgen, und in diesem Fall wird ein direkter Zugriff auf Ihr Netzwerk fast unmöglich.

Dateivorlagen fĂŒr die Erstellung einer Remoteverbindung zu RDP.

Quelle: habr.com

60GB SSD 8Gb DDR4