[miejsce publikacji] ICT Professional, Nr 20 – Jesień 2018
[rubryka] Baza Wiedzy
[autor] Michał Filipek
[tytuł] Jak skutecznie zabezpieczyć MikroTik RouterOS?
W ostatnim czasie głośno jest o lukach w systemie RouterOS. W idealnym świecie nie powinny się pojawiać, lecz praktyka wskazuje, że każdy producent ma na swoim koncie mniej lub więcej wpadek. Co za tym idzie, stosując zasadę ograniczonego zaufania, warto zadbać o bezpieczeństwo naszych routerów. Poniższy tekst pokazuje elementy, na które należy zwrócić szczególną uwagę, zabezpieczając nasz router. Zajmiemy się kolejno: kontami użytkowników, zabezpieczeniem dostępu po IP i adresach MAC, interfejsami, usługami typu DNS czy bt-Test, regułami firewall i kilkoma jeszcze.
Konta użytkowników
Na początek przejdźmy do użytkowników systemowych (System -> Users). Użytkownicy ci będą mogli logować się na router i w zależności od uprawnień, przeglądać lub modyfikować konfigurację. Zaleceniem jest tu zmiana domyślnego loginu: admin na inny, korzystanie z silnych, złożonych i długich haseł oraz przydzielenie osobnych kont dla każdego z administratorów.
/user set 0 name=nazwaUżytkownika
/user set 0 password=”odpowiednioSkomplikowaneHasło”
W większych środowiskach, zamiast lokalnej bazy użytkowników, warto rozważyć wykorzystanie serwera Radius do autoryzacji – oczywiście z zachowaniem wcześniej przytoczonych zasad. W temacie użytkowników warto ograniczyć dostęp dla kont, gdzie i tak wiemy, że wykorzystywane są jedynie z sieci wewnętrznej (np. allowed-address=192.168.1.0/24).
/user set 0 allowed-address=192.168.1.0/24
Dostęp z sieci bezpośrednio podłączonych do routera, adres mac
Dobrą praktyką jest wyłączenie wszystkich fizycznych interfejsów, które nie są obecnie używane:
/interface set 1,2,3 disabled=yes
Następnie warto zastanowić się, jak nasz router podłączony jest do sieci zewnętrznej oraz czy aby na pewno wszystkie sieci prywatne są sieciami zaufanymi. Typowy schemat podłączenia routera poniżej:
Można rozważyć przeznaczenie jednego z interfejsów do zarządzania lokalnie naszym urządzeniem. Na pozostałych interfejsach powinniśmy wyłączyć możliwość łączenia się do routera za pomocą adresu MAC, jak również wyłączyć działanie protokołu MNDP (MikroTik Neighbor Discovery Protocol). W tym celu wykonujemy następujące kroki:
/interface list add name=mgmt
/interface list member add interface=ether5 list=mgmt
/ip neighbor discovery-settings set discover-interface-list=mgmt
/tool mac-server mac-winbox set allowed-interface-list=mgmt
/tool mac-server set allowed-interface-list=mgmt
/tool mac-server ping set enabled=no
W powyższym przykładzie ograniczyliśmy działanie protokołu MNDP do interfejsu ether5. Jeżeli MNDP jest włączony na danym interfejsie, to za jego pomocą nasz RouterOS może wykrywać inne urządzenia, jak i sam staje się wykrywalny. Poza faktem bycia wykrytym, router ujawni również swój identyfikator, platformę, na jakiej działa, a także, jakie oprogramowanie jest na nim zainstalowane (w której wersji).
Podobnie zrobiliśmy, ograniczając możliwość zalogowania się na urządzenie, za pomocą opcji mac- winbox, mac-telnet, tylko do interfejsu ether5.
Metody dostępu do urządzenia (z wykorzystaniem IP) oraz inne usługi
RouterOS umożliwia nam zarządzanie naszym routerem na wiele sposobów. Każdy z nich może stać się słabym punktem naszego bezpieczeństwa. Dlatego dostęp do naszego routera powinniśmy ograniczyć do jednej, czasami dwóch metod.
/ip service disable [find name=telnet]
/ip service disable [find name=ftp]
/ip service disable [find name=www]
/ip service disable [find name=www-ssl]
/ip service disable [find name=api]
/ip service disable [find name=api-ssl]
W tym przypadku pozostawiliśmy jedynie dostęp ssh oraz winbox. Dodatkowo, możemy zmienić domyślne numery portów, na jakich działają usługi winbox, ssh, oraz wskazać, z jakich adresów IP będziemy mogli się do nich podłączyć.
/ip service set port=2022 address=10.10.10.10,10.10.10.11 [find name=ssh]
/ip service set port=18291 address=10.10.10.10,10.10.10.11 [find name=winbox]
Kolejnym elementem podnoszącym bezpieczeństwo jest ustawienie silnej kryptografii dla połączeń ssh:
/ip ssh set strong-crypto=yes
Pozostałe usługi, jakie powinniśmy wyłączyć:
/tool bandwidth-server set enabled=no
/ip dns set allow-remote-requests=no
/ip socks set enabled=no
Usługa UPnP pozwala na dynamiczne tworzenie reguł dst-nat dla urządzeń w sieci LAN, które o to poproszą. Najczęściej są nimi konsole do gier czy telewizory IP. Gdy tylko jest to możliwe, zalecane jest wyłączenie tej funkcjonalności.
/ip upnp set enable=no
RP Filter – metoda blokowania pakietów mających niepoprawny adres źródłowy (spoofing). Tzn. z naszej sieci LAN nie powinien wyjść pakiet, którego adres źródłowy nie odpowiada wpisom w tablicy FIB.
/ip settings set rp-filter=strict
Jeżeli nie korzystamy z usługi MikroTik ip cloud, powinniśmy ją wyłączyć:
/ip cloud set ddns-enable=no update-time=no
Podobnie postępujemy z:
/ip proxy set enabled=no /ip socks set enabled=no
Część urządzeń MikroTik posiada wbudowane wyświetlacze LCD. Jeżeli nie kontrolujemy fizycznego dostępu do routera (przestrzenie współdzielone) lub nie korzystamy z tej funkcjonalności, należy się zastanowić nad wyłączeniem wyświetlacza:
/lcd set enabled=no
Dostęp z zewnątrz do routera
Możliwość kontrolowania routera z zewnątrz powinna zostać szczegółowo zaplanowana i możliwie ograniczona. Dobrą praktyką jest zablokowanie łączenia się bezpośrednio z zewnątrz sieci do naszego routera. Mechanizmami, które zwiększą nasze bezpieczeństwo są technologie VPN oraz odpowiednie reguły firewalla.
Opcja 1 – dostęp tylko ze znanych adresów IP (gdy mamy stały adres IP)
/ip firewall filter add chain=input comment=”Accept Established, Related” connection- state=established,related action=accept
/ip firewall filter add chain=input src-address=45.32.154.212 action=accept
/ip firewall filter add chain=input src-address=45.32.154.100 action=accept
/ip firewall filter add chain=input action=drop
Opcja 2 – dostęp tylko z VPN (możemy łączyć się z różnych adresów IP)
Przed zalogowaniem się do routera należy wcześniej nawiązać połączenie VPN.
/ip firewall filter add chain=input comment=”Accept Established, Related” connection- state=established,related action=accept
/ip firewall filter add chain=input comment=”SSTP VPN” protocol=tcp dst-port=443 action=accept
/ip firewall filter add chain=input src-address=172.16.10.0/24 action=accept
/ip firewall filter add chain=input action=drop
Opcja 3 – port knocking (możemy łączyć się z różnych adresów IP)
Mechanizm port knocking polega na dynamicznym modyfikowaniu reguł dostępowych firewalla w przypadku, gdy nastąpiła określona akcja. Aby móc zalogować się za pomocą winboxa, należy wcześniej wykonać dodatkowe czynności, np. podjąć próbę komunikacji z routerem na port 2133/tcp, a następnie 7117/tcp. Po wykonaniu tej sekwencji, router doda nasz adres IP do odpowiedniej listy adresów, która będzie miała dostęp do wcześniej zablokowanego portu winboxa.
/ip firewall filter add chain=input comment=”Accept Established, Related” connection- state=established,related action=accept
/ip firewall filter add chain=input protocol=tcp dst-port=2133 action=add-src-to-address-list address- list=port-knocking-stage1 address-list-timeout=00:01:00
/ip firewall filter add chain=input protocol=tcp dst-port=7117 src-address-list=port-knocking-stage1 action=add-src-to-address-list address-list=port-knocking-stage2 address-list-timeout=00:01:00
/ip firewall filter add chain=input src-address-list=port-knocking-stage2 protocol=tcp dst-port=8291 action=accept
/ip firewall filter add chain=input action=drop
Jeżeli nasz komputer wyposażony jest w narzędzie telnet, możemy zasymulować próbę połączenia na wskazane porty:
telnet adresIProutera 2133
telnet adresIProutera 7117
Dopiero teraz możemy użyć winboxa do połączenia z naszym routerem.
Uwagi
Opcjonalnie można ustawić na urządzeniu wiadomość powitalną dla każdego, kto się loguje. Tego typu informacja może zawierać notę prawną lub inny komunikat mający na celu poinformowanie intruza o fakcie, iż jego poczynania są od teraz monitorowane.
/system note set show-at-login=yes
/system note set note=”Dostęp do urządzenia jest monitorowany.”
Zalecamy zbieranie zdarzeń systemowych typu Syslog, najlepiej na zewnętrznym serwerze do tego przeznaczonym. Dodatkowo, warto zastanowić się nad skorzystaniem z Netflow w celu zalogowania pakietów przychodzących do naszego routera i późniejszej analizy.
Oczywiście regularnie powinniśmy tworzyć kopie zapasowe naszej konfiguracji, pamiętając, aby nie przechowywać ich bezpośrednio na routerze.