Приметили сте да вам микротик рутер пријављује упозорења да неко покушава да му приступи преко SSH? Лог приказује да неко покушава да на силу погоди (brute force) лозинку и уђе у рутер.
Најпре, нема потребе бринути се. Ако користите квалитетну лозинку за приступ, шансе да ће неко да је погоди и уђе у рутер су минималне. Но, за сваки случај ваља увести мере предострожности.
Ограничење приступа
Aко вам SSH приступ рутеру са интернета није потребан, онда га искључите. Можете га потпуно искључити или омогућити приступ само са ИП адреса из ваше локалне мреже.
Најпре проверите који су све сервиси рапосложиви. То можете урадити командом
/ip service print
а она ће дати приказ сличан овом:
[[email protected]] /ip service print Flags: X - disabled, I - invalid # NAME PORT ADDRESS CERTIFICATE 0 telnet 23 0.0.0.0/0 1 ftp 21 0.0.0.0/0 2 www 80 0.0.0.0/0 3 ssh 22 0.0.0.0/0 4 X www-ssl 443 0.0.0.0/0 none 5 X api 8728 0.0.0.0/0 6 winbox 8291 0.0.0.0/0
SSH је у овој листи под редним бројем 3, што нам треба за даља подешавања. Имате две могућности, да потпуно искључите SSH приступ рутеру:
/ip service set 3 disabled="yes"
или да ограничите на ИП опсег ваше локалне мреже, на пример 192.168.1.1:
/ip service set 3 address=192.168.1.1/24
Ако је ипак потребно да рутеру можете приступити са Интернета онда вам претходно описана ограничења неће вредети јер ће осим потенцијалним нападачима, и вама приступ бити онемогућен.
Приступ преко VPN
Забрану приступа са Интернета можете заобићи тако што ћете омогућити приступ мрежи са Интернета преко неког од VPN протокола (Virtual Private Network).
Када се повежете кроз VPN, ваш рачунар постаје део локалне мреже па ће моћи да приступи и рутеру као да је у локалној мрежи.
Омогућавање приступа са неких ИП адреса
Ако је неопходно да рутеру приступате са Интернета тада можете оставити омогућен приступ са интернета али га селективно дозволити само унапред одабраним ИП адресама.
Најпре, направите листу ИП адреса којима хоћете да дозволите приступ:
/ip firewall address-list add address=87.36.211.77 list=allow_ssh add address=217.193.79.112 list=allow_ssh add address=72.204.127.15 list=allow_ssh
Затим подесите заштитни зид да дозволи приступ SSH (tcp port 22) у input ланцу (то су конекције које су упућене самом рутеру) на интерфејсу интернет линка (wan):
/ip firewall filter \ add chain=input in-interface=wan \ protocol=tcp dst-port=22 src-address-list=allow_ssh action=accept
Иза овог правила одмах блокирајте све остале конекције на SSH у input ланцу на интерфејсу интернет линка:
/ip firewall filter \ add chain=input in-interface=wan protocol=tcp dst-port=22 action=drop
Онемогућавање злонамерних конекција
Брзо решење за проблем злонамерника је и тај да се препознају злонамерне конекције и као такве онемогуће. Проблем са SSH протоколом је што је он шифрован па не можемо да пратимо саобраћај те да препознамо неуспешан покушај пријаве корисника на сервис па да на то реагујемо. Мораћемо се задовољити једноставнијим правилом да ако са неког ИП дође више покушаја успоставе конекције са рутером у кратком временском периоду, то сматрамо лошом намером.
Уистину, када се на рутеру појави нова конекција на SSH порт то може значити да се ради о регуларном коринику али и о неком ко покушава неовлашећно да уђе. У том тренутну то не можемо знати.
Међутим, регуларан корисник ће успети да уђе у рутер јер зна корисничко име и лозинку. Злонамерник ће морати да покушава више пута погађајучи лозинку. Дакле, ако неко покушава више пута да уђе у рутер врло вероватно је да се ради о лошој намери.
Ипак, може да се деси и да регуларан корисник погреши у куцању лозинке те мора да понови приступ. Зато ћемо омогућити да свако може да покуша три пута да уђе у рутер, а већ четврти пут ћемо сматрати да се ради о лошој намери и блокирати приступ.
Како то направити у микротик рутеру? Поставићемо правила у input ланац на интефејс интернет конекције која ће да прате нове конекције на TCP порт 22. Користимо input ланац јер ћемо ту видети конекције које су упућене рутеру. Пратимо само нове конеције и тако нећемо реаговати на успостављене конекције по овом порту. Успостављена конекција значи да се ради о регуларном приступу.
Када препознамо нову конекцију ИП адресу са које је конекција дошла ћемо ставити у листу адреса под називом ssh_conn_level_0. Адреса ће у листи остати један минут:
/ip firewall filter add chain=input connection-state=new protocol=tcp dst-port=22\ action=add-src-to-address-list address-list=ssh_conn_level_0 \ address-list-timeout=1m
Овим ће бити означена свака нова конекција на рутер на SSH сервис а ми у овом тренутку не можемо знати да ли је она злонамерна.
Међутим, ако сада проверимо да ли се појављују SSH конекције на рутер са адреса које су већ означене, свака таква конекција потенцијално јесте злонамерна: први пут приступ није успео па је уследио нови покушај. Овакве ИП ћемо убацити у другу листу адреса под називом ssh_conn_level_1.
/ip firewall filter add chain=input connection-state=new protocol=tcp dst-port=22 \ src-address-list=ssh_conn_level_0 \ action=add-src-to-address-list address-list=ssh_conn_level_1 \ address-list-timeout=1m
То су већ потенцијално злонамерне ИП адресе, али још увек их нећемо блокирати јер постоји вероватноћа да је регуларан корисник направио грешку па је морао да понови приступ.
Уместо блокирања, листу ssh_conn_level_1 ћемо искористити да препознамо нове конекције које престављају трећи покушај приступа рутеру. Ове ИП адресе ћемо ставити у нову листу ИП адреса под називом ssh_conn_level_2. За разлику од претходних листа, ИП адресе ће из ове листе бити брисане након десет минута:
/ip firewall filter add chain=input connection-state=new protocol=tcp dst-port=22 \ src-address-list=ssh_conn_level_1 \ action=add-src-to-address-list address-list=ssh_conn_level_2 \ address-list-timeout=10m
Три неуспела покушаја су доста. Сваки следећи ћемо сматрати намером неовлашћеног уласка у рутер и блокирати:
/ip firewall filter add chain=input connection-state=new protocol=tcp dst-port=22 \ src-address-list=ssh_conn_level_2 \ action=drop
Последица оваквог подешавања је да ће бити дозвољено три покушаја конекције у једном минуту а све преко тога ће бити блокирано. Блокирање за једну ИП адресу ће трајати 10 минута – да би се са те адресе могло поново приступити рутеру на SSH порт мора проћи 10 минута без икаквог покушаја приступа на тај порт.
Ако се регуларном кориснику догоди да буде блокиран јер није успео да се из три пута пријави на рутер, само треба да сачека десет минута и моћи ће да покуша поново.
Насупрот томе, злонамерни нападачи који покушавају да погоде лозинку ће стално покушавати да приступе испробавајући разне комбинације корисничких имена и лозинки и све док то буду покушавали, приступ ће им бити блокиран.
Само прва три упита ће заиста имати могућност пријаве на рутер а после тога ће конекције бити онемогућене далеко пре него што уопште стигну до SSH сервиса. Тако је ефикасно осујећено и погађање лозинки, јер више не делује.
Како овакве ствари ретко кад неко ради ручно већ преко аутоматизованих скрипти, имаћемо успешну заштиту од таквих напада. Да ствар буде боља, скрипте су обично направљене тако да ако виде да им је приступ блокиран – одустају и прелазе на неку другу потенцијалну жртву.
А шта са другим сервисима?
За блокриање SSH сервиса смо користили TCP порт 22. Процедура за блокриање других сервиса је иста, само треба блокирати њихове портове.
За telnet се користи порт 23, за FTP – порт 21. У правилима заштитног зида за dst-port треба корситит ове портове. Штавише, можемо ставити и dst-port=21,22,23 па ће иста правила радити за сва три порта истовремено.
Šta ako napadač uradi ARP preusmerenje i počne da presreće sesiju i čeka da se korisnik uloguje na neki neenkriptovani servis, na primer na FTP?
Znajući korisnike, vrlo je velika šansa da će neko od njih staviti istu šifru za sve servise.
Да би неко тако напао рутер мора имати много озбиљнију логистику на располагању.
Možda na prvi pogled teško izvodljivo, ali nije nemoguće.
Napadač može da sazna IP adresu kompa sa kojeg će se administrator logovati tako što će se upustiti u e-mail dopisivanje sa tim adminom i onda će je dobiti iz zaglavlja poruka. Posle toga mu preostaje da nađe dobro mesto sa kojeg će da se poveže na internet, tako da ovome što manje uspori vezu.
Не иде то тако. АРП спуфинг се може извести само ако је нападач физички повезан на исти мрежни интерфејс рутера преко кога жртва долази на тај рутер.
Напад се може извести из локалне мреже што је опет велика отежавајућа околност с обзиром да не може неко тек тако да се повеже на локалну мрежу.
Zato sam i rekao da mora da nađe pravo mesto. ARP ne mora nužno da se radi na LAN mreži. Bitno je da postoji bar jedan zajednički subnet.
Peđa, meni je ovo resilo problem zlonamernih napada
ssh_conn_level_0
ssh_conn_level_1
ssh_conn_level_2
i lista adresa u kojoj sam ubacio primecene IP adresa koji pokusavaju skriptama da „provale sifru“.
Veliko Hvala, i pozdrav iz KG-a.
Goran.
Peđa, zar pravila ne bi trebalo da idu naopako?
Od drop kao prvo pravilo, pa sve do ssh_conn_level_0 kao poslednje?
U suprotnom, ako se ne varam, svaka nova konekcija će da se zaustavi uvek samo na prvom pravilu a ostala neće da procesira jer po definiciji: „When processing a chain, rules are taken from the chain in the order they are listed there from top to bottom. If a packet matches the criteria of the rule, then the specified action is performed on it, and no more rules are processed in that chain (the exception is the passthrough action). If a packet has not matched any rule within the chain, then it is accepted.“
У овом случају, мислим да редослед правила чак и није битан јер свако правило хвата само одређене конекције а не све, а те које хвата треба да ухвати у сваком случају.
На пример дроп правило чак и ако стоји прво неће узимати у обзир све конекције него само оне којима је src-address-list=ssh_conn_level_2
Редослед који је примењен је згодан јер је логичан след акција па је лак за праћење.
Ako stoji od 0 do drop, zar se ne dešava sledeće:
1. Nova konekcija -> Ispunjava uslove i upada u listu 0;
Pošto je kriterijum pravila zadovoljen, ne procesira se dalje.
2. Nova konekcija -> Ispunjava uslove i upada u listu 0;
Pošto je kriterijum pravila zadovoljen, ne procesira se dalje.
3. Nova konekcija -> Ispunjava uslove i upada u listu 0;
Pošto je kriterijum pravila zadovoljen, ne procesira se dalje.
i tako u krug…
———————–
A sa obrnutim pravilima, kada je drop prvo:
1. Nova konekcija -> Da li je u ssh_conn_level_2 -> Nije -> Sledeće pravilo -> Da li je u ssh_conn_level_1 -> Nije -> Sledeće pravilo -> Da li je u ssh_conn_level_0 -> Nije -> Sledeće pravilo -> Postavi u ssh_conn_level_0
2. Nova konekcija -> Da li je u ssh_conn_level_2 -> Nije -> Sledeće pravilo -> Da li je u ssh_conn_level_1 -> Nije -> Sledeće pravilo -> Da li je u ssh_conn_level_0 -> JESTE -> Postavi u ssh_conn_level_1
3. Nova konekcija -> Da li je u ssh_conn_level_2 -> Nije -> Sledeće pravilo -> Da li je u ssh_conn_level_1 -> JESTE -> Postavi u ssh_conn_level_2
4. Nova konekcija -> Da li je u ssh_conn_level_2 -> JESTE -> Drop
Mislim da tako treba da ide, ali još sam nov :)
Pozdrav!
Dobar dan
Uradio sam sve navedeno ali mi ruter i dalje daje da se ulogujem preko ssh, iako sam 3 puta kucao pogresnu sifru. IP adresa sa koje pokusavam da se ulogujem se nalazi u Address Lists tabu, odbrojava 10m, ali da i dalje mogu da pristupim ruteru preko ssh, daje mi login.
Gde gresim ?
Hvala
Pozdrav u roku 24 sata imam na mikrotiku minimum 20 napada sa razliciti ip adresa pretezno rusija i ukraina. Napadi su ssh telnet i ftp medjutim ftp su sa interne to jest lokalne ip adrese imam u kuci 3 kompa ispada kao da sam sebe napadam ip adrese od telefona ne koristi za napad. Napadac na ftp uvek koristi ista korisnicka imena koda ima sablon od tridesetak korisnicki imena. Povodom ovog blokirao sam ftp port i ssh … telnet nisam jer neznam dali cu moci pristupiti mikrotiku preko winboksa to jest dali cu u winboksu moci koristiti terminal…