Malayong trabaho sa opisina. RDP, Port Knocking, Mikrotik: simple at secure

Dahil sa pandemya ng virus ng covid-19 at pangkalahatang kuwarentenas sa maraming bansa, ang tanging paraan para magpatuloy sa pagtatrabaho ang maraming kumpanya ay ang malayuang pag-access sa mga lugar ng trabaho sa pamamagitan ng Internet. Mayroong maraming medyo ligtas na mga pamamaraan para sa malayong trabaho - ngunit dahil sa laki ng problema, isang simpleng paraan para sa sinumang gumagamit na malayuang kumonekta sa opisina ay kailangan at hindi nangangailangan ng karagdagang mga setting, paliwanag, nakakapagod na konsultasyon at mahabang tagubilin. Ang pamamaraang ito ay minamahal ng maraming admin na RDP (Remote Desktop Protocol). Ang direktang pagkonekta sa lugar ng trabaho sa pamamagitan ng RDP ay perpektong malulutas ang aming problema, maliban sa isang malaking langaw sa ointment - ang pagpapanatiling bukas ng RDP port para sa Internet ay lubhang hindi ligtas. Samakatuwid, sa ibaba ay nagmumungkahi ako ng isang simple ngunit maaasahang paraan ng proteksyon.Malayong trabaho sa opisina. RDP, Port Knocking, Mikrotik: simple at secure

Dahil madalas akong nakakatagpo ng mga maliliit na organisasyon kung saan ginagamit ang mga device ng Mikrotik bilang Internet access, sa ibaba ay ipapakita kung paano ito ipatupad sa Mikrotik, ngunit ang paraan ng proteksyon ng Port Knocking ay madaling ipatupad sa iba pang mas mataas na klase na mga device na may katulad na mga setting ng input router at firewall .

Maikling tungkol sa Port Knocking. Ang perpektong panlabas na proteksyon ng isang network na konektado sa Internet ay kapag ang lahat ng mga mapagkukunan at port ay sarado mula sa labas ng isang firewall. At kahit na ang isang router na may tulad na naka-configure na firewall ay hindi tumutugon sa anumang paraan sa mga packet na nagmumula sa labas, nakikinig ito sa kanila. Samakatuwid, maaari mong i-configure ang router upang kapag ang isang tiyak na (code) na pagkakasunud-sunod ng mga packet ng network ay natanggap sa iba't ibang mga port, ito (ang router) para sa IP kung saan nanggaling ang mga packet ay pinutol ang pag-access sa ilang mga mapagkukunan (mga port, protocol, atbp.).

Ngayon sa negosyo. Hindi ako gagawa ng isang detalyadong paglalarawan ng mga setting ng firewall sa Mikrotik - ang Internet ay puno ng mataas na kalidad na mga mapagkukunan para dito. Sa isip, hinaharangan ng firewall ang lahat ng mga papasok na packet, ngunit

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

Nagbibigay-daan sa papasok na trapiko mula sa mga naitatag at nauugnay na koneksyon.
Ngayon nag-set up kami ng Port Knocking sa 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

Ngayon sa mas detalyado:

unang dalawang panuntunan

/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

ipagbawal ang mga papasok na packet mula sa mga IP address na naka-blacklist sa panahon ng pag-scan ng port;

Ikatlong panuntunan:

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

nagdadagdag ng ip sa listahan ng mga host na gumawa ng tamang unang katok sa tamang port (19000);
Ang susunod na apat na panuntunan ay:

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

lumikha ng mga port ng bitag para sa mga gustong i-scan ang iyong mga port, at kung matukoy ang gayong mga pagtatangka, i-blacklist ang kanilang ip sa loob ng 60 minuto, kung saan ang unang dalawang panuntunan ay hindi magbibigay ng pagkakataon sa mga naturang host na kumatok sa mga tamang port;

Susunod na panuntunan:

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

inilalagay ang ip sa pinahihintulutang listahan sa loob ng 1 minuto (sapat na magtatag ng isang koneksyon), dahil ang pangalawang tamang katok ay ginawa sa nais na port (16000);

Ang sumusunod na utos:

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

inililipat ang aming mga panuntunan sa kadena ng pagpoproseso ng firewall, dahil malamang na magkakaroon na kami ng iba't ibang mga tuntunin sa pagtanggi na na-configure na pipigil sa aming mga bagong likha na gumana. Ang pinakaunang panuntunan sa Mikrotik ay nagsisimula mula sa zero, ngunit sa aking device zero ay inookupahan ng isang built-in na panuntunan at imposibleng ilipat ito - inilipat ko ito sa 1. Samakatuwid, tinitingnan namin ang aming mga setting - kung saan maaari mong ilipat ito at ipahiwatig ang nais na numero.

Susunod na setting:

/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

