Travail à distance au bureau. RDP, Port Knocking, Mikrotik: simple et sûr

Dans le cadre de la pandémie du virus covid-19 et de la quarantaine universelle dans de nombreux pays, la seule issue pour de nombreuses entreprises pour continuer à travailler est l'accès à distance aux emplois via Internet. Il existe de nombreuses méthodes relativement sûres pour le travail à distance - mais étant donné l'ampleur du problème, vous avez besoin d'une méthode simple pour tout utilisateur de se connecter à distance au bureau et sans avoir besoin de paramètres supplémentaires, d'explications, de consultations fastidieuses et de longues instructions. Cette méthode est la préférée de nombreux administrateurs RDP (Remote Desktop Protocol). La connexion directe au lieu de travail via RDP résout idéalement notre problème, à l'exception d'une grosse mouche dans la pommade - garder le port RDP ouvert pour Internet est très dangereux. Par conséquent, je propose ci-dessous une méthode de protection simple mais fiable.image

Étant donné que je rencontre souvent de petites organisations où des appareils Mikrotik sont utilisés comme accès Internet, il sera montré ci-dessous comment implémenter cela sur Mikrotik, mais la méthode de protection Port Knocking est facilement implémentée sur d'autres appareils de classe supérieure avec les mêmes paramètres pour le routeur d'entrée et pare-feu

En bref sur Port Knocking . Une protection externe idéale pour un réseau connecté à Internet est lorsque toutes les ressources et les ports sont fermés en externe par un pare-feu. Et bien qu'un routeur avec un pare-feu configuré de ce type ne réagisse en aucune façon aux paquets provenant de l'extérieur, il les écoute. Par conséquent, vous pouvez configurer le routeur de sorte que lorsqu'une certaine séquence (code) de paquets réseau est reçue sur différents ports, il (le routeur) pour IP d'où proviennent les paquets ouvre l'accès à certaines ressources (ports, protocoles, etc.).

Maintenant au point. Je ne ferai pas une description détaillée des paramètres du pare-feu sur Mikrotik - Internet regorge de sources de haute qualité pour cela. Idéalement, un pare-feu bloque tous les paquets entrants, mais

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


Autorise le trafic entrant à partir de connexions établies (liées).
Configurez maintenant Port Knocking sur 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

Maintenant plus: les

deux premières règles

/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

interdire les paquets entrants provenant d'adresses IP qui sont sur liste noire lors de l'analyse des ports;

La troisième règle:

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

Ajoute ip à la liste des hôtes qui ont effectué le premier coup correct sur le port souhaité (19000);
Les quatre règles suivantes:

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

créer des ports de déroutement pour ceux qui souhaitent analyser vos ports, et lorsque de telles tentatives sont détectées, mettez leur adresse IP sur la liste noire pendant 60 minutes, pendant lesquelles les deux premières règles empêcheront ces hôtes de frapper sur les ports appropriés;

La règle suivante:

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

met ip dans la liste des permis pendant 1 minute (suffisant pour établir une connexion), car le deuxième coup correct est effectué sur le port souhaité (16000);

Commande suivante:

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

déplace nos règles vers le haut de la chaîne de traitement du pare-feu, car très probablement, nous aurons déjà configuré différentes règles d'interdiction qui empêcheront les nouvelles de fonctionner. La toute première règle dans Mikrotik part de zéro, mais sur mon appareil, zéro était occupé par la règle intégrée et il était impossible de se déplacer - je suis passé à 1. Par conséquent, nous examinons nos paramètres - où vous pouvez vous déplacer et spécifier le nombre souhaité.

Le paramètre suivant:

/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

transfère le port 33890 sélectionné au hasard vers un port RDP régulier 3389 et l'adresse IP de l'ordinateur ou du serveur de terminaux dont nous avons besoin. Nous créons de telles règles pour toutes les ressources internes nécessaires, en exposant de préférence les ports externes non standard (et différents). Naturellement, l'ip des ressources internes doit être statique ou sécurisée sur un serveur DHCP.

Maintenant, notre Mikrotik est configuré et nous avons besoin d'une procédure simple pour que l'utilisateur se connecte à notre RDP interne. Étant donné que nous avons principalement des utilisateurs Windows, nous créons un simple fichier bat et l'appelons StartRDP.bat:

1.htm
1.rdp

en conséquence, 1.htm contient le code suivant:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
       RDP
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

il contient deux liens vers des images imaginaires qui se trouvent à l'adresse my_router.sn.mynetname.net - nous prenons cette adresse du système DDNS de Mikrotik en le pré-activant dans notre Mikrotik: allez dans le menu IP-> Cloud - cochez la case DDNS Enabled, cliquez sur Apply et copiez le nom DNS de notre routeur. Mais cela n'est nécessaire que lorsque l'IP externe du routeur est dynamique ou qu'une configuration avec plusieurs fournisseurs Internet est utilisée.

Le port dans la première liaison: 19000 correspond au premier port sur lequel vous devez frapper, dans le second, respectivement, le second. Entre les liens est une courte instruction qui montre quoi faire si notre connexion se brise soudainement en raison de courts problèmes de réseau - nous rafraîchissons la page, le port RDP s'ouvre à nouveau pour nous pendant 1 minute et notre session est restaurée. De plus, le texte entre les balises img forme un micro retard pour le navigateur, ce qui réduit la probabilité que le premier paquet soit livré au deuxième port (16000) - jusqu'à présent, il n'y a pas eu de tels cas en deux semaines d'utilisation (30 personnes).

Ensuite, le fichier 1.rdp, que nous pouvons configurer un pour tous ou séparément pour chaque utilisateur (je l'ai fait - il est plus facile de passer 15 minutes supplémentaires que plusieurs heures pour consulter ceux qui n'ont pas pu le comprendre)

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

des paramètres intéressants ici utilisent multimon: i: 1 - cela inclut l'utilisation de plusieurs moniteurs - certains en ont besoin, mais ils ne penseront pas à l'allumer eux-mêmes.

type de connexion: i: 6 et networkautodetect: i: 0 - puisque la majorité d'Internet est supérieure à 10 Mbps, activez le type de connexion 6 (réseau local 10 Mbps et supérieur) et désactivez networkautodetect, car s'il est (auto) par défaut, il est même rare le retard du réseau définit automatiquement et de façon permanente une vitesse sous-estimée pour notre session, ce qui peut créer des retards notables dans le travail, en particulier dans les programmes graphiques.

désactiver le fond d'écran: i: 1 - désactiver le
nom d'utilisateur de l' image de bureau : s: myuserlogin - spécifier le nom d'utilisateur, car une partie importante de nos utilisateurs ne connaissent pas leur nom d'utilisateur
domain: s: mydomain - spécifiez le nom de domaine ou d'ordinateur

Mais si nous voulons simplifier la tâche de création d'une procédure de connexion, nous pouvons également utiliser PowerShell - 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

Également un peu sur le client RDP dans Windows: MS a parcouru un long chemin pour optimiser le protocole et ses parties serveur et client, a mis en œuvre de nombreuses fonctionnalités utiles - telles que le travail avec du matériel 3D, l'optimisation de la résolution d'écran pour votre moniteur, multi-écran, etc. Mais bien sûr, tout est implémenté en mode de compatibilité descendante et si le client est Windows 7 et le PC distant est Windows 10, alors RDP fonctionnera en utilisant la version 7.0 du protocole. Mais l'avantage est que vous pouvez mettre à niveau les versions RDP vers des versions plus récentes - par exemple, vous pouvez mettre à niveau la version du protocole de 7.0 (Windows 7) vers 8.1. Par conséquent, pour la commodité des clients, il est nécessaire de maximiser la version du côté serveur, ainsi que de supprimer les liens pour mettre à niveau vers les nouvelles versions des clients du protocole RDP.

En conséquence, nous avons une technologie simple et relativement sûre pour la connexion à distance à un PC ou à un serveur terminal fonctionnel. Mais pour une connexion plus sécurisée, notre méthode Port Knocking peut être compliquée pour des attaques de plusieurs ordres de grandeur, en ajoutant des ports pour vérification - vous pouvez ajouter 3,4,5,6 ... la même logique et dans ce cas une intrusion directe dans votre réseau sera presque impossible .

Fichiers vierges pour créer une connexion à distance à RDP .

All Articles