Zabezpieczenie routera z OpenWrt

Zawartość

A więc zdecydowałeś się zmienić oprogramowanie na twoim routerze z tego, dostarczonego przez twojego producenta sprzętu, na bardziej otwarte i bezpieczniejsze oprogramowanie OpenWrt. Gratulacje!

Jednakże samo to, że zdecydowałeś się podnieść bezpieczeństwo twojego urządzenia, nie znaczy, że możesz spocząć na laurach. Jak każde oprogramowanie, w tym OpenWrt co jakiś czas też jest aktualizowane, głównie w przypadku wykrycia luk w bezpieczeństwie oraz problemów, które mogą powodować niestabilne działanie naszego urządzenia.

Jak każde urządzenie sieciowe, wymaga one nieco zabiegów na początku konfiguracji, aby podnieść jego bezpieczeństwo.

Hasło użytkownika root

Nasz router domyślnie używa konta z najwyższymi uprawnieniami w systemie — root. Jego zabezpieczenie powinno być dla nas priorytetem. Przy pierwszym logowaniu na nowo zainstalowane oprogramowanie OpenWrt zostaniemy poproszeni o jego zmianę, jeżeli jednak to zignorowaliśmy lub ustawiliśmy hasło typu admin, jak najszybciej zmieńmy je na unikalne, znane tylko nam samym. Haker, który będzie miał okazję włamać się do waszej sieci, w pierwszej kolejności sprawdzi najbardziej popularne oraz domyślne hasła stosowane na routerach.

Aby zmienić hasło użytkownika, przechodzimy do System > Administration, gdzie, w pierwszej zakładce Router Password możemy ustawić bezpieczne hasło.

Zmiany hasła możemy też dokonać, łącząc się z naszym routerem przez SSH i wykonując komendę:

passwd

OpenWrt System Administration router password


SSH

Będąc w System > Administration warto również zajrzeć do zakładki SSH Access.

Domyślnie nasz router nasłuchuje na porcie 22 oraz wszystkich dostępnych interfejsach — w tym, który służy do dostępu do internetu. Nie muszę mówić, że posiadanie otworzonego portu 22 dostępnego z internetu to nie jest rozsądne rozwiązanie. Mimo że domyślne reguły Firewall zabezpieczą nas przed możliwością połączenia do SSH naszego routera z internetu, warto jednak domyślne ustawienia pozmieniać

I tak:
Interface zmieniamy na LAN (czyli naszą sieć lokalną)

Oraz:
Port (na którym router będzie nasłuchiwać) zmieniamy na np. 9922 lub dowolnie wybrany przez nas.

openwrt system administration ssh access

Zapisujemy i zastosowujemy zmiany (Save & Apply).


Panel administracyjny (https)

Dostęp do ustawień naszego routera odbywa się w przyjaznym dla użytkownika graficznym interfejsie z poziomu przeglądarki internetowej. Wystarczy przejść na stronę — adres naszego routera (np. 192.168.1.1) i zalogować się na nasze konto root.

Wszystko jest ładne i piękne, pod warunkiem, że nikt w sieci nie nasłuchuje, na to, co wprowadzamy w przeglądarce, szczególnie, że gdy odwiedzamy nasz panel administracyjny routera, połączenie odbywa się poprzez nieszyfrowany HTTP, przez co nasze hasło, które wprowadzamy, wysyłane jest również w postaci nieszyfrowanej. Wystarczy WireShark i można w łatwy sposób poznać, co wprowadzamy.

W związku z tym warto wprowadzić połączenie z naszym routerem poprzez połączenie szyfrowane HTTPS.

W tym celu, w System > Software musimy zainstalować aplikację luci-ssl (o ile nie mamy jej już w systemie), lub z poziomu terminala:

opkg install luci-ssl

Jeżeli wykonujemy naszą instalację z terminala, warto po instalacji uruchomić ponownie nasz dostęp przez przeglądarkę internetową, który odbywa się z wykorzystaniem pakietu uhttpd.

/etc/init.d/uhttpd restart

Przy pierwszym ponownym uruchomieniu, wygenerowany zostanie bezpieczny certyfikat dostępu przez HTTPS.

Oczywiście, certyfikat, który zostanie wygenerowany, nie jest wystawiony przez żadną zaufaną instytucję, tylko podpisany przez nasz router. Do celów lokalnych, nie stanowi to najmniejszego problemu, jednakże przy połączeniu z naszym routerem przez HTTPS trzymamy ostrzeżenie o niezaufanym certyfikacie.

W przypadku Safari możemy kliknąć Show Details i kliknąć odnośnik visit this website.

Safari this connection is not private

Z Edge (Chromium) oraz Chrome nie jest już tak łatwo, gdyż te przeglądarki nie pozwolą nam dalej przejść, nawet jeżeli wejdziemy w opcje zaawansowane (Advanced), pod którymi powinniśmy zobaczyć odnośnik, pozwalający mimo tego przejść na stronę.

Edge Chromium your connection isn’t private

Edge Chromium Your connection isn’t private advances

Aby tego dokonać, możemy użyć nietypowej metody. Po przejściu na stronę, która zwraca problem z certyfikatem, możemy napisać (nie będziemy widzieć, co wprowadzamy), w oknie przeglądarki słowo thisisunsafe. Po chwili zobaczymy, że nasza strona się odświeży i będziemy mogli dalej przejść do naszego panelu.

W przypadku Firefox wystarczy kliknąć przycisk zaawansowane (Advanced) i na dole strony wybrać przycisk stwierdzający, że akceptujemy ryzyko (Accept the Risk and Continue).

Firefox warning potential security risk ahead

Firefox warning potential security risk ahead advanced

Mała niedogodność, jednakże i to podnosi bezpieczeństwo w momencie wprowadzania hasła do naszego routera.

W przypadku gdy zainstalowaliśmy luci-ssl, ale nie spełnia on swojego zadania lub problemy z certyfikatem powodują, że nie jest to rozwiązanie, którego szukaliśmy, możemy go w każdej chwili usunąć.

Aby tego dokonać, należy z poziomu terminala SSH odinstalować luci-ssl oraz pakiety libustream-mbedtls i px5g-mbedtls

opkg remove luci-ssl px5g-mbedtls libustream-mbedtls

Następnie należy usunąć utworzone lokalne certyfikaty

rm /etc/uhttpd.crt
rm /etc/uhttpd.key

Oraz ponownie uruchomić pakiet uhttpd

/etc/init.d/uhttpd restart

Panel administracyjny (port)

Oprócz wprowadzenia szyfrowanego połączenia https do naszego panelu administracyjnego przez przeglądarkę internetową (co nie jest zbyt wygodne w związku z problemem z certyfikatami) możemy również zmienić port, na którym nasz panel nasłuchuje.

Domyślnie jest to port 80 dla nieszyfrowanych połączeń HTTP lub 443 dla szyfrowanych HTTPS.

Aby zmienić te porty, możemy doinstalować pakiet luci-app-uhttpd

opkg update
opkg install luci-app-uhttpd

Dzięki czemu, w opcjach Usługi (Services)otrzymamy dodatkowe menu do zarządzania usługą uHTTPd służącą do wyświetlania m.in. naszego panelu.

OpenWrt Services uhttpd

OpenWrt Services uhttpd general settings

W HTTP listeners (i analogicznie dla HTTPS) należy dodać nowy port, na przez który będziemy łączyli się z naszym panelem administracyjnym. Dla przykładu, dla HTTP, jeżeli chcemy zmienić port z 80 na 8080, dodajemy (i usuwamy pozostałe) następujące linijki:

0.0.0.0:8080
[::]:8080

Całość zatwierdzamy przyciskiem Zapisz i Zastosuj (Save & Apply).

Jeżeli wszystko wykonaliśmy poprawnie, przechodzimy do naszego panelu, korzystając z nowego adresu:

http://192.168.1.1:8080

UPnP

Jeżeli używasz w sieci urządzeń, które potrzebują otworzyć wybrane porty na routerze, aby w sposób bezpośredni można było się z nimi połączyć z internetu, pomyśl o alternatywnym rozwiązaniu.

O ile domyślnie OpenWrt nie ma dodanej obsługi UPnP, to w bardzo łatwy sposób można ją dodać za pomocą pakietu miniupnpd oraz luci-app-upnp.

opkg install miniupnpd luci-app-upnp

Na obecną chwilę, tj. 20/10/2023, pakiet miniupnpd nie był dostępny w repozytoriach OpenWrt w wersji 23.05 przez co nie można go zainstalować.

Nie bez powodu, na stronie OpenWrt dotyczącej UPnP widnieje ostrzeżenie (https://openwrt.org/docs/guide-user/firewall/upnp/start), że używanie UPnP wprowadza spore ryzyko w kwestii prywatności. Wszystko jest związane z tym, że dowolny program, sprzęt, może bez naszej zgody otworzyć zewnętrzny port na naszym routerze i wpuścić kogokolwiek z internetu do naszej sieci domowej. To tak jak posiadanie drzwi w domu, które mogą zostać otwarte przez dowolną osobę w miarę potrzeb.

Nie bez powodu również, oficjalna strona OpenWrt nie rozwija, w jaki sposób zainstalować ten dodatek.

Jeżeli jednak zdecydowaliśmy się użyć UPnP w przeszłości, rozważmy opcję jego usunięcia.

opkg remove luci-app-upnp miniupnpd

Jako zamiennik, zawsze możemy użyć regułem w naszej zaporze sieciowej (Firewall) w celu przekierowania odpowiedniego portu na odpowiednie urządzenie w naszej sieci.

Network > Firewall > (zakładka) Port Forwards


Oprogramowanie

Oprócz tego, że zmieniliśmy oprogramowanie producenta na naszym routerze na bardziej bezpiecznie, nie znaczy, że wszystko ma być nieruszone przez wieki. Musimy zadbać, aby stale aktualizować oprogramowanie OpenWrt oraz pakiety, które mamy na routerze zainstalowane.

O ile samo oprogramowanie główne OpenWrt nie jest wypuszczane zbyt często, to w przypadku innego oprogramowania (pakiety oprogramowania) używanego w obrębie naszego routera, aktualizacje wypuszczane są kilka razy w tygodniu.

W związku z tym warto zadbać, aby je aktualizować regularnie. W tym celu należy przejść do System > Software, odświeżyć listę przyciskim Update list, a następnie w zakładce Updates poklikać na każde oprogramowanie w celu jego aktualizacji.

<a href="/images/2020/03/openwrt-system-software-min.png">OpenWrt System software</a>

Powyższa metoda jest nieco czasochłonna. Możemy dokonać tego również z poziomu terminala SSH, z wykorzystaniem pojedynczej komendy. Z jej wykorzystaniem, router pobierze informację o aktualnych wersjach oprogramowania i bazie na tym, co jest na naszym routerze “przestarzałe” i dokona automatycznej aktualizacji:

opkg update; opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade

I to by było na tyle.

Pozdrawiam.

Komentarze
Kategorie