Treball a distància a l'oficina. RDP, Port Knocking, Mikrotik: senzill i segur

A causa de la pandèmia del virus covid-19 i la quarantena general a molts països, l'única manera per a moltes empreses de continuar treballant és l'accés remot als llocs de treball a través d'Internet. Hi ha molts mètodes relativament segurs per al treball remot, però donada l'envergadura del problema, cal un mètode senzill perquè qualsevol usuari es connecti a l'oficina de manera remota i sense necessitat de paràmetres addicionals, explicacions, consultes tedioses i instruccions llargues. Aquest mètode és estimat per molts administradors RDP (Remote Desktop Protocol). Connectar-nos directament al lloc de treball mitjançant RDP soluciona idealment el nostre problema, tret d'una gran mosca a la pomada: mantenir el port RDP obert per a Internet és molt insegur. Per tant, a continuació proposo un mètode de protecció senzill però fiable.Treball a distància a l'oficina. RDP, Port Knocking, Mikrotik: senzill i segur

Com que sovint em trobo amb petites organitzacions on s'utilitzen dispositius Mikrotik com a accés a Internet, a continuació es mostrarà com implementar-ho a Mikrotik, però el mètode de protecció contra els cops de port s'implementa fàcilment en altres dispositius de classe superior amb configuracions d'encaminador d'entrada i tallafocs similars. .

Breument sobre Port Knocking. La protecció externa ideal d'una xarxa connectada a Internet és quan tots els recursos i ports estan tancats des de l'exterior per un tallafoc. I encara que un encaminador amb un tallafoc tan configurat no reacciona de cap manera als paquets que vénen de fora, els escolta. Per tant, podeu configurar l'encaminador de manera que quan es rep una determinada seqüència (codi) de paquets de xarxa en diferents ports, aquest (l'encaminador) per a la IP d'on provenen els paquets talli l'accés a determinats recursos (ports, protocols, etc.). etc.).

Ara al negoci. No faré una descripció detallada de la configuració del tallafoc a Mikrotik: Internet està ple de fonts d'alta qualitat per a això. Idealment, el tallafoc bloqueja tots els paquets entrants, però

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

Permet el trànsit entrant des de connexions relacionades establertes.
Ara hem configurat Port Knocking a 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

Ara amb més detall:

les dues primeres regles

/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

prohibir els paquets entrants d'adreces IP que es troben a la llista negra durant l'exploració de ports;

Tercera regla:

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

afegeix ip a la llista d'amfitrions que van fer el primer cop correcte al port correcte (19000);
Les quatre regles següents són:

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

creeu ports trampa per a aquells que vulguin escanejar els vostres ports i, si es detecten aquests intents, poseu a la llista negra la seva IP durant 60 minuts, durant els quals les dues primeres regles no donaran a aquests amfitrions l'oportunitat de trucar als ports correctes;

Següent regla:

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

posa ip a la llista permesa durant 1 minut (prou per establir una connexió), ja que el segon cop correcte es va fer al port desitjat (16000);

Següent comandament:

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

mou les nostres regles per la cadena de processament del tallafoc, ja que el més probable és que ja tinguem configurades diferents regles de denegació que impediran que funcionin les que acabem de crear. La primera regla de Mikrotik comença des de zero, però al meu dispositiu el zero estava ocupat per una regla integrada i era impossible moure'l; la vaig moure a 1. Per tant, mirem la nostra configuració: on podeu moure-la. i indiqueu el número desitjat.

Següent paràmetre:

/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

reenvia un port 33890 seleccionat arbitràriament al port RDP habitual 3389 i la ip de l'ordinador o servidor de terminal que necessitem. Creem aquestes regles per a tots els recursos interns necessaris, preferiblement establint ports externs no estàndard (i diferents). Naturalment, la ip dels recursos interns ha de ser estàtica o fixada al servidor DHCP.

Ara el nostre Mikrotik està configurat i necessitem un procediment senzill perquè l'usuari es connecti al nostre RDP intern. Com que tenim principalment usuaris de Windows, creem un fitxer bat simple i l'anomenem StartRDP.bat:

1.htm
1.rdp

respectivament 1.htm conté el codi següent:

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

conté dos enllaços a imatges imaginàries que es troben a my_router.sn.mynetname.net: prenem aquesta adreça del sistema Mikrotik DDNS després d'habilitar-la al nostre Mikrotik: aneu al menú IP-> Cloud - marqueu la casella de selecció DDNS Enabled, feu clic a Aplica i copieu el nom dns del nostre encaminador. Però això només és necessari quan la ip externa de l'encaminador és dinàmica o s'utilitza una configuració amb diversos proveïdors d'Internet.

El port del primer enllaç: 19000 correspon al primer port en el qual cal picar, al segon, respectivament, al segon. Entre els enllaços hi ha una instrucció breu que mostra què fer si de sobte la nostra connexió s'interromp a causa de problemes curts de xarxa: actualitzem la pàgina, el port RDP ens torna a obrir durant 1 minut i la nostra sessió es restaura. A més, el text entre les etiquetes img forma un microretard per al navegador, que redueix la probabilitat que el primer paquet s'entregui al segon port (16000) - fins ara no hi ha hagut casos d'aquest tipus en dues setmanes d'ús (30 gent).

A continuació ve el fitxer 1.rdp, que podem configurar-ne un per a tots o per separat per a cada usuari (jo vaig fer això: és més fàcil dedicar 15 minuts addicionals que unes poques hores consultant els que no ho van poder esbrinar)

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

dels paràmetres interessants aquí és l'ús multimon: i: 1 - això inclou l'ús de diversos monitors - alguns ho necessiten, però ells mateixos no pensaran en activar-lo.

tipus de connexió: i: 6 i detecció automàtica de xarxa: i: 0: com que la majoria d'Internet està per sobre de 10 Mbps, activeu el tipus de connexió 6 (xarxa local de 10 Mbps i superior) i desactiveu la detecció automàtica de xarxa, perquè si és per defecte (automàtic) , fins i tot una petita latència de xarxa poc freqüent estableix automàticament la nostra sessió a una velocitat lenta durant molt de temps, cosa que pot crear retards notables en el treball, especialment en programes de gràfics.

desactivar fons de pantalla: i: 1 - desactivar la imatge de l'escriptori
nom d'usuari:s:myuserlogin - especifiquem l'inici de sessió de l'usuari, ja que una part important dels nostres usuaris no coneixen el seu inici de sessió
domain:s:mydomain - especifiqueu el domini o el nom de l'ordinador

Però si volem simplificar la nostra tasca de crear un procediment de connexió, també podem utilitzar 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

També una mica sobre el client RDP a Windows: MS ha recorregut un llarg camí en l'optimització del protocol i les seves parts de servidor i client, ha implementat moltes funcions útils, com ara treballar amb maquinari 3D, optimitzar la resolució de pantalla per al monitor, multipantalla, etc. etcètera. Però, per descomptat, tot s'implementa en mode de compatibilitat enrere, i si el client és Windows 7 i l'ordinador remot és Windows 10, llavors RDP funcionarà amb la versió del protocol 7.0. Però l'avantatge és que podeu actualitzar les versions RDP a versions més recents; per exemple, podeu actualitzar la versió del protocol de la 7.0 (Windows 7) a la 8.1. Per tant, per a la comoditat dels clients, és necessari augmentar les versions de la part del servidor tant com sigui possible, així com eliminar els enllaços per actualitzar a noves versions dels clients del protocol RDP.

Com a resultat, disposem d'una tecnologia senzilla i relativament segura per a la connexió remota a un PC o servidor terminal que funcioni. Però per a una connexió més segura, el nostre mètode Port Knocking es pot fer més difícil d'atacar per diversos ordres de magnitud, afegint ports per comprovar - podeu afegir 3,4,5,6 ... un port segons la mateixa lògica , i en aquest cas una intrusió directa a la vostra xarxa serà gairebé impossible .

Fitxers en blanc per crear una connexió remota a RDP.

Font: www.habr.com

Afegeix comentari