Oczywistą jest chęć ograniczenia możliwości logowania do naszego routera przez osoby postronne. Przeważnie nasze routery posiadają publiczne adresy IP, co czyni je osiągalnymi – dostępnymi z każdego miejsca na ziemi podłączonego do sieci Internet.
Jednak nie koniecznie chcemy by każdy miał możliwość wykonania chociaż próby autentykacji na naszym urządzeniu, nie mówiąc już w ogóle o samym pomyślnym zalogowaniu się.
Tutaj z pomocą może przyjść procedura port knocking, która będzie ograniczała możliwość logowania do naszego urządzenia na podstawie źródłowego adresu IP.
Jedyne co musimy zrobić to dodać 6 prostych komend do konfiguracji firewall naszego routera.
W pierwszym poleceniu musimy spersonalizować pole dst-port=1234. Jest to port, po którego otwarciu, nasz źródłowy adres IP będzie trafiał na tymczasową listę o nazwie temp z timeoutem 2 minuty.
/ip firewall filter add action=add-src-to-address-list address-list=temp address-list-timeout=2m chain=input dst-port=1234 protocol=tcp
W drugim poleceniu również musimy spersonalizować pole dst-port=4567. Jest to port, po którego otwarciu, nasz źródłowy adres IP będzie trafiał listę o nazwie secure i przyznana zostanie możliwość zalogowania się do routera. Dodatkowym warunkiem jest to, że żeby trafić na listę secure, nasz adres IP musiał się znajdować wcześniej na liście temp.
/ip firewall filter add action=add-src-to-address-list address-list=secure address-list-timeout=none-static chain=input dst-port=4567 protocol=tcp src-address-list=temp
Trzeci krok to dodanie reguł akceptujących ruch z adresów znajdujących się na liście secure do konkretnych usług na naszym MikroTik. Ja wybrałem SSH (port 22) i Winbox (port 8291). Można dodać więcej lub mniej reguł (usług) wg uznania.
/ip firewall filter add action=accept chain=input src-address-list=secure dst-port=22 protocol=tcp
/ip firewall filter add action=accept chain=input src-address-list=secure dst-port=8291 protocol=tcp
Ostatni krok to „wycięcie” całego pozostałego ruchu do ww usług
/ip firewall filter add action=drop chain=input dst-port=22 protocol=tcp
/ip firewall filter add action=drop chain=input dst-port=8291 protocol=tcp
Koniec, router zabezpieczony! Procedura port knocking działa najlepiej z mechanizmem PSD (port scan detection) ale o tym w osobnym wpisie.
Przedstawię jeszcze po krótce, jak wykonać procedurę port knocking z komputera z systemem Windows. Potrzebny będzie nam do tego popularny programik putty. Można go pobrać ze strony https://www.putty.org/
Możemy go zapisać bezpośrednio na dysku C: wykluczy to korzystanie z długich ścieżek w windowsowym command line
W moim przypadku adres routera to 192.168.3.170 więc wykonuję „zapukanie” na pierwszy port 1234
Po tej operacji adres IP mojego komputera zostaje dodany do listy temp z timeout poniżej 2 minut zgodnie z pierwszą regułą firewall, co widać na routerze w IP/Firewall zakładka Address Lists
Następnie wykonuję „zapukanie” na drugi port 4567
Po tej operacji widać w konfiguracji routera, że mój źródłowy adres IP (192.168.3.52) jest przypisany do listy secure. Zostanie on tam na stałe dopóki nie zostanie ręcznie skasowany i zawsze będzie możliwość zalogowania się do konfiguracji routera z tego adresu IP. Wpis z listą temp zostanie automatycznie usunięty po upłynięciu timeout.
Jak zautomatyzować otwarcie tych dwóch portów? Można np. utwożyć plik .bat z następującą zawartością
@ECHO OFF
SET /P ip=IP:
putty.exe telnet://%ip%:1234/
ping %ip% -n 1
putty.exe telnet://%ip%:4567/
Po uruchomieniu program zapyta o adres IP. Po jego wpisaniu i wciśnięciu enter automatycznie wykona całą procedurę port knocking na dany adres IP. Trzeba pamiętać, by uruchamiać go w tym samym katalogu, w którym znajduje się putty.exe.
Koniec 🙂
Jeżeli pomogłem to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.