Práce na dálku v kanceláři. RDP, Port Knocking, Mikrotik: jednoduché a bezpečné

V souvislosti s pandemií viru covid-19 a celonárodním lockdownem v mnoha zemích je pro mnoho společností jediným řešením, jak pokračovat v práci, vzdálený přístup k pracovním místům přes internet. Existuje mnoho relativně bezpečných metod pro práci na dálku, ale vzhledem k rozsahu problému je třeba jednoduchého způsobu vzdáleného připojení k kanceláři, který nevyžaduje další nastavení, vysvětlování, únavné konzultace a dlouhé instrukce. Tímto metodou je oblíbený RDP (Remote Desktop Protocol). Připojení přímo k pracovnímu místu pomocí RDP dokonale řeší náš úkol, kromě jedné velké chyby – držet otevřený port RDP pro internet je velmi nebezpečné. Proto níže navrhuji jednoduchou, ale spolehlivou metodu ochrany.Práce na dálku v kanceláři. RDP, Port Knocking, Mikrotik: jednoduché a bezpečné

Jelikož se často setkávám s malými organizacemi, které pro připojení k internetu používají zařízení Mikrotik, ukážu níže, jak to realizovat na Mikrotiku, ale metoda ochrany Port Knocking je snadno realizovatelná i na jiných zařízeních vyšší třídy se stejným nastavením vstupního routeru a firewallu.

Krátce o Port Knocking. Ideální externí ochrana sítě připojené k internetu je, když jsou všechny zdroje a porty zvenčí uzavřeny firewallem. I když router s takto nastaveným firewallem nijak nereaguje na příchozí pakety, naslouchá jim. Proto lze router nastavit tak, že při přijetí určité (kódové) sekvence síťových paketů na různé porty, otevře (router) přístup k určitým zdrojům (portům, protokolům apod.) pro IP adresu, ze které pakety přišly.

Teď k věci. Podrobný popis nastavení firewallu na Mikrotiku dělat nebudu — na internetu je k tomu spousta kvalitních zdrojů. Ideálně firewall blokuje všechny příchozí pakety, ale

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

Umožňuje příchozí provoz od již ustanovených (established, related) spojení.
Nyní nastavíme Port Knocking na Mikrotiku:

/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

Teď podrobněji:

první dvě pravidla

/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

zakazují příchozí pakety z IP adres, které se dostaly na černou listinu při skenování portů;

Třetí pravidlo:

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

přidává IP do seznamu hostitelů, kteří provedli správný první úder na potřebný port (19000);
Následující čtyři pravidla:

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

vytvářejí pasti pro ty, kteří se pokusí proskenovat vaše porty, a při zjištění takových pokusů vkládají jejich IP adresy na černou listinu na 60 minut, během kterých prvá dvě pravidla neumožní těmto hostům přístup k správným portům;

Následující pravidlo:

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

vkládá IP adresu na seznam povolených na 1 minutu (dostatečně pro navázání spojení), protože byl proveden druhý správný poklep na správný port (16000);

Následující příkaz:

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

přesouvá naše pravidla nahoru v řetězci zpracování firewallu, protože pravděpodobně už máme nastavená různá zakazující pravidla, která zabrání spuštění našich nově vytvořených. První pravidlo v MikroTiku začíná od nuly, ale na mém zařízení bylo nula obsazeno vestavěným pravidlem a nebylo možné je přesunout – přesunul jsem na 1. Proto se podívejme podle našich nastavení – kam je možné se přesunout a uvedeme potřebné číslo.

Následující nastavení:

/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

provádí přesměrování libovolně vybraného portu 33890 na běžný RDP port 3389 a IP adresu potřebného počítače nebo terminálového serveru. Taková pravidla vytváříme pro všechny potřebné interní zdroje, ideálně nastavujeme nestandardní (a různé) externí porty. Samozřejmě, že IP adresy interních zdrojů by měly být buď statické, nebo určeny na DHCP. serveru.

