Lucru de la distanță la birou. RDP, Port Knocking, Mikrotik: simplu și sigur

Din cauza pandemiei de virus covid-19 și a carantinei generale din multe țări, singura modalitate prin care multe companii pot continua să lucreze este accesul de la distanță la locurile de muncă prin internet. Există multe metode relativ sigure pentru lucrul la distanță - dar având în vedere amploarea problemei, ceea ce este nevoie este o metodă simplă pentru orice utilizator să se conecteze la birou de la distanță și fără a fi nevoie de setări suplimentare, explicații, consultări obositoare și îndelungate. instrucțiuni. Această metodă este îndrăgită de mulți administratori RDP (Remote Desktop Protocol). Conectarea directă la o stație de lucru prin RDP rezolvă în mod ideal problema noastră, cu excepția unei mari muscă în unguent - menținerea portului RDP deschis pentru Internet este foarte nesigur. Prin urmare, mai jos propun o metodă simplă, dar de încredere de protecție.Lucru de la distanță la birou. RDP, Port Knocking, Mikrotik: simplu și sigur

Deoarece întâlnesc adesea organizații mici în care dispozitivele Mikrotik sunt folosite ca conexiune la Internet, mai jos voi arăta cum să implementez acest lucru pe Mikrotik, dar metoda de protecție împotriva lovirii portului poate fi implementată cu ușurință pe alte dispozitive de clasă superioară cu setări similare de router de intrare și firewall

Pe scurt despre Port Knocking. Protecția externă ideală a unei rețele conectate la Internet este atunci când toate resursele și porturile sunt închise din exterior de un firewall. Și deși un router cu un firewall atât de configurat nu reacționează în niciun fel la pachetele care vin din exterior, le ascultă. Prin urmare, puteți configura routerul astfel încât atunci când primește o anumită secvență (cod) de pachete de rețea pe diferite porturi, acesta (routerul) pentru IP-ul de unde provin pachetele, să refuze accesul la anumite resurse (porturi, protocoale etc. .).

Acum la obiect. Nu voi oferi o descriere detaliată a instalării unui firewall pe Mikrotik - Internetul este plin de surse de calitate pentru aceasta. În mod ideal, un firewall blochează toate pachetele primite, dar

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

Permite traficul de intrare de la conexiuni deja stabilite (stabilite, asociate).
Acum configuram Port Knocking pe 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

Acum mai detaliat:

primele două reguli

/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

interziceți pachetele primite de la adrese IP care au fost incluse pe lista neagră în timpul scanării portului;

A treia regulă:

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

adaugă ip la lista de gazde care au făcut prima lovitură corectă pe portul dorit (19000);
Următoarele patru reguli:

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

creați porturi capcană pentru cei care doresc să vă scaneze porturile și, atunci când sunt detectate astfel de încercări, își pun pe lista neagră IP-ul timp de 60 de minute, timp în care primele două reguli nu le vor oferi astfel de gazde posibilitatea de a bate la porturile corecte;

Următoarea regulă:

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

pune ip-ul in lista celor permise timp de 1 minut (suficient pentru a stabili o conexiune), deoarece a doua bataie corecta se face pe portul dorit (16000);

Următoarea comandă:

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

mută regulile noastre în lanțul de procesare firewall, deoarece cel mai probabil vom avea deja configurate diverse reguli de interzicere care le vor împiedica pe cele nou create de noi să funcționeze. Prima regulă din Mikrotik începe de la zero, dar pe dispozitivul meu zero era ocupat de o regulă încorporată și era imposibil să o muți - am mutat-o ​​la 1. Prin urmare, ne uităm la setările noastre - unde o putem muta și indicați numărul dorit.

Următoarea setare:

/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

redirecționează un port 33890 selectat aleatoriu către un port RDP obișnuit 3389 și IP-ul computerului sau al serverului terminal de care avem nevoie. Creăm astfel de reguli pentru toate resursele interne necesare, de preferință stabilind porturi externe non-standard (și diferite). Desigur, IP-ul resurselor interne trebuie să fie fie static, fie atribuit unui server DHCP.

Acum Mikrotik-ul nostru este configurat și avem nevoie de o procedură ușoară pentru ca utilizatorul să se conecteze la RDP-ul nostru intern. Deoarece avem în mare parte utilizatori Windows, creăm un fișier bat simplu și îl numim StartRDP.bat:

