chaos-calmer

Logread, czyli system logowania w OpenWRT

Każdy szanujący się system, nawet ten najmniejszy na bazie OpenWRT, musi posiadać mechanizm logowania komunikatów. Logi routera to bardzo ważna rzecz. Jeśli coś dolega naszemu małemu przyjacielowi, to jest niemal pewne, że właśnie wśród tych wiadomości znajdziemy przyczynę problemów. Każda usługa systemowa działająca na routerze przesyła logi, które są zbierane przez demon logowania. W Chaos Calmer odpowiadają za to logd oraz logread . Standardowa konfiguracja logów w OpenWRT nie jest raczej skomplikowana ale niewiele osób wie, że logi routera można zapisywać w pliku lub przesłać je przez sieć do innego hosta. W tym wpisie postaramy się właśnie zrealizować te dwa zadania.

Strefa czasowa (timezone) w OpenWRT

Tanie routery WiFi przeznaczone do użytku domowego nie zawierają w sobie zegara czasu rzeczywistego (RTC, Real Time Clock). Taki zegar jest implementowany w standardowych komputerach PC czy laptopach ale większość routerów go nie posiada. Niesie to za sobą pewne komplikacje. Skąd niby router ma wiedzieć jaki mamy aktualnie czas, skoro nie ma żadnego punktu odniesienia? Komputer bez precyzyjnie ustawionego czasu może mieć problemy z certyfikatami SSL/TLS. Niewłaściwy czas może także utrudnić analizę pewnych zdarzeń typu nieautoryzowane próby dostępu do sieci. Ważne jest zatem, by czas na routerze wyposażonym w firmware OpenWRT był zawsze aktualny i w tym wpisie postaramy się zadbać o to, by strefa czasowa była odpowiednia, oraz by router uwzględniał czas letni. Przyjrzymy się także mechanizmom aktualizacji czasu przez protokół NTP.

Hostname, czyli nazwa hosta w OpenWRT

Po wgraniu świeżego firmware OpenWRT, mamy domyślnie skonfigurowany system, który umożliwia nam nawiązanie połączenia sieciowego ze światem. Niemniej jednak, w przypadku posiadania w domu kilku stacji roboczych, zapamiętanie ich adresów IP może być niemałym problemem. Niemniej jednak, każdemu hostowi w sieci możemy przypisać nazwę, tzw. hostname. W ten sposób możemy powiązać nazwy poszczególnych komputerów z przypisanymi in adresami IP. To rozwiązanie ma tę zaletę, że nie musimy pamiętać już adresów IP. Możemy za to posługiwać się nazwami, które są o wiele łatwiejsze do zapamiętania dla człowieka. Działa to mniej więcej na tej samej zasadzie co domeny internetowe. W tym wpisie postaramy się skonfigurować domenę, w której pracuje router oraz nazwy hostów w sieci.

Skrypty startowe init w OpenWRT

Znaczna część usług, które są dostępne w OpenWRT, jest odpalana w fazie startowej routera. Te zadnia są realizowane przez skrypty startowe, które są dołączane w konkretnych pakietach. Takie skrypty są wywoływane w odpowiedniej kolejności. Każdy z nich można dodać lub usunąć z autostartu. W przypadku, gdy jakaś usługa nie dostarcza swojego skryptu startowego, możemy pokusić się o napisanie jej takowego. Oczywiście, nic też nie stoi na przeszkodzie, by utworzyć własne skrypty startowe, które niekoniecznie odnoszą się do określonych usług. Mogą one np. realizować pewne określone zadanie. W tym wpisie przybliżymy sobie trochę budowę skryptów startowych w OpenWRT tak, by być w stanie je tworzyć i edytować jeśli zajdzie taka potrzeba.

Zmiana rozmiaru katalogu /tmp/ pod OpenWRT

OpenWRT ma w swoich repozytoriach całe mnóstwo pakietów. By móc je zainstalować, potrzebne jest nam miejsce na flash'u routera. Ten z kolei nie jest zbyt duży, często nie przekracza 16 MiB. Podczas pracy, system operacyjny routera przeprowadza cały szereg operacji. Część z nich generuje jakieś dane, np. tworzone są pliki konfiguracyjne, generowane statystyki czy pobierane z internetu pliki w celu dalszego ich przetworzenia. Zwykle są to pliki, które wędrują do katalogu /tmp/ . Gdybyśmy chcieli zapisać wszystkie te informacje na flash'u routera, to zabrakłoby nam zwyczajnie miejsca. Inną kwestią są problemy związane z zapisem samego flash'a, który ulega zużyciu. Dlatego też, szereg operacji zapisu został przeniesiony do pamięci operacyjnej RAM. W ten sposób mamy do wykorzystania nieco więcej miejsca ale standardowo nie więcej niż 50% wielkości pamięci operacyjnej. Wielkość tego RAMdysku można dostosować i w tym wpisie zobaczymy jak to zrobić.

Dysk, pendrive i inne nośniki pod OpenWRT

Czym by był router bez portów USB? Obecnie chyba wszystkie routery posiadają przy najmniej jeden taki port. Umożliwia to podłączenie pendrive, dysku USB, drukarki i innych urządzeń posiadających interfejs USB. W przypadku, gdy posiadamy jeden port USB i chcemy podłączyć dwa (lub więcej) urządzenia, musimy skorzystać z hubów USB. Ja w przypadku swojego routera TP-LINK TL-WR1043N/ND v2 mam zastosowane właśnie takie rozwiązanie. Niby potrzebuję trzy porty USB, a ten router ma tylko jeden. Co prawda, pojawia się problem z zapotrzebowaniem na energię ale aktywne huby USB wyposażone w zasilacze niwelują tę dolegliwość. Ten wpis ma na celu przedstawić zarządzanie tymi wszystkimi nośnikami pod OpenWRT. Zostanie tutaj pokazane jak stworzyć i zamontować partycje o systemie plików EXT4, NTFS, FAT.

Extroot i whole_root (fullroot) pod OpenWRT

Domowe routery WiFi zwykle nie dysponują flash'em o dużej pojemności. W ogromnej części przypadków pamięć flash w takich urządzeniach nie przekracza 16 MiB. W zasadzie jest to wystarczająca ilość miejsca ale tylko w przypadku korzystania z oryginalnego firmware producenta routera. Gdy w grę wchodzi OpenWRT, to przy tak niewielkiej przestrzeni jest duże prawdopodobieństwo, że przy instalowaniu dodatkowych pakietów zwyczajnie zabraknie nam miejsca. Jeśli nasz router dysponuje chociaż jednym portem USB, to możemy rozszerzyć system plików routera do rozmiarów partycji pendrive, który zostanie podłączony. W ten sposób z tych 16 MiB może nam się zrobić, np. 1-2 GiB, a to już w zupełności wystarczy na instalację dowolnych pakietów z repozytorium OpenWRT. Cały ten zabieg nosi nazwę extroot (external root) lub whole_root (fullroot) i w tym wpisie prześledzimy procedurę tworzenia tego mechanizmu.

Konfiguracja dnscrypt-proxy w OpenWRT

Realizowanie zapytań DNS jest kluczowe do poprawnego działania min. stron internetowych. Router z OpenWRT na pokładzie bez problemu potrafi rozwiązywać domeny na adresy IP. Jest to realizowane przez oprogramowanie dnsmasq . Problem w tym, że zwykle resolver, który będzie uwzględniany w konfiguracji routera, wskazuje na serwery DNS naszego ISP, czy też jakiejś większej korporacji. W ten sposób, wszystkie dane z przeglądania stron internetowych podajemy tym organizacjom za free. Przy pomocy narzędzia dnscrypt-proxy jesteśmy w stanie zabezpieczyć naszą sieć przed tego typu zabiegami zbierania danych. Po części też możemy uchronić się przed cenzurą, którą może nam zafundować lokalny provider internetowy. W tym artykule zaimplementujemy obsługę szyfrowanego resolver'a DNS na naszym domowym routerze.

OPKG, czyli menadżer pakietów w OpenWRT

W OpenWRT do zarządzania pakietami wykorzystywany jest menadżer pakietów opkg. To przy jego pomocy instalujemy i usuwamy pakiety. Niemniej jednak, to narzędzie nie ogranicza się jedynie do tych dwóch powyższych czynności. Przy pomocy opkg jesteśmy w stanie przeprowadzić szereg innych operacji dotyczących zarządzania pakietami w systemie operacyjnym naszego domowego routera. W tym wpisie prześledzimy sobie poszczególne opcje jakie ten menadżer pakietów nam oferuje.

Klucze szyfrujące RSA w OpenWRT (ssh)

Klucze RSA w protokole SSH mogą być wykorzystane jako sposób identyfikacji danej osoby przy logowaniu się do zdalnego serwera. Te klucze zawsze występują w parach. Jeden prywatny, drugi publiczny. Pierwszy z nich jest znany tylko nam i powinien być trzymany w sekrecie i pilnie strzeżony. Klucz publiczny z kolei zaś jest przesyłany na każdy serwer SSH, z którym chcemy się połączyć. Gdy serwer jest w posiadaniu naszego klucza publicznego i widzi przy tym, że próbujemy nawiązać połączenie, używa on tego klucza, by wysłać do nas zapytanie (challange). Jest ono zakodowane i musi na nie zostać udzielona prawidłowa odpowiedź. Tej z kolei może udzielić ktoś, kto jest w posiadaniu klucza prywatnego. Nie ma innej opcji, by rozkodować wiadomość. Dlatego też nikt inny nie może udzielić na nią prawidłowej odpowiedzi. To rozwiązanie eliminuje wrażliwość na różne formy podsłuchu. Ten kto nasłuchuje nie będzie w stanie przechwycić pakietów zawierających hasło, bo ono nie jest nigdy transmitowane prze sieć. No i oczywiście jeśli chodzi o samo hasło, to odpadają nam ataki bruteforce pod kątem jego złamania. W tym wpisie postaramy się zaimplementować na routerze z OpenWrt system logowania oparty o klucze RSA.