Nyní je náš MikroTik nastaven a potřebujeme jednoduchou uživatelskou proceduru pro připojení k našemu internímu RDP. Jelikož máme převážně uživatele Windows, vytvoříme jednoduchý bat soubor a nazveme ho StartRDP.bat:

1.htm
1.rdp

příslušně 1.htm obsahuje následující kód:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
stiskněte aktualizovat stránku pro opětovný vstup přes RDP
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

Tady jsou dva odkazy na fiktivní obrázky, které se nacházejí na adrese my_router.sn.mynetname.net — tuto adresu bereme ze systému DDNS Mikrotik, který musíme předem aktivovat: vstoupíme do menu IP->Cloud — zaškrtneme možnost DDNS Enabled, klikneme na Apply a zkopírujeme DNS název našeho routeru. To je však nezbytné pouze v případě, že externí IP routeru je dynamické nebo se používá konfigurace s více poskytovateli internetu.

Port v prvním odkazu :19000 odpovídá prvnímu portu, na který je třeba se připojit, ve druhém pak druhému. Mezi odkazy je krátký návod, který ukazuje, co dělat, pokud naše připojení náhle přerušíme kvůli krátkým problémům v síti — osvěžíme stránku, port RDP se znovu otevírá na 1 minutu a naše relace se obnoví. Text mezi tagy img také vytváří prohlížeči mikro zpoždění, které snižuje pravděpodobnost doručení prvního paketu na druhý port (16000) — za poslední dvě týdny používání (30 lidí) se to nestalo.

Dále následuje soubor 1.rdp, který můžeme nastavit jeden pro všechny nebo samostatně pro každého uživatele (já jsem to tak udělal — je snazší strávit dalších 15 minut než několik hodin na konzultacích s těmi, kteří si nevěděli rady).

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

Mezi zajímavými nastaveními je use multimon:i:1 — to zahrnuje používání více monitorů — někteří to potřebují, ale sami na to nepřijdou.

connection type:i:6 a networkautodetect:i:0 — většina připojení má vyšší rychlost než 10 Mbit, proto zapneme typ připojení 6 (lokální síť 10Mbit a výše) a vypneme networkautodetect, protože při výchozím nastavení (auto) i malá nepravidelnost v síti automaticky nastaví podhodnocenou rychlost pro naši relaci na delší dobu, což může způsobit znatelné zpoždění, zejména při práci s grafickými programy.

disable wallpaper:i:1 — vypínáme obrázek pracovní plochy
username:s:myuserlogin — uvádíme uživatelské jméno, protože značná část našich uživatelů nezná své uživatelské jméno.
domain:s:mydomain — uvádíme doménu nebo název počítače

Pokud si však chceme zjednodušit úkol při vytváření postupu připojení, můžeme využít 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

Také trochu o RDP klientovi ve Windows: MS ušla dlouhou cestu optimalizace protokolu a jeho serverové i klientské části, implementovala spoustu užitečných funkcí – jako je podpora hardwarového 3D, optimalizace rozlišení obrazovky podle vašeho monitoru, multi-monitor a další. Ale samozřejmě, vše je realizováno v režimu zpětné kompatibility a pokud je klient Windows 7 a vzdálený PC Windows 10, RDP bude fungovat používající protokol verze 7.0. Naštěstí lze verze RDP aktualizovat na novější verze – například můžete zvýšit verzi protokolu z 7.0 (Windows 7) na 8.1. Proto pro pohodlí klientů je potřeba co nejvíce zvýšit verze serverové části a také poskytnout odkazy na aktualizaci na nové verze RDP klientů.

Výsledkem je jednoduchá a relativně bezpečná technologie vzdáleného připojení k pracovnímu PC nebo terminálovému serveru. Ale pro bezpečnější připojení lze náš způsob Port Knocking komplikovat pro útok na několik řádů, přidáním portů pro kontrolu – podle stejné logiky můžete přidat 3, 4, 5, 6… port a v takovém případě bude přímé vniknutí do vaší sítě téměř nemožné.

Předlohy souborů pro vytvoření vzdáleného připojení k RDP.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster