Travail à distance au bureau. RDP, Port Knocking, Mikrotik : simple et sécurisé

En raison de la pandémie du virus covid-19 et de la quarantaine générale dans de nombreux pays, le seul moyen pour de nombreuses entreprises de continuer à travailler est l'accès à distance aux lieux de travail via Internet. Il existe de nombreuses méthodes relativement sûres pour le travail à distance - mais étant donné l'ampleur du problème, il faut une méthode qui soit simple pour que tout utilisateur puisse se connecter au bureau à distance et sans avoir besoin de paramètres supplémentaires, d'explications, de consultations fastidieuses et de longues instructions. Cette méthode est appréciée par de nombreux administrateurs RDP (Remote Desktop Protocol). La connexion directe à un poste de travail via RDP résout idéalement notre problème, à l'exception d'un gros problème : 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.Travail à distance au bureau. RDP, Port Knocking, Mikrotik : simple et sécurisé

Étant donné que je rencontre souvent de petites organisations où les appareils Mikrotik sont utilisés comme connexion Internet, je vais montrer ci-dessous comment l'implémenter sur Mikrotik, mais la méthode de protection Port Knocking peut facilement être implémentée sur d'autres appareils de classe supérieure avec des paramètres de routeur d'entrée similaires et pare-feu

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

Maintenant au point. Je ne donnerai pas de description détaillée de la configuration d'un pare-feu sur Mikrotik - Internet regorge de sources de qualité à ce sujet. 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 déjà établies (établies, associées).
Maintenant, nous configurons 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 en détail:

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 ont été mises sur liste noire lors de l'analyse des ports ;

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éez des ports pièges pour ceux qui souhaitent analyser vos ports, et lorsque de telles tentatives sont détectées, ils mettent leur adresse IP sur liste noire pendant 60 minutes, pendant lesquelles les deux premières règles ne donneront pas à ces hôtes la possibilité de frapper sur les bons ports ;

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 l'ip dans la liste des adresses autorisées pendant 1 minute (assez pour établir une connexion), puisque le deuxième coup correct est fait 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 nous aurons très probablement déjà configuré diverses règles d'interdiction qui empêcheront celles que nous venons de créer de fonctionner. La toute première règle dans Mikrotik commence à zéro, mais sur mon appareil, zéro était occupé par une règle intégrée et il était impossible de la déplacer - je l'ai déplacée vers 1. Par conséquent, nous regardons nos paramètres - où nous pouvons la déplacer et indiquez le numéro souhaité.

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 un port 33890 sélectionné au hasard vers un port RDP standard 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 définissant de préférence des ports externes non standard (et différents). Naturellement, l'IP des ressources internes doit être soit statique, soit attribuée à un serveur DHCP.

Notre Mikrotik est maintenant configuré et nous avons besoin d'une procédure simple permettant à l'utilisateur de se connecter à notre RDP interne. Comme nous avons principalement des utilisateurs Windows, nous créons un simple fichier bat et l'appelons StartRDP.bat :

1.htm
1.rdp

par conséquent, 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">

contient ici deux liens vers des images imaginaires qui se trouvent à l'adresse my_router.sn.mynetname.net - nous prenons cette adresse du système Mikrotik DDNS après l'avoir activé dans notre Mikrotik : allez dans le menu IP->Cloud - vérifiez DDNS activé case, cliquez sur Appliquer 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 le premier lien : 19000 correspond au premier port sur lequel il faut frapper, dans le second il correspond au second. Entre les liens se trouve une courte instruction qui montre quoi faire si soudainement notre connexion est interrompue en raison de brefs problèmes de réseau - nous actualisons la page, le port RDP est rouvert pour nous pendant 1 minute et notre session est restaurée. De plus, le texte entre les balises img crée un micro-retard pour le navigateur, ce qui réduit la probabilité que le premier paquet soit livré au deuxième port (16000 30) - jusqu'à présent, il n'y a eu aucun cas de ce type en deux semaines d'utilisation (XNUMX personnes).

Vient ensuite le fichier 1.rdp, que nous pouvons configurer un pour tout le monde ou séparément pour chaque utilisateur (c'est ce que j'ai fait - il est plus facile de passer 15 minutes de plus que plusieurs heures à consulter ceux qui n'arrivent pas à 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

L'un des paramètres intéressants ici est l'utilisation de multimon:i:1 - cela inclut l'utilisation de plusieurs moniteurs - certaines personnes en ont besoin, mais elles ne pensent pas à l'allumer elles-mêmes.

type de connexion : i:6 et networkautodetect :i:0 - puisque la majorité d'Internet est supérieure à 10 Mbits, activez le type de connexion 6 (réseau local de 10 Mbits et plus) et désactivez la détection automatique de réseau, car si la valeur par défaut est (auto), alors même une rare petite latence du réseau règle automatiquement la vitesse de notre session à une vitesse inférieure pendant une longue période, 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 l'image du bureau
username:s:myuserlogin - nous indiquons le login de l'utilisateur, car une partie importante de nos utilisateurs ne connaissent pas leur login
domain:s:mydomain - indiquez le nom du domaine ou de l'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

Un peu également sur le client RDP sous Windows : MS a parcouru un long chemin dans l'optimisation du protocole et de ses parties serveur et client, en implémentant de nombreuses fonctionnalités utiles - telles que le travail avec le matériel 3D, l'optimisation de la résolution d'écran pour votre moniteur, le multi-écran, etc. Mais bien sûr, tout est implémenté en mode de compatibilité ascendante 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 heureusement, vous pouvez mettre à jour les versions RDP vers des versions plus récentes - par exemple, vous pouvez mettre à niveau la version du protocole de 7.0 (Windows 7) à 8.1. Par conséquent, pour la commodité des clients, vous devez maximiser les versions de la partie serveur et également fournir des liens pour mettre à jour vers les nouvelles versions des clients du protocole RDP.

Nous disposons ainsi d’une technologie simple et relativement sécurisée pour la connexion à distance à un PC de travail ou à un serveur de terminaux. Mais pour une connexion plus sécurisée, notre méthode Port Knocking peut être rendue plus difficile à attaquer de plusieurs ordres de grandeur, en ajoutant des ports à vérifier - en utilisant la même logique, vous pouvez ajouter 3,4,5,6... ports et dans ce cas, une intrusion directe dans votre réseau sera quasiment impossible.

Préparations de fichiers pour créer une connexion à distance à RDP.

Source: habr.com

Ajouter un commentaire