Далечинска работа во канцеларија. RDP, Port Knocking, Mikrotik: едноставно и безбедно

Поради пандемијата на вирусот Ковид-19 и општиот карантин во многу земји, единствениот начин за многу компании да продолжат со работа е далечинскиот пристап до работните места преку Интернет. Постојат многу релативно безбедни методи за работа на далечина - но со оглед на обемот на проблемот, потребен е метод кој е едноставен за секој корисник да се поврзе со канцеларијата од далечина и без потреба од дополнителни поставки, објаснувања, мачни консултации и долги инструкции. Овој метод го сакаат многу администратори RDP (Remote Desktop Protocol). Поврзувањето директно со работна станица преку RDP идеално го решава нашиот проблем, освен една голема мува во маст - одржувањето на RDP-портата отворена за Интернет е многу небезбедно. Затоа, подолу предлагам едноставен, но сигурен метод на заштита.Далечинска работа во канцеларија. RDP, Port Knocking, Mikrotik: едноставно и безбедно

Бидејќи често наидувам на мали организации каде уредите на Mikrotik се користат како интернет конекција, подолу ќе покажам како да го имплементирам ова на Mikrotik, но методот за заштита на Port Knocking лесно може да се имплементира на други уреди од повисока класа со слични поставки на влезниот рутер и заштитен ѕид

Накратко за Port Knocking. Идеалната надворешна заштита на мрежа поврзана на Интернет е кога сите ресурси и порти се затворени однадвор со заштитен ѕид. И иако рутерот со таков конфигуриран заштитен ѕид не реагира на кој било начин на пакетите што доаѓаат однадвор, тој ги слуша. Затоа, можете да го конфигурирате рутерот така што кога ќе прими одредена (шифра) низа од мрежни пакети на различни порти, тој (рутерот) за IP од каде што дошле пакетите, не дозволува пристап до одредени ресурси (порти, протоколи итн. .).

Сега на поентата. Нема да дадам детален опис за поставување заштитен ѕид на Mikrotik - Интернетот е полн со квалитетни извори за ова. Идеално, заштитен ѕид ги блокира сите дојдовни пакети, но

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

Овозможува дојдовен сообраќај од веќе воспоставени (воспоставени, поврзани) врски.
Сега го конфигурираме Port Knocking на 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

Сега подетално:

првите две правила

/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

забрани дојдовни пакети од IP адреси кои беа на црната листа за време на скенирањето на портите;

Трето правило:

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

додава ip на листата на хостови што го направиле правилното прво чукање на саканата порта (19000);
Следниве четири правила:

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

креирајте пристаништа за стапици за оние кои сакаат да ги скенираат вашите порти и кога ќе се откријат такви обиди, тие ја ставаат својата IP на црна листа 60 минути, при што првите две правила нема да им дадат можност на таквите хостови да чукаат на правилните порти;

Следното правило:

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

ја става ip-та во списокот на дозволени 1 минута (доволно за воспоставување врска), бидејќи второто правилно чукање се прави на саканата порта (16000);

Следна команда:

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

ги поместува нашите правила нагоре низ синџирот за обработка на заштитниот ѕид, бидејќи најверојатно веќе ќе имаме конфигурирани различни правила за забрана што ќе ги спречат нашите новосоздадени да работат. Првото правило во Микротик започнува од нула, но на мојот уред нулата беше окупирана од вградено правило и беше невозможно да се премести - го преместив на 1. Затоа, ги гледаме нашите поставки - каде можеме да го преместиме и наведете го саканиот број.

Следна поставка:

/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

проследува случајно избрана порта 33890 до обична RDP порта 3389 и IP на компјутерот или терминалниот сервер што ни треба. Ние создаваме такви правила за сите потребни внатрешни ресурси, по можност поставувајќи нестандардни (и различни) надворешни порти. Природно, IP на внатрешните ресурси мора да биде или статична или доделена на DHCP сервер.

Сега нашиот Mikrotik е конфигуриран и потребна ни е лесна процедура за корисникот да се поврзе со нашиот внатрешен RDP. Бидејќи најчесто имаме корисници на Windows, создаваме едноставна датотека bat и ја нарекуваме StartRDP.bat:

1.htm
1.rdp

соодветно, 1.htm го содржи следниот код:

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

овде содржи две врски до имагинарни слики кои се наоѓаат на адресата my_router.sn.mynetname.net - ја земаме оваа адреса од системот Mikrotik DDNS откако ќе го овозможиме ова во нашиот Mikrotik: одете во менито IP-> Cloud - проверете го DDNS Enabled полето, кликнете Примени и копирајте го името dns на нашиот рутер. Но, ова е потребно само кога надворешната IP адреса на рутерот е динамична или се користи конфигурација со неколку интернет провајдери.

Портата во првата врска: 19000 одговара на првата порта на која треба да тропнете, во втората одговара на втората. Помеѓу врските има кратка инструкција која покажува што да правиме ако ненадејно ни се прекине врската поради кратки проблеми со мрежата - ја освежуваме страницата, портата RDP повторно ни се отвора 1 минута и ни е вратена сесијата. Исто така, текстот помеѓу ознаките img создава микро-одложување за прелистувачот, што ја намалува веројатноста првиот пакет да биде доставен до втората порта (16000) - досега немало такви случаи во две недели од употреба (30 луѓе).

Следува датотеката 1.rdp, која можеме да ја конфигурираме за секого или посебно за секој корисник (тоа го направив - полесно е да потрошите дополнителни 15 минути отколку неколку часа консултирајќи се со оние кои не можеа да го сфатат)

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

Една од интересните поставки овде е употребата на multimon:i:1 - ова вклучува употреба на повеќе монитори - на некои луѓе им треба ова, но тие не размислуваат сами да го вклучат.

тип на врска:i:6 и networkautodetect:i:0 - бидејќи поголемиот дел од интернетот е над 10 Mbit, тогаш овозможете го типот на врска 6 (локална мрежа 10 Mbit и погоре) и оневозможете автоматско откривање на мрежата, бидејќи ако стандардното е (автоматско), тогаш дури и ретка мала доцнење на мрежата автоматски ја поставува брзината за нашата сесија со помала брзина долго време, што може да создаде забележителни доцнења во работата, особено во графичките програми.

оневозможи позадина:i:1 - оневозможи слика на работната површина
корисничко име:s:myuserlogin - го означуваме корисничкото најавување, бидејќи значителен дел од нашите корисници не го знаат своето најавување
домен:s:mydomain - наведете го доменот или името на компјутерот

Но, ако сакаме да ја поедноставиме задачата за креирање процедура за поврзување, можеме да користиме и 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

Исто така, малку за клиентот RDP во Windows: MS помина долг пат во оптимизирањето на протоколот и неговите делови од серверот и клиентот, имплементирајќи многу корисни функции - како работа со хардверски 3D, оптимизирање на резолуцијата на екранот за вашиот монитор, мулти-екран, итн. Но, се разбира, сè е имплементирано во режим на компатибилност наназад и ако клиентот е Windows 7, а оддалечениот компјутер е Windows 10, тогаш RDP ќе работи користејќи верзија на протоколот 7.0. Но, за среќа, можете да ги ажурирате верзиите на RDP на понови верзии - на пример, можете да ја надградите верзијата на протоколот од 7.0 (Windows 7) на 8.1. Затоа, за погодност на клиентите, треба да ги максимизирате верзиите на делот на серверот, а исто така да обезбедите врски за ажурирање до нови верзии на клиентите на протоколот RDP.

Како резултат на тоа, имаме едноставна и релативно безбедна технологија за далечинско поврзување со работен компјутер или терминален сервер. Но, за посигурна врска, нашиот метод Port Knocking може да биде потежок за напад со неколку реда на големина, со додавање порти за проверка - користејќи ја истата логика, можете да додадете 3,4,5,6... порта и во овој случај, директното упад во вашата мрежа ќе биде речиси невозможно.

Подготовки за датотеки за создавање далечинско поврзување со RDP.

Извор: www.habr.com

Додадете коментар