Instalacja Pi-hole na Raspberry Pi Zero 2 W

Pracując na co dzień w sieci internet bez przerwy jesteśmy narażeni na zagrożenia związane z próbami uzyskania nieautoryzowanego dostępu do naszych danych. Należy więc zachowywać ostrożność i przestrzegać podstawowych zasad bezpieczeństwa. Można również wspomóc się programami lub rozwiązaniami sprzętowymi blokującymi znane zagrożenia. Dość popularnym rozwiązaniem są wtyczki do przeglądarki, jednak moją uwagę zwrócił program Pi-hole.

Pi-hole to oprogramowanie przeznaczone na komputery Raspberry Pi oraz inne niewielkie urządzenia z procesorem ARM. Narzędzie działa jak wewnętrzny serwer DNS, który przy okazji tłumaczenia nazwy witryny na adres IP pozwala zablokować komunikację z niebezpiecznymi witrynami umieszczonymi na ogólnie dostępnych listach zagrożeń. Program jest otwarty i darmowy. Nie potrzebuje też większych zasobów obliczeniowych, a więc można go zainstalować i używać nawet na najmniejszych dostępnych na rynku komputerach jednopłytkowych.

Więcej informacji oraz obszerną dokumentację projektu znajdziesz na stronie https://pi-hole.net/. Z kolei na temat Raspberry Pi Zero 2 możesz przeczytać w artykule Nowy minikomputer Raspberry Pi Zero 2 W – następca Raspberry Pi Zero.

W dalszej części artykułu przedstawię proces instalacji oprogramowania na komputerze Raspberry Pi Zero 2. Komputer ten, jak wiadomo nie został zaprojektowany w celu osiągnięcia wysokiej wydajności obliczeniowej. Mimo to zapewnia wystarczające zasoby, aby udźwignąć sprawną obsługę narzędzia. Oczywiście instrukcja z najprawdopodobniej jedynie niewielkimi modyfikacjami może zostać użyta do instalacji Pi-hole na innych malinach, minikomputerach z procesorem ARM, a w razie potrzeby nawet na komputerach PC.

Więcej informacji o nowym systemie znajdziesz na stronie https://www.raspberrypi.com/news/raspberry-pi-os-debian-bullseye/

Instalacja sytemu operacyjnego

Oprogramowanie Pi-hole jest zgodne z kilkoma dystrybucjami systemu Linux – Raspberry Pi OS, Debianem, Ubuntu, Fedorą oraz CentOS – w wersjach aktualnych oraz kilku wcześniejszych. Pomimo nazwy program można uruchomić nie tylko na malince, ale właściwie na każdym komputerze, który jest w stanie uruchomić jedną z podanych dystrybucji. Może więc pracować zarówno na urządzeniu w architekturze ARM, jak i x86_64. Istnieje także opcja uruchomienia Pi-hole w środowisku Docker.

Ja w przykładzie użyję systemu Raspberry Pi OS w wersji Lite a więc m.in. bez środowiska graficznego, które nie będzie mi właściwie do niczego tutaj potrzebne.

Do nagrania karty graficznej użyję narzędzia Raspberry Pi Imager. W nowszych wersjach tego programu można uruchomić dodatkowe okno ustawień i w ten sposób już po nagraniu wygodnie włączyć SSH, skonfigurować połączenie Wi-Fi itd. Menu Advanced options można otworzyć kombinacją klawiszy CTRL+SHIFT+X.

Rys. 1. Menu Advanced options w Raspberry Pi Imager

Po wgraniu systemu można podłączyć malinkę do zasilania i uruchomić komputer. Niestety w przypadku Raspberry Pi Zero 2 W nie można odnaleźć urządzenia w sieci za pomocą skanerów IP takich jak nmap czy Advanced IP Scanner. W związku z tym należy zastosować inny sposób na poznanie adresu IP, jeśli chcemy pracować zdalnie.

  1. Można wejść do panelu administracyjnego routera z tego poziomu sprawdzić adres urządzenia. Niestety nie zawsze jest to możliwe, a również nie wszystkie routery udostępniają taką listę.
  2. Można uruchomić malinkę z podłączonym monitorem i klawiaturą, a następnie sprawdzić adres poleceniem ifconfig.
  3. Można również poeksperymentować z nadawaniem statycznego adresu IP. Wymaga to jednak dostania się do partycji w formacie ext3, co w systemie Windows może być problematyczne.

Oczywiście, jeśli dysponujemy monitorem i klawiaturą, cały proces instalacji można przeprowadzić tradycyjnie, bez potrzeby dostępu zdalnego.

Tradycyjnie na samym początku pracy warto zaktualizować system poleceniami:

Instalacja pakietu Pi-hole

Istnieje kilka możliwości instalacji pakietu Pi-hole, ale chyba najprostszą i najbardziej polecaną jest wpisanie polecenia

i kontynuacja przy pomocy instalatora graficznego.

Podczas instalacji program poprosi o odpowiedź na kilka pytań. Na początek zapyta o ustawienie statycznego adresu IP, co jest oczywiście niezbędne, aby malinka funkcjonowała jako serwer DNS. Zgadzamy się więc na tą opcję. W kolejnym ekranie możemy zdecydować czy utrzymać dotychczasowy adres jako stałe IP, czy też zmienić, albo w ogóle nie zmieniać na razie ustawień.

Rys. 2. Ustawienie statycznego adresu IP

Po ostrzeżeniu o możliwości (choć mało prawdopodobnej) spowodowania konfliktu przez router, musimy podjąć decyzję o serwerze, z którego otrzymamy dane DNS. Na potrzeby projektu wybrałem OpenDNS, którego zaletami są szybkość, a także filtry treści, co daje wstępne zabezpieczenia przed niechcianymi stronami.

Rys. 3. Ustawienie dostarczyciela danych DNS

Kolejny krok to ustawienie listy, z której Pi-hole będzie korzystać przy blokowaniu reklam. Aktualnie dostępna jest jedynie lista StevenBlack i ją na razie wykorzystamy.

Dalej następuje pytanie o instalację interfejsu web. Jest to dość wygodna metoda do konfiguracji Pi-hole, a więc rekomenduję, aby zgodzić się na instalację. Następnie program proponuje, aby zainstalować serwer lighttpd oraz niezbędne moduły. Jeśli nie mamy zamiaru instalować innego serwera www, możemy zgodzić się na tą opcję.

Rys. 4. Zgoda na instalację serwera lighttpd

Kolejne pytanie to zgoda na rejestrację zapytań na serwerze. Warto wiedzieć, że jeśli zaznaczymy tą opcję, to malinka będzie rejestrować wszystkie zapytania użytkowników, którzy będą korzystali z sieci. Jest to więc dość poważna ingerencja w prywatność użytkowników.

W kolejnym kroku instalator pyta jakie informacje ma zapisywać w logach. Mamy wybór od zapisywania wszystkiego, aż po tryb anonimowy, w którym zapis informacji będzie bardzo ubogi.

Po jakimś czasie program zainstaluje wszystkie komponenty serwera www i wyświetli informacje o ustawieniach serwera www. Znajdują się tam informacje o adresie/adresach IP oraz hasło do panelu www. Oczywiście hasło natychmiast należy zapisać.

Rys. 5. Informacje o ustawieniach serwera www

Konfiguracja DNS

Aby skutecznie używać Pi-hole należy nakazać urządzeniom, aby traktowały malinkę jako domyślny serwer DNS. Najlepiej zrobić to „globalnie” w ustawieniach routera, tak aby wszystkie łączące się urządzenia otrzymywały w domyślnej konfiguracji IP malinki jako DNS. Zazwyczaj robi się to w ustawieniach DHCP, w opcji ręcznego ustawienia serwera DNS.

W interfejsie routera powinno to wyglądać mniej więcej tak, jak na poniższym obrazku.

Rys. 6. Ustawienie własnego serwera DNS w sieci w ustawieniach routera

Każdy system operacyjny umożliwia także „lokalne” ustawienie używanego serwera DNS. Dotyczy to zarówno maszyn stacjonarnych czy laptopów, jak i wszelkiego rodzaju urządzeń mobilnych. Na przykład w systemie Windows 10 należy wejść w Ustawienia > Sieć i Internet > Zmień opcję karty. Następnie nacisnąć prawy przycisk myszy na urządzeniu, za pomocą którego łączymy się z siecią i wybrać Właściwości. Tam należy wejść we właściwości Protokołu Internetowego w wersji 4 (TCP/IPv4) i w nowym okienku oznaczyć Użyj następujących adresów serwerów DNS. Jako preferowany serwer DNS należy wpisać adres IP malinki.

Rys. 7. Ręczne ustawienie serwera DNS w systemie Windows 10

W przypadku systemu Ubuntu w wersji 20.04 LTS jest to jeszcze prostsze. Wystarczy wejść w ustawienia, znaleźć odpowiednią sieć i wejść w jej opcje, a następnie w zakładce IPv4 odznaczyć Automatycznie przy opcjach DNS. Można wtedy wpisać własne adresy serwerów DNS w polu poniżej.

Rys. 8. Ręczne ustawienie serwera DNS w systemie Ubuntu 20.04 LTS

Panel www

Jeśli wszystko poszło po naszej myśli, możemy teraz pracować z serwerem www. Aby się do niego dostać należy wpisać w pasku adresu przeglądarki adres IP. Panel wygląda jak na poniższym obrazku.

Rys. 9. Panel www oprogramowania Pi-hole

Na stronie głównej można zobaczyć aktualne statystyki programu. Są też linki do dokumentacji i możliwość wpłacenia twórcom projektu darowizny. Można się także zalogować za pomocą hasła uzyskanego w procesie instalacji. Po zalogowaniu mamy dostęp do dokładniejszych danych statystycznych, informacji z logów, a także do ustawień programu.

Dodawanie własnych list do Pi-hole

Wśród ustawień chciałbym zaprezentować opcję dodawania własnych list witryn do blokowania. Co prawda preinstalowana lista dość dobrze sprawdza się przy blokowaniu reklam i zagrożeń, ale warto zainstalować jeszcze listę, która odpowiada specyfice polskiego internetu. CERT Polska tworzy taką listę oraz odpowiada za jej aktualizację na bieżąco we współpracy z partnerami, m.in. sieciami telefonii komórkowej.

Więcej informacji o tym projekcie można znaleźć na stronie https://cert.pl/posts/2020/03/ostrzezenia_phishing/. Stamtąd też można pobrać pliki w kilku formatach, m.in. zgodnych z wtyczkami do przeglądarek.

Pi-hole przyjmuje zewnętrzne listy w formacie hosts. Aby dodać listę ostrzeżeń CERT Polska należy w panelu www wejść w Group Managment > Adlists, a następnie wkleić link https://hole.cert.pl/domains/domains_hosts.txt.

Rys. 10. Dodawanie list do Pi-hole

Aby zaktualizować listy witryn należy wejść w Tools > Update Gravity i nacisnąć przycisk Update. Listy będą aktualizowane automatycznie raz w tygodniu.

Podsumowanie

Projekt Pi-hole to ciekawe narzędzie umożliwiające ochronę sieci domowej przed zagrożeniami. Projekt jest prosty w instalacji, a jednocześnie oferuje duże możliwości. Nie potrzebuje do pracy zbyt dużych zasobów – bardzo płynnie działa nawet na Raspberry Pi Zero 2, który przecież nie jest urządzeniem przeznaczonym do wymagających zadań obliczeniowych. Pi-hole jest więc tanim i dobrym rozwiązaniem do blokowania zagrożeń w sieci.

Raspberry Pi Zero 2 W oraz Zero 2 WH (z przylutowanym złączem rozszerzeń) są dostępne w ofercie Kamami.pl. Sklep ten jest oficjalnym dystrybutorem produktów Raspberry Pi w Polsce.

O autorze