1.htm
1.rdp

în consecință, 1.htm conține următorul cod:

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

aici conține două link-uri către imagini imaginare care se află la adresa my_router.sn.mynetname.net - luăm această adresă din sistemul Mikrotik DDNS după ce am activat acest lucru în Mikrotik nostru: accesați meniul IP->Cloud - verificați DDNS Enabled caseta, faceți clic pe Aplicare și copiați numele dns al routerului nostru. Dar acest lucru este necesar doar atunci când IP-ul extern al routerului este dinamic sau se utilizează o configurație cu mai mulți furnizori de internet.

Portul din prima legătură: 19000 corespunde primului port pe care trebuie să bateți, în al doilea corespunde celui de-al doilea. Între legături există o scurtă instrucțiune care arată ce trebuie făcut dacă brusc conexiunea noastră este întreruptă din cauza unor probleme scurte de rețea - reîmprospătăm pagina, portul RDP ne este redeschis timp de 1 minut și sesiunea noastră este restabilită. De asemenea, textul dintre etichetele img creează o micro-întârziere pentru browser, ceea ce reduce probabilitatea ca primul pachet să fie livrat pe al doilea port (16000) - până acum nu au existat astfel de cazuri în două săptămâni de utilizare (30 oameni).

Urmează fișierul 1.rdp, pe care îl putem configura unul pentru toată lumea sau separat pentru fiecare utilizator (așa am făcut - este mai ușor să petreci 15 minute în plus decât câteva ore consultând cei care nu și-au dat seama)

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

Una dintre setările interesante de aici este utilizarea multimon:i:1 - aceasta include utilizarea mai multor monitoare - unii oameni au nevoie de acest lucru, dar nu se gândesc să îl activeze singuri.

tip de conexiune:i:6 și networkautodetect:i:0 - deoarece majoritatea internetului este peste 10 Mbit, atunci activați tipul de conexiune 6 (rețea locală 10 Mbit și mai sus) și dezactivați networkautodetect, deoarece dacă implicit este (auto), atunci chiar și o latență mică de rețea rară setează automat viteza pentru sesiunea noastră la o viteză mai mică pentru o perioadă lungă de timp, ceea ce poate crea întârzieri vizibile în lucru, în special în programele de grafică.

disable wallpaper:i:1 - dezactivați imaginea de pe desktop
username:s:myuserlogin - indicăm datele de conectare ale utilizatorului, deoarece o parte semnificativă a utilizatorilor noștri nu își cunosc datele de conectare
domain:s:mydomain - indicați domeniul sau numele computerului

Dar dacă dorim să simplificăm sarcina de a crea o procedură de conectare, putem folosi și 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

De asemenea, puțin despre clientul RDP în Windows: MS a parcurs un drum lung în optimizarea protocolului și a părților sale de server și client, implementând multe caracteristici utile - cum ar fi lucrul cu hardware 3D, optimizarea rezoluției ecranului pentru monitorul dvs., multi-ecran, etc. Dar, desigur, totul este implementat în modul de compatibilitate inversă și dacă clientul este Windows 7 și computerul la distanță este Windows 10, atunci RDP va funcționa folosind versiunea de protocol 7.0. Dar, din fericire, puteți actualiza versiunile RDP la versiuni mai recente - de exemplu, puteți actualiza versiunea de protocol de la 7.0 (Windows 7) la 8.1. Prin urmare, pentru confortul clienților, trebuie să maximizați versiunile părții server și, de asemenea, să furnizați link-uri pentru actualizarea la noile versiuni ale clienților de protocol RDP.

Ca urmare, avem o tehnologie simplă și relativ sigură pentru conectarea de la distanță la un PC de serviciu sau un server terminal. Dar pentru o conexiune mai sigură, metoda noastră Port Knocking poate fi mai dificil de atacat cu mai multe ordine de mărime, prin adăugarea de porturi de verificat - folosind aceeași logică, puteți adăuga 3,4,5,6... porturi și în acest caz, intruziunea directă în rețeaua dvs. va fi aproape imposibilă.

Fișier pregătiți pentru crearea unei conexiuni la distanță la RDP.

Sursa: www.habr.com

Adauga un comentariu