nagpapasa ng arbitraryong napiling port 33890 sa karaniwang RDP port 3389 at ang ip ng computer o terminal server na kailangan namin. Gumagawa kami ng mga ganoong panuntunan para sa lahat ng kinakailangang panloob na mapagkukunan, mas mainam na itakda ang hindi karaniwan (at iba't ibang) panlabas na port. Natural, ang ip ng mga panloob na mapagkukunan ay dapat na static o naayos sa DHCP server.

Ngayon ang aming Mikrotik ay na-configure at kailangan namin ng isang simpleng pamamaraan para sa gumagamit upang kumonekta sa aming panloob na RDP. Dahil higit sa lahat mayroon kaming mga gumagamit ng Windows, gumagawa kami ng isang simpleng bat file at pinangalanan itong StartRDP.bat:

1.htm
1.rdp

ayon sa pagkakabanggit, naglalaman ang 1.htm ng sumusunod na code:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ страницу для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π·Π°Ρ…ΠΎΠ΄Π° ΠΏΠΎ RDP
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

naglalaman ito ng dalawang link sa mga haka-haka na larawan na matatagpuan sa my_router.sn.mynetname.net - kinuha namin ang address na ito mula sa sistema ng Mikrotik DDNS pagkatapos paganahin ito sa aming Mikrotik: pumunta sa IP-> Cloud na menu - suriin ang DDNS Enabled checkbox, click Apply at kopyahin ang dns name ng aming router. Ngunit ito ay kinakailangan lamang kapag ang panlabas na ip ng router ay dynamic o isang configuration na may ilang mga Internet provider ay ginagamit.

Ang port sa unang link: 19000 ay tumutugma sa unang port kung saan kailangan mong kumatok, sa pangalawa, ayon sa pagkakabanggit, sa pangalawa. Sa pagitan ng mga link ay may isang maikling pagtuturo na nagpapakita kung ano ang gagawin kung biglang naputol ang aming koneksyon dahil sa maikling mga problema sa network - nire-refresh namin ang pahina, ang RDP port ay muling magbubukas para sa amin sa loob ng 1 minuto at ang aming session ay naibalik. Gayundin, ang teksto sa pagitan ng mga img tag ay bumubuo ng isang micro-delay para sa browser, na binabawasan ang posibilidad na ang unang packet ay maihatid sa pangalawang port (16000) - sa ngayon ay wala pang ganitong mga kaso sa dalawang linggo ng paggamit (30 mga tao).

Susunod ay ang 1.rdp file, na maaari naming i-configure ang isa para sa lahat o hiwalay para sa bawat user (ginawa ko ito - mas madaling gumugol ng dagdag na 15 minuto kaysa sa ilang oras sa pagkonsulta sa mga hindi maisip ito)

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

sa mga kagiliw-giliw na setting dito ay ang paggamit ng multimon: i: 1 - kabilang dito ang paggamit ng maramihang mga monitor - kailangan ito ng ilan, ngunit sila mismo ay hindi mag-iisip na i-on ito.

uri ng koneksyon: i: 6 at networkautodetect: i: 0 - dahil ang karamihan sa Internet ay higit sa 10 Mbps, pagkatapos ay i-on ang uri ng koneksyon 6 (lokal na network 10 Mbps at mas mataas) at i-off ang networkautodetect, dahil kung sa pamamagitan ng default (auto) , pagkatapos kahit na ang isang bihirang maliit na latency ng network ay awtomatikong itinatakda ang aming session sa isang mabagal na bilis sa loob ng mahabang panahon, na maaaring lumikha ng mga kapansin-pansing pagkaantala sa trabaho, lalo na sa mga graphics program.

huwag paganahin ang wallpaper: i: 1 - huwag paganahin ang larawan sa desktop
username:s:myuserlogin - tinukoy namin ang login ng user, dahil hindi alam ng isang mahalagang bahagi ng aming mga user ang kanilang login
domain:s:mydomain - tukuyin ang domain o pangalan ng computer

Ngunit kung gusto naming pasimplehin ang aming gawain sa paglikha ng pamamaraan ng koneksyon, maaari rin naming gamitin ang 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

Kaunti din tungkol sa RDP client sa Windows: Malaki na ang narating ng MS sa pag-optimize ng protocol at sa mga bahagi ng server at client nito, nagpatupad ng maraming kapaki-pakinabang na feature - tulad ng pagtatrabaho sa hardware 3D, pag-optimize ng resolution ng screen para sa iyong monitor, multiscreen, at iba pa. Ngunit siyempre, ang lahat ay ipinatupad sa backward compatibility mode, at kung ang kliyente ay Windows 7, at ang remote PC ay Windows 10, pagkatapos ay gagana ang RDP gamit ang protocol version 7.0. Ngunit ang benepisyo ay maaari mong i-update ang mga bersyon ng RDP sa mas kamakailang mga bersyon - halimbawa, maaari mong i-upgrade ang bersyon ng protocol mula 7.0 (Windows 7) hanggang 8.1. Samakatuwid, para sa kaginhawahan ng mga kliyente, kinakailangan upang madagdagan ang mga bersyon ng bahagi ng server hangga't maaari, pati na rin ang mga drop link upang mag-upgrade sa mga bagong bersyon ng mga kliyente ng RDP protocol.

Bilang resulta, mayroon kaming simple at medyo secure na teknolohiya para sa malayuang koneksyon sa isang gumaganang PC o terminal server. Ngunit para sa isang mas secure na koneksyon, ang aming Port Knocking na paraan ay maaaring gawing mas mahirap na atakehin sa pamamagitan ng ilang mga order ng magnitude, sa pamamagitan ng pagdaragdag ng mga port upang suriin - maaari kang magdagdag ng 3,4,5,6 ... isang port ayon sa parehong logic , at sa kasong ito ang isang direktang panghihimasok sa iyong network ay halos imposible .

Mga blangkong file para sa paggawa ng malayuang koneksyon sa RDP.

Pinagmulan: www.habr.com

Magdagdag ng komento