Poza podstawowym zabezpieczeniem Mikrotik, możemy także zastosować bardziej zaawansowaną konfigurację. W poprzednim wpisie odradzałem udostępnianie portów na publicznych adresach, jednak stosując port knocking możemy nagiąć tą regułę.
Czym jest port knocking?
Jest to metoda wysłania sekwencji zapytań(pakietów) do routera w celu otworzenia portu. Co kryje się po sformułowaniem sekwencja zapytań? Może być to próba zalogowania się na konkretnym porcie, może być to zwykły pakiet icmp(ping) o określonej wielkości, a może sam text wysłany po udp. Pole do popisu mamy bardzo duże, dlatego złamanie takiej kombinacji dla intruza będzie bardzo ciężkie.
Jak to wygląda w praktyce
Zaczynamy o ustalenia klucza logowania, aby nie utrudniać skorzystamy tylko z 3 kroków:
- 1. Próba logowania na port 3311
- 2. Próba logowania na port 1289
- 3. Próba logowania na port 9933
Przechodzimy do korku pierwszego i próbujemy się zalogować na port 3311, router dodaje nasz adres do listy tymczasowej z czasem wygaśnięcia 60 sekund, czyli mamy dokładnie minutę, aby wykonać krok 2. Przy drugim „zapukaniu” router sprawdza czy adres znajduje się na liście tymczasowej, jeżeli tak dodaje go do kolejnej listy, także z czasem 60 sekund, innym przypadku zrywa połączenie. Zostaje nam trzecie podejść, podobnie jak w przypadku drugiego kroku router sprawdza czy nasz adres znajduje się na drugiej liście, jeżeli tak przyznaje dostęp do routera poprzez dodanie go do listy zaufanej. Czas życia adresów na liście zaufanej definiujemy na 1h, jest to dostęp tylko tymczasowy:)
Konfiguracja Mikrotika
Jeżeli konfigurowałeś router zgodnie z moim poprzednim wpisie te dwie reguły powinny już istnieć
[php]
/ip firewall filter add chain=input src-address-list=allow_to_router action=accept
/ip firewall filter add action=drop chain=input
[/php]
Podajemy regułę odpowiedzialną za krok 1.
[code]
/ip firewall filter add action=add-src-to-address-list address-list="step_1" address-list-timeout=1m chain=input dst-port=3311 protocol=tcp
[/code]
Znakiem plusa dodajemy nowy wpis, uzupełniając:
- Chain: input
- Protocol: tcp
- Dst. Port: 3311
- Action: add src to address list
- Address List: step_1
- Timeout: 00:01:00
Przechodzimy do ustawień drugiego kroku. Próbujemy otworzyć połączenie na porcie 1289. Router w pierwszej kolejności sprawdzi, czy nasz adres znajduje się na liście step_1, jeżeli tak doda adres do listy step_2.
[code]
/ip firewall filter add action=add-src-to-address-list address-list="step_2" address-list-timeout=1m chain=input dst-port=1289 protocol=tcp src-address-list="step_1"
[/code]
Klikamy na plus i uzupełniamy:
- Chain: input
- Protocol: tcp
- Dst. Port: 1289
- Src. Address List: step_1
- Action: add src to address list
- Address List: step_2
- Timeout: 00:01:00
Ostatnia reguła odpowiedzialna jest za sprawdzenie czy próbójemy podłączyć się na dobry port, wybraliśmy 9933 oraz czy nasz adres znajduje się na liście step_2. W przypadku, gdy spełnimy wszystkie wymagania, nasz adres zostanie dodany do listy adresowej allowed_to_router, która daje możliwość zalogowania się na router.
[code]
/ip firewall filter add action=add-src-to-address-list address-list="allow_to_router" address-list-timeout=1h chain=input dst-port=9933 protocol=tcp src-address-list="step_2"
[/code]
- Chain: input
- Protocol: tcp
- Dst. Port: 9933
- Src. Address List: step_2
- Action: add src to address list
- Address List: allowed_to_router
- Timeout: 01:00:00
Podsumowanie
Zadbaj o bezpieczeństwo swoich urządzeń, jeżeli nie masz innej opcji niż wystawienie router na świat, skonfiguruj Port Knocking. Sekwencje kroków można konfigurować wedle uznania. Można wykorzystać tcp, udp, icmp, zapytania w formie text, na port. Ograniczania Cię tylko wyobraźnia i firewall:)
Polecany sprzęt
Z własnego doświadczenia mogę wam polecić poniższy sprzęt, z podziałem na ewentualne przeznaczenie routera.
Do domu i małej firmy(SOHO): hAP AC Lite , hAP AC, RB4011, RB260GS, RB2011
LTE: SXT LTE kit, SXT LTE6 kit, LHG 5, LHG LTE kit
Extender/Repeater: mAP lite, mAP
POE: hEX PoE
LAB: hEX lite
Średnia/Duża firma: CCR1036-12G-4S
Materiał Video
[su_youtube url=”https://youtu.be/4Y5NSrtX4X4″]
Wszystko ładnie pięknie, ale co dalej jak zrobić by ruter na dzień dobry miał poblokowane porty np ftp 21 ssh 22 a po danej sekwencji je odblokowywał? To jest pytanie!
Zapoznaj się z Bezpieczny RouterOS, tam omawiam kwestie bezpieczeństwa.
@Kinio, tu nie chodzi o to, żeby MieTek automatycznie odblokowywał wybrane porty po danej sekwencji „puknięć”. Te porty mają być cały czas odblokowane (tzn. ruch do nich), ale tylko dla adresów, które znajdują się na liście „allowed_to_router”. Tworzysz więc odpowiednią regułkę dopuszczającą ruch do wybranych portów (np. 22, 8291, itd.), wskazując jako „Src. Address List” listę „allowed_to_router”. Ta regułka powinna się znaleźć przed regułkami sprawdzającymi „puknięcia”. Będzie to wtedy działać tak: regułka dopuszczająca hosty z listy „allowed_to_router” sprawdzi, czy próbujący się zalogować host znajduje się już na tej liście – jeśli nie – pakiet zostanie przekazany do następnej regułki, czyli w tym przypadku pierwszej regułki obsługującej „puknięcia”.
I to wszystko 🙂
Jak ma wyglądać reguła zakładająca wysłanie tekstu po UDP?
Przykładowo te trzy kroki które mamy w poradniku + step_4 (wysłanie tekstu po UDP)
Z góry bardzo dziękuję