Pi-hole

Pi-hole, czyli odpowiedź na bolączki dzisiejszego Internetu

Każdy z nas przeglądając Internet napotyka na niechciane zdarzenia. Uciążliwe reklamy, przekierowania do podejrzanych stron czy śledzenie aktywności przez firmy zewnętrzne stały się chlebem powszednim dla osób korzystających z Internetu. Jednym ze sposobów na przeciwstawienie się takim zabiegom jest Pi-hole.

Pi-hole
Logo Pi-hole. Źródło: https://pi-hole.net/trademark-rules-and-brand-guidelines/

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 

 

 

 

Czym jest Pi-hole?

Pi-hole to aplikacja przeznaczona do działania na systemach operacyjnych z rodziny Linuksa. Szczególnie Raspberry Pi OS, skąd pochodzi nazwa tego programu. Pi-hole pozwala na utworzenie własnego DNS, który filtruje ruch sieciowy i nie pozwala domenom wpisanym na czarną listę (ang. blacklist) na przekazywanie jakichkolwiek treści do użytkownika. Dzięki temu wiele reklam i domen zawierających złośliwe oprogramowanie jest duszone w zarodku.

Przykładowe zapytania zablokowane przez Pi-hole.

Czym wyróżnia się Pi-hole?

Przede wszystkim. Pi-hole działa jako DNS, blokując reklamy lub dostęp do określonych domen dla całej organizacji, nie ograniczając się do danej grupy urządzeń. Jest również otwartoźródłową aplikacją (ang. open source), dzięki czemu nie wymaga do działania wykupienia licencji. Nie wymaga również wielu zasobów sprzętowych – z powodzeniem może działać na starszych wersjach Raspberry Pi. W przeciwieństwie do wtyczek blokujących reklamy na poziomie przeglądarki, działanie Pi-hole nie jest wykrywane przez strony internetowe. Pozwala to ominąć reklamy na stronach wymuszających wyłączenie wspomnianych wtyczek.

Pi-hole pozwala również na edytowanie listy zabronionych domen lub dodawanie własnych rekordów DNS. Pozwala również na tworzenie użytkowników (w oparciu o adresy fizyczne) i grup, dzięki czemu można zarządzać dostępem do treści dla określonych osób. Pozwala to np. na ograniczenie dostępu do określonych domen najmłodszym użytkownikom sieci. Możliwe jest także zablokowanie dostępu do mediów społecznościowych w danej organizacji.

Instalacja Pi-hole

Instalację Pi-hole można przeprowadzić na dowolnej dystrybucji Linuksa. Zaprezentuję instalację Pi-hole na Raspberry Pi. To urządzenie doskonale nada się jako DNS w lokalnej sieci – RPi pobiera mało prądu i nie zajmuje wiele miejsca, dzięki czemu może działać nie obciążając naszego portfela.

Raspberry Pi 3, na którym zainstalowałem Pi-hole. Maksymalna temperatura CPU urządzenia wyniosła 50 stopni Celsjusza.

Wymagania wstępne

Wszystkie polecenia dotyczą instalacji Pi-hole na Raspberry Pi OS.

Aby Pi-hole używał najnowszych możliwych wersji pakietów, należy zaktualizować listę dostępnych pakietów i zainstalować je. Dokonuje się tego za pomocą polecenia:

sudo apt update && sudo apt upgrade

Wymagania wstępne

Wszystkie polecenia dotyczą instalacji Pi-hole na Raspberry Pi OS.

Aby Pi-hole używał najnowszych możliwych wersji pakietów, należy zaktualizować listę dostępnych pakietów i zainstalować je. Dokonuje się tego za pomocą polecenia:

sudo apt update && sudo apt upgrade
Po wykonaniu tego polecenia naszym oczom ukaże się pytanie o to, czy zainstalować dane pakiety wraz z ich wielkością, a także listą możliwych pakietów do zaktualizowania. Aby to zatwierdzić, należy wpisać znak „Y” i zatwierdzić Enterem.

Teraz możemy przejść do właściwej instalacji oprogramowania.

Instalowanie programu

Aby zainstalować Pi-hole, należy użyć jednej z metod dostępnych tutaj. Do pobrania programu można użyć następujących poleceń:

wget -O basic-install.sh https://install.pi-hole.net 
sudo bash basic-install.sh
Pi-hole

Po chwili naszym oczom ukaże się prosty interfejs, dzięki któremu możemy zainstalować Pi-hole.

Na tym ekranie nie pozostaje nam nic innego niż naciśnięcie Entera.

Następnie należy wybrać interfejs sieciowy, który będzie wykorzystywany przez aplikację. Domyślnie dla Raspberry Pi eth0 to karta sieciowa wykorzystująca port Ethernet, zaś wlan0 to karta sieciowa wykorzysująca Wi-Fi. Przy obecnie wykorzystywanym porcie widoczny jest symbol (*).

Ważne jest to, aby interfejs miał ustawiony statyczny adres IP.

Kolejnym krokiem jest wybór nadrzędnego DNS. Przy konfigurowaniu wybrałem popularny DNS od Cloudflare (1.1.1.1) ze względu na bardzo szybkie odpowiadanie na zapytania. Jeśli chcesz ustawić inny DNS od wylistowanych, wybierz opcję Custom.

Po wybraniu DNS instalator spyta nas o doinstalowanie listy blokowanych hostów. Oczywiście, po skonfigurowaniu Pi-hole można ją usunąć lub dodać inne listy. Zalecam wybranie tej opcji, ponieważ StevenBlack’s Unifed Hists List zawiera prawie 190 tysięcy domen, które powinny być blokowane.

Pi-hole

W toku instalacji zostaniemy zapytani o to, czy chcemy zainstalować interfejs graficzny i zezwolić na rejestrowanie zapytań. Na oba pytania zalecam opowiedzieć twierdząco, naciskając Enter.

Ostatnim oknem instalatora jest ekran informujący o tym, w jaki sposób zarządzać Pi-hole z poziomu przeglądarki. Szczególnie ważne jest hasło służące do pierwszego logowania, które należy zapisać w bezpiecznym miejscu. Oczywiście po pierwszym logowaniu trzeba ustawić bezpieczne, bardziej złożone hasło.

Po zamknięciu okna hasło wraz z URL do panelu logowania pojawi się na ekranie. Link do strony można skopiować do pasku adresu przeglądarki.

Ustawienia zapory ogniowej (firewall)

Do prawidłowego działania Pi-hole wymagane jest otwarcie portu 53, odpowiedzialnego za zapytania DNS. Do konfiguracji Pi-hole wykorzystuje port 80 – domyślny dla komunikacji z wykorzystaniem HTTP. Aby otworzyć te porty należy użyć poleceń:

sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
Pi-hole

Aby być pewnym, że zmiany weszły w życie, należy zrestartować firewalla i usługę Pi-hole. Można to zrobić za pomocą poleceń:

sudo firewall-cmd --reload
sudo systemctl restart pihole-FTL.service

Warto teraz sprawdzić, jakie porty mamy otwarte. Można tego dokonać za pomocą polecenia:

nmap 127.0.0.1

Port 53 i 80 są otwarte, co pozwala Pi-hole na poprawne działanie.

Problemy z zaporą ogniową

Jeżeli podczas instalacji wystąpią problemy z firewallem, warto zerknąć tutaj – twórcy Pi-hole zadbali o to, aby użytkownicy mogli w prosty sposób skonfigurować prawidłowo aplikację. Czasem wymagane jest utworzenie interfejsu lo. Aby to zrobić, należy użyć poleceń:

sudo firewall-cmd --permanent --add-service=http --add-service=dns --add-service=dhcp --add-service=dhcpv6
sudo firewall-cmd --permanent --new-zone=ftl
sudo firewall-cmd --permanent --zone=ftl --add-interface=lo
sudo firewall-cmd --permanent --zone=ftl --add-port=4711/tcp
sudo firewall-cmd --reload
Pi-hole

Konfigurowanie Pi-hole z poziomu przeglądarki

Aby przejść do konfigurowania Pi-hole w przeglądarce należy wpisać odpowiedni URL w pasku adresu. Schemat wygląda następująco:

http://[adres_ip]/admin

W moim przypadku będzie to adres http://192.168.25.180/admin.

Po wejściu na stronę widoczny jest panel logowania. W polu Password należy wpisać hasło wygenerowane przez Pi-hole, o którym wspominałem wcześniej.

Panel logowania
Panel logowania z wpisanym hasłem

Po zalogowaniu naszym oczom ukaże się panel zarządzania. Nie zawiera on aktualnie danych o zapytaniach, ponieważ żadne z urządzeń nie ustawiło go jako swój DNS. Ponad 188 tysięcy domen jest aktualnie zablokowanych, ponieważ tyle znajduje się na doinstalowanej liście.

W lewym górnym rogu znajdują się informacje o stanie urządzenia – szczególnie dla nas ważne jest wykorzystanie pamięci i temperatura urządzenia.

Dashboard – panel, dzięki któremu można zrobić naprawdę wiele

Zmiana hasła

Bardzo ważne jest to, aby nie korzystać z wygenerowanych domyślnie haseł. Aby zmienić hasło do logowania w panelu administracyjnym należy użyć polecenia:

sudo pihole -a -p

Po udanej zmianie hasła zostaniemy o tym poinformowani przez komunikat New password set z zieloną fajką w nawiasie kwadratowym.

Podłączenie urządzeń do Pi-hole

Aby zapytania DNS trafiały do Pi-hole, wystarczy ustawić adres IP Raspberry Pi (bądź innego urządzenia na którym działa aplikacja) jako DNS.

W Windowsach dokonuje się tego w następujący sposób:

1. Przejście do panelu sterowania
2. Wybór opcji Centrum sieci i udostępniania

Pi-hole

3. Wybór opcji Zmień ustawienia karty sieciowej

4. Wybór wykorzystywanej karty sieciowej
5. Naciśnięcie Właściwości, a następnie Protokół internetowy w wersji 4 (TCP/IPv4)

6. Ustawienie adresu IP urządzenia z Pi-hole jako Preferowany serwer DNS (w moim przypadku 192.168.25.180).

W systemach linuksowych można zmienić DNS w następujący sposób:

1. Wpisanie w terminalu polecenia sudo nano /etc/resolv.conf

2. Zmiana parametru nameserver na nameserver [adres IP] lub wpisu od zera.

Pi-hole

3. Zapisanie pliku.

Adres serwera DNS można ustawić na urządzeniach opartych na innych systemach. Nic nie stoi na przeszkodzie, aby ustawić Pi-hole jako serwer DNS dla routera, smartfonów czy nawet telewizorów.

Dodawanie klientów

Do zarządzania poszczególnymi urządzeniami należy utworzyć klientów, opartych na adresach MAC. Poszczególnym klientów należy dodać do grupy, dzięki czemu można ograniczyć dostępne domeny dla danych użytkowników. Przykładowo – dla grupy uczniów w szkole można zablokować dostęp do określonych stron. Aby dodać nowych klientów, należy przejść do zakładki Clients i dodać MAC adres urządzenia wraz z dowolną nazwą. Jeśli urządzenie odpytało wcześniej Pi-hole, adres MAC będzie można dodać z rozwijanego menu.

Adlists (listy wykluczonych domen)

Pi-hole pozwala na dodanie wielu list domen, które zostaną zablokowane. Domyślnie w panelu widoczna jest lista dodana podczas wstępnej konfiguracji. W Internecie można znaleźć wiele list ze złośliwymi domenami. Osobiście polecam listę publikowaną przez CERT Polska, dostępną tutaj. Lista zawiera prawie 100 tysięcy domen, które były używane m.in. przez cyberprzestępców.

Aby dodać listę, należy wkleić link do niej i opisać dowolnym komentarzem.

Pi-hole

Po dodaniu listy widoczny jest znak zapytania na szarym tle. Aby lista weszła w życie, należy użyć polecenia:

pihole -g

Po użyciu polecenia powinna pokazać się zielonka fajka obok linku do danej listy.

Sprawdzenie działania listy wykluczonych domen

Aby sprawdzić poprawność konfiguracji próbowałem wejść na dwie strony, które znajdują się na liście pochodzącej z CERT. Adresy tych stron częściowo zakryję, ponieważ mogą zawierać szkodliwe oprogramowanie.

Pi-hole

Jak widać na zrzutach ekranu, nie udało mi się połączyć z tymi stronami. Zobaczyłem również co zarejestrował Pi-hole.

Jak widać na zrzucie ekranu, Pi-hole zablokował dostęp do wspomnianych domen.

Dodawanie rekordów DNS

Pi-hole z założenia pełni rolę DNS, dlatego możemy dodawać do niego swoje własne rekordy. Stworzyłem prostą stronę pod adresem 192.168.25.189.

Aby dodać do niej rekord DNS, dzięki któremu po wpisaniu domeny będziemy przekierowani na tę stronę, należy przejść do zakładki Local DNS z menu po lewej stronie. Następnie w opcji DNS Records możemy wpisać pożądaną domenę wraz z adresem IP do przekierowania. W moim przypadku była to domena kotek.local i adres IP 192.168.25.189.

Po wpisaniu kotek.local w przeglądarce ukazuje się pożądana strona.

W lokalnym DNS dodawane domeny mogą mieć niestandardową składnię. Aby to udowodnić, do tej samej strony internetowej dodałem rekord uroczy.kotek.

Pi-hole

Blokowanie domen

Pi-hole pozwala również na blokowanie dostępu do pojedynczych domen – nie tylko do listy. Przykładowo, chciałem zablokować moim domownikom możliwość wejścia na facebook.com. Aby zarządzać poszczególnymi domenami, należy przejść do zakładki Domains.

Aby zablokować dostęp do danej domeny, należy wpisać domenę wraz z komentarzem, a następnie Add to Blacklist.

Pi-hole
Pi-hole

Sprawdźmy, czy wskazana domena jest osiągalna.

Pi-hole

Zgodnie z wpisem, domena facebook.com jest nieosiągalna. Sprawdźmy również, co zarejestrował Pi-hole.

Pi-hole

Jak widać na zrzucie ekranu, Pi-hole zablokował domenę ze względu na wpis na czarną listę (exact blacklist).

Prywatność a Pi-hole

Pi-hole może sprawiać wrażenie narzędzia, które służy do podglądania ruchu użytkowników. Dostosowanie tego, co jest zbierane przez Pi-hole, dostępne jest w opcji Settings. Z prostego menu należy wybrać opcję odpowiednią dla organizacji.

Pi-hole

Wyłączanie blokowania

Pi-hole pozwala na tymczasowe wyłączanie blokowania domen z list. W menu po lewej stronie należy wybrać opcję Disable Blocking wraz z pożądanym zakresem czasu.

Pi-hole

Statystyki

Po niecałych czterech godzinach udało mi się zebrać garść statystyk. Z Pi-hole korzystały dwa urządzenia (PC i smartfon).

Pi-hole
Panel zarządzania

Jak widać na zrzucie ekranu, ponad 10% zapytań DNS zostało odfiltrowanych przez Pi-hole. W panelu zarządzania widoczne są również statystyki odnośnie najpopularniejszych odwiedzonych i zablokowanych domen, jak i ruchu dozwolonego i zablokowanego dla każdego z klientów.

Pi-hole
Panel zarządzania c.d.

Podsumowanie

Pi-hole to aplikacja, która znacząco poprawia komfort użytkowania Internetu, a także zwiększa bezpieczeństwo. Wiele różni ją od klasycznego DNS. Dużą zaletą jest to, że może działać na Raspberry Pi – dzięki temu do jej działania nie jest wymagane urządzenie pobierające duże ilości prądu.

Ogromną zaletą jest jej niewykrywalność przez strony internetowe, co jest przewagą tego programu względem wtyczek blokujących reklamy. Polecam zapoznać się z tym narzędziem, a także przetestować w praktyce jego możliwości. Prostota instalacji i konfiguracji sprawia, że może być używany przez osoby, które nie mają specjalistycznej wiedzy związanej z różnymi gałęziami informatyki.

Pisał dla Was Oskar Klimczuk.

 

 

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 
 
 

Lekcja demo kursu Grafany!

X