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.

Sprawdzone w wersji OpenWrt 21.02 oraz OpenWrt 22.03

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

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