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

Aufgrund der Covid-19-Virus-Pandemie und der allgemeinen Quarantäne in vielen Ländern ist für viele Unternehmen die einzige Möglichkeit, ihre Arbeit fortzusetzen, der Fernzugriff auf Arbeitsplätze über das Internet. Es gibt viele relativ sichere Methoden für die Remote-Arbeit – angesichts des Ausmaßes des Problems ist jedoch eine einfache Methode erforderlich, mit der sich jeder Benutzer aus der Ferne mit dem Büro verbinden kann, ohne dass zusätzliche Einstellungen, Erklärungen, langwierige Beratungen und lange Anweisungen erforderlich sind. Diese Methode ist bei vielen Administratoren beliebt: RDP (Remote Desktop Protocol). Die direkte Verbindung zum Arbeitsplatz über RDP löst im Idealfall unser Problem, bis auf einen großen Wermutstropfen: Den RDP-Port für das Internet offen zu halten, ist sehr unsicher. Daher schlage ich im Folgenden eine einfache, aber zuverlässige Schutzmethode vor.Fernarbeit im Büro. RDP, Port Knocking, Mikrotik: einfach und sicher

Da ich häufig auf kleine Organisationen stoße, in denen Mikrotik-Geräte als Internetzugang verwendet werden, wird im Folgenden gezeigt, wie dies auf Mikrotik implementiert wird. Die Port-Knocking-Schutzmethode lässt sich jedoch problemlos auf anderen höherklassigen Geräten mit ähnlichen Eingaberoutereinstellungen und Firewall implementieren .

Kurz über Port Knocking. Der ideale äußere Schutz eines mit dem Internet verbundenen Netzwerks besteht darin, dass alle Ressourcen und Ports von außen durch eine Firewall geschlossen werden. Und obwohl ein Router mit einer so konfigurierten Firewall in keiner Weise auf Pakete reagiert, die von außen kommen, hört er ihnen zu. Daher können Sie den Router so konfigurieren, dass, wenn eine bestimmte (Code-)Sequenz von Netzwerkpaketen an verschiedenen Ports empfangen wird, er (der Router) für die IP, von der die Pakete kamen, den Zugriff auf bestimmte Ressourcen (Ports, Protokolle, usw.).

Nun zum Geschäft. Ich werde nicht auf eine detaillierte Beschreibung der Firewall-Einstellungen auf Mikrotik eingehen – das Internet ist voll von hochwertigen Quellen dafür. Im Idealfall blockiert die Firewall alle eingehenden Pakete, aber

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

Lässt eingehenden Datenverkehr von bestehenden, zugehörigen Verbindungen zu.
Jetzt richten wir Port Knocking auf Mikrotik ein:

/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 genauer:

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

Eingehende Pakete von IP-Adressen verbieten, die beim Port-Scanning auf der schwarzen Liste stehen.

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 IP zur Liste der Hosts hinzu, die beim ersten Mal richtig auf den richtigen Port (19000) geklopft 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 Sie Trap-Ports für diejenigen, die Ihre Ports scannen möchten, und wenn solche Versuche erkannt werden, setzen Sie deren IP für 60 Minuten auf die schwarze Liste, wobei die ersten beiden Regeln solchen Hosts nicht die Möglichkeit geben, an den richtigen Ports anzuklopfen;

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

setzt IP für 1 Minute in die Liste der erlaubten IP-Adressen (ausreichend, um eine Verbindung herzustellen), da der zweite richtige Port auf dem gewünschten Port (16000) geklopft wurde;

Nächster Befehl:

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

verschiebt unsere Regeln in der Firewall-Verarbeitungskette nach oben, da höchstwahrscheinlich bereits verschiedene Ablehnungsregeln konfiguriert sind, die verhindern, dass unsere neu erstellten Regeln funktionieren. Die allererste Regel in Mikrotik beginnt bei Null, aber auf meinem Gerät war Null durch eine eingebaute Regel belegt und es war unmöglich, sie zu verschieben – ich habe sie auf 1 verschoben. Deshalb schauen wir uns unsere Einstellungen an – wohin man sie verschieben kann und geben Sie die gewünschte Nummer an.

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 einen willkürlich ausgewählten Port 33890 an den üblichen RDP-Port 3389 und die IP des von uns benötigten Computers oder Terminalservers weiter. Wir erstellen solche Regeln für alle notwendigen internen Ressourcen und legen vorzugsweise nicht standardmäßige (und unterschiedliche) externe Ports fest. Natürlich muss die IP der internen Ressourcen entweder statisch oder auf dem DHCP-Server festgelegt sein.

Jetzt ist unser Mikrotik konfiguriert und wir benötigen ein einfaches Verfahren, damit der Benutzer eine Verbindung zu unserem internen RDP herstellen kann. Da wir hauptsächlich Windows-Benutzer haben, erstellen wir eine einfache Bat-Datei und nennen sie StartRDP.bat:

1.htm
1.rdp

bzw. 1.htm enthält den folgenden Code:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
нажмите обновить страницу для повторного захода по RDP
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

Es enthält zwei Links zu imaginären Bildern, die sich unter my_router.sn.mynetname.net befinden. Diese Adresse übernehmen wir aus dem Mikrotik-DDNS-System, nachdem wir sie in unserem Mikrotik aktiviert haben: Gehen Sie zum Menü IP->Cloud – aktivieren Sie das Kontrollkästchen DDNS aktiviert. Klicken Sie auf „Übernehmen“ und kopieren Sie den DNS-Namen unseres Routers. Dies ist aber nur dann notwendig, wenn die externe IP des Routers dynamisch ist oder eine Konfiguration mit mehreren Internetprovidern genutzt wird.

Der Port im ersten Link: 19000 entspricht dem ersten Port, an den Sie klopfen müssen, im zweiten bzw. dem zweiten. Zwischen den Links gibt es eine kurze Anleitung, die zeigt, was zu tun ist, wenn unsere Verbindung aufgrund kurzer Netzwerkprobleme plötzlich unterbrochen wird – wir aktualisieren die Seite, der RDP-Port öffnet sich für 1 Minute wieder für uns und unsere Sitzung wird wiederhergestellt. Außerdem bildet der Text zwischen den img-Tags eine Mikroverzögerung für den Browser, was die Wahrscheinlichkeit verringert, dass das erste Paket an den zweiten Port (16000) zugestellt wird – bisher gab es in zwei Wochen der Nutzung (30) keine derartigen Fälle Menschen).

Als nächstes kommt die 1.rdp-Datei, die wir einzeln für alle oder separat für jeden Benutzer konfigurieren können (ich habe das gemacht – es ist einfacher, zusätzliche 15 Minuten aufzuwenden, als ein paar Stunden damit zu verbringen, diejenigen zu konsultieren, die es nicht herausfinden konnten).

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 der interessanten Einstellungen hier ist die Verwendung von multimon: i: 1 – dazu gehört die Verwendung mehrerer Monitore – manche brauchen dies, aber sie selbst werden nicht daran denken, es einzuschalten.

Verbindungstyp: i: 6 und networkautodetect: i: 0 – da der Großteil des Internets über 10 Mbit/s liegt, dann schalten Sie Verbindungstyp 6 (lokales Netzwerk 10 Mbit/s und mehr) ein und deaktivieren Sie networkautodetect, denn wenn standardmäßig (automatisch) , dann setzt selbst eine seltene kleine Netzwerklatenz unsere Sitzung automatisch für längere Zeit auf eine langsame Geschwindigkeit, was insbesondere bei Grafikprogrammen zu spürbaren Verzögerungen bei der Arbeit führen kann.

Hintergrundbild deaktivieren: i: 1 – Deaktivieren Sie das Desktop-Bild
username:s:myuserlogin – wir geben das Benutzer-Login an, da ein erheblicher Teil unserer Benutzer ihr Login nicht kennt
domain:s:mydomain – Geben Sie den Domänen- oder Computernamen an

Wenn wir uns jedoch die Aufgabe, einen Verbindungsvorgang zu erstellen, vereinfachen möchten, können wir PowerShell - StartRDP.ps1 verwenden

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: MS hat bei der Optimierung des Protokolls und seiner Server- und Client-Teile große Fortschritte gemacht und viele nützliche Funktionen implementiert – wie z. B. die Arbeit mit Hardware-3D, die Optimierung der Bildschirmauflösung für Ihren Monitor, Multiscreen, usw. Aber natürlich ist alles im Abwärtskompatibilitätsmodus implementiert, und wenn der Client Windows 7 und der Remote-PC Windows 10 ist, funktioniert RDP mit der Protokollversion 7.0. Der Vorteil besteht jedoch darin, dass Sie RDP-Versionen auf neuere Versionen aktualisieren können – Sie können beispielsweise die Protokollversion von 7.0 (Windows 7) auf 8.1 aktualisieren. Aus Gründen der Benutzerfreundlichkeit ist es daher erforderlich, die Versionen des Serverteils so weit wie möglich zu erhöhen und Links zum Upgrade auf neue Versionen des RDP-Protokolls für Clients zu löschen.

Dadurch verfügen wir über eine einfache und relativ sichere Technologie für die Fernverbindung zu einem funktionierenden PC oder Terminalserver. Für eine sicherere Verbindung kann der Angriff unserer Port-Knocking-Methode jedoch um mehrere Größenordnungen erschwert werden, indem zu überprüfende Ports hinzugefügt werden – Sie können 3,4,5,6 ... einen Port nach der gleichen Logik hinzufügen , und in diesem Fall ist ein direkter Eingriff in Ihr Netzwerk nahezu unmöglich.

Leere Dateien zum Erstellen einer Remote-Verbindung zu RDP.

Source: habr.com

Kommentar hinzufügen