Z roku na rok reklam i niepożądanego ruchu w sieci jest co raz więcej. Aplikacje, strony internetowe, z których korzystamy na co dzień przeznaczają dużą część swojej przestrzeni na wyświetlanie irytujących reklam. Nie wspominając już o śledzeniu, profilowaniu itp. Postaram się omówić kilka sposobów na blokowanie niechcianego ruchu na telefonie. Sposoby te znacznie ułatwiają korzystanie z sieci. Sam jeden z nich wykorzystuje. Aby wszystko było w miarę jasne najpierw przyjrzymy się co się dzieje, jeżeli w pasku przeglądarki wpiszemy jakiś adres (pomoże to zrozumieć zasadę blokowania i może pomóc w naprawie ewentualnych problemów). Do dzieła!

Po wpisaniu adresu w przeglądarce…

naciskamy enter i naszym oczom ukazuje się strona www. Oprócz załadowania swojej zawartości, dana strona może załadować dane z innych adresów. Po kolei, jak wygląda cały proces? Adresy, którymi posługujemy się w sieci WWW znane są jako adresy URL (Uniform Resource Locator). Z definicji każdy prawidłowy i pełen adres URL powinien jednoznacznie adresować i identyfikować pojedynczy zasób na zdalnej maszynie (serwerze). Cała specyfikacja adresu URL została opisana przez pioniera usługi WWW Tima Berensa-Lee w dokumencie RFC 3986. Ciekawym polecam historię sieci WWW chociażby na Wikipedii. Ok, wróćmy do tematu. Po wpisaniu adresu (nazwy) w przeglądarce odpytywany jest serwer DNS (Domain Name Service) o adres IP danej strony internetowej. Ludziom łatwiej jest zapamiętywać nazwy niż numery, no a komputery wolą odwrotnie. Nazwijmy tę fazę jako DNS lookup. Serwer DNS jest odpowiedzialny za translację adresów IP na nazwy i odwrotnie. Jak można się domyślić serwer DNS musi posiadać bazę danych, w której to będzie miał przypisane adresy IP do nazw.

Idąc dalej karta sieciowa, która jest wykorzystywana do łączenia się ze światem musi mieć wskazany serwer DNS, z którego ma korzystać. W większości są to serwery Google – 8.8.8.8. Warto się przyjrzeć temu projektowi, który pozwala na wycinanie adresów właśnie na poziomie DNS. Współczesne komputery zazwyczaj posiadają 3 karty sieciowe:

  • – kartę Wi-Fi
  • – kartę Ethernetową (kabelek RJ45)
  • – kartę wirtualną typu Loopback

Listę wszystkich kart wraz z adresacją zobaczyć możemy korzystając z polecenia ipconfig /all (start -> cmd) na Windowsie, na systemach Linuxowych jest to polecenie ifconfig.

Skoro mamy już adres IP serwisu z którym chcemy się połączyć nic nie stoi na przeszkodzie aby z niego skorzystać i połączyć się. W tym momencie do gry wchodzi protokół HTTP. Przeglądarka wysyła zapytanie HTTP do serwera, który odpowiada odpowiednią treścią.

Pobieranie danych przez witrynę

Powyższy obrazek demonstruje wykorzystanie narzędzia diagnostycznego, którym dysponuje każda nowoczesna przeglądarka (F12). Za pomocą tego narzędzia możemy między innymi zobaczyć co jest ładowane i kiedy. Zobaczymy tutaj dokładne adresy oraz statusy HTTP, mówiące w skrócie o tym czy dany zasób udało się załadować. W przeglądarce korzystam z uBlocka stąd wybrany ruch jest wycinany (na czerwono). W tym momencie możemy wyróżnić blokery na warstwie programowej typu: uBlock, AdBlock itp. Takie blokery analizują kod, który przesyłany jest do przeglądarki i na podstawie filtrów wycinają z niego niechciane elementy. Warto rzucić okiem na dodatkowe filtry do uBlocka czy AdBlocka, za pomocą, których możemy usunąć wszystkie irytujące okienka na stronach typu ciasteczka, RODO itp. Filtry do pobrania tutaj.

Ok, ale co z instalowaniem dodatków na mobilnej wersji przeglądarki. Niestety na mobilnej wersji Google Chrome nie można tego zrobić. Jedną z alternatyw jest przeglądarka Brave, która ma wbudowanego blokera do pobrania tutaj. Testowałem jakiś czas, nie miałem żadnych problemów. Strony były czyste. Strony internetowe mamy załatwione, ale co z reklamami w różnego rodzaju aplikacjach? Tutaj przechodzimy do głównej części artykułu. Przedstawię tutaj dwa sposoby, jeden z nich wymaga roota telefonu, drugi nie.

Blokowanie niechcianych połączeń

Z poziomu systemu operacyjnego bez konieczności instalowania dodatkowego oprogramowania możemy “zablokować” określone adresy. W tym celu potrzeba wyedytować plik hosts, który w zależności od systemu znajduje się:

  • – Windows: C:\Windows\System32\drivers\etc
  • – Linux: /etc/hosts

Jak czytać taki plik? Wszystko co zaczyna się od znaku “#” to komentarz. Plik zawiera pary adresów po lewe stronie adres IP, który ma zostać odpytany w momencie wywołania adresu, który znajduje się po prawej stronie. Bez dodatkowej filozofii. Jednym słowem plik hosts pozwala na rozwiązanie danej nazwy hosta na wskazany adres IP i działa to tylko w obrębie lokalnego komputera. Załóżmy, że chcemy zablokować stronę wp.pl – wystarczy do pliku hosts dodać wpis:

Użyłem tutaj adresu lokalnej karty sieciowej – 127.0.0.1 (localhost). W momencie jak wpiszę w pasku adresu wp.pl przeglądarka będzie próbowała połączyć się z adresem 127.0.0.1 na którym domyślnie nic nie ma. Strona się nie załaduje. W sieci znajdziemy gotowe pliki hosts zawierające tysiące adresów. Dzięki temu nasz system nie będzie nawiązywał połączeń z adresami skojarzonymi jako malware, adware. Przykładową listę znajdziemy tutaj.

Filtrowanie niechcianego ruchu za pomocą pliku hosts

Poniżej fragment jednego pliku z listy powyżej. Jak widać widzimy tutaj sekcję Analytics, w której znajduje się sporo adresów. Dzięki temu z naszego komputera nie wyjdzie żadne połączenie, do któregoś z tych serwisów. Biorąc pod uwagę dużo niechcianego ruchu na współczesnych stronach (śledzenie/reklamy/profilowanie) zastosowanie takiego pliku jest praktyczne. Wystarczy skopiować plik lub jego zawartość i wkleić w jedną z wcześniej wymienionych lokalizacji.

Jak to jest z Androidem? System ten bazuje na Linuxie więc plik hosts znajdziemy na katalogu /etc. Nie posiadając roota nie możemy wyedytować tego pliku. Musimy mieć uprawnienia. Co jeżeli nie chcemy łamać swojego telefonu w trosce o bezpieczeństwo? Odpowiedzą jest VPN.

Połączenie z wykorzystaniem VPNa

VPN – Virtual Private Network zapewnia nam tunelowanie połączenia przez wybraną maszynę. Aby nie mówić za wiele, spójrzmy na grafikę poniżej.

Podobny obraz
Diagram połączenia VPN

Zestawienie połączenia z wykorzystaniem VPNa wymaga dodatkowej maszyny (komputera podłączonego do sieci). Lokalizacja nie ma znaczenia. W momencie kiedy korzystamy z internetu mając zestawione połączenie z VPN cały ruch sieciowy idzie przez dodatkową maszynę (ruch jest tunelowany). Ma to swoje zalety:

  • – dostawca internetu ISP nie widzi naszego ruch
  • – funkcjonujemy w sieci z innym adresem IP (zależy od lokalizacji VPN)

Jeżeli nasz ruch idzie przez dodatkową maszynę to możemy ją wykorzystać i za jej pomocą wyciąć niechciane połączenia. Takie rozwiązanie może się przydać jeżeli nie chcemy edytować pliku hosts na telefonie z Androidem.

Należy przy tym pamiętać że VPN nie jest rozwiązaniem, które zapewni nam 100% gwarancję anonimowości w sieci.

Przebieg procesu:

  1. Dostępna maszyna z dostępem do sieci
  2. Konfiguracja serwera VPN
  3. Wygenerowanie pliku konfiguracyjnego
  4. Połączenie z maszyną za pomocą pliku konfiguracyjnego za pomocą klienta VPN np. OpenVPN

Jeżeli chodzi o samą maszynę to rynek jest spory. Ja korzystam z rozwiązań od Aruba Cloud istnieje możliwość przetestowania za darmo: https://www.arubacloud.pl/przetestuj-za-darmo.aspx. Cały proces konfiguracji z grafikami znajdziemy tutaj. Maszyna kosztuje mnie 4zł miesięcznie i jest zlokalizowana w Czechach. Popularne ostatnio są też usługi oferowane przez NordVPN (nie testowałem).

Informacje o stworzonej maszynie na Aruba

Jak widać na obrazku powyżej moja maszyna ma zainstalowanego 64 bitowego CentOSa, 1 CPU, 1 GB RAM, i 20GB HDD. Takie wymagania w zupełności wystarczą to tego, aby maszyna była tylko “przełącznikiem”. Aby skonfigurować serwer VPN na naszej maszynie musimy się do niej zalogować. W tym celu musimy mieć adres IP, nazwę użytkownika i hasło oraz dysponować dowolnym klientem SSH (ssh, Putty).

Po stworzeniu maszyny zachęcam do zmiany domyślnego portu SSH na jakiś wyższy. Zniweluje to ataki słownikowe przez boty, które najczęściej próbują się logować na domyślny port 22. Można też skorzystać z dodatkowego oprogramowania typu fail2ban, włączyć logowanie za pomocą klucza itp – temat na inny artykuł. Po zalogowaniu przydatne mogą być poniższe polecenia:

  • ls – listowanie bierzącego katalogu
  • cd – zamian katalogu
  • htop – menedżer zadań
  • yum – instalator pakietów

Mam teraz do wyboru 2 opcje:

  • instalacja wszystkiego ręcznie
  • wykorzystanie skryptu, który zrobi wszystko za nas

Instalację ręczną serwera razem z konfiguracją linkowałem wcześniej, nie ma sensu abym ją tutaj opisywał. Instrukcje dotyczące skryptu znajdziemy na https://github.com/BobNisco/adblocking-vpn. Plik README zawiera cały opis zadań do wykonania wystarczy copy paste i w ciągu kilku minut powinniśmy mieć zainstalowany i skonfigurowany program serwera VPN, pobrany plik hosts, skonfigurowany DNS i wygenerowany plik .ovpn. Plik hosts będzie blokował 41333 adresów. Sporo. Mamy już wszystko co trzeba. Plik .ovpn pobieramy do siebie lokalnie np. za pomocą polecenia scp.

Ten plik posłuży nam na ustanowienie połączenia z naszym serwerem. Połączenie możemy zestawić za pomocą dowolnego klienta VPN.

  • Windows – OpenVPN – kopiujemy plik do katalogu do katalogu config
  • Android – OpenVPN dla Androida – importujemy plik do aplikacji

Korzystanie VPN jest zalecane przede wszystkim kiedy korzystamy z otwartych sieci Wi-Fi, mamy wtedy pewność, że nikt nie podsłuchuje naszego ruchu. Konfiguracja spisuje się świetnie, brak reklam w aplikacjach, brak reklam na stronach internetowych. Wszystko jest blokowane. Jedyny minus jaki można zauważyć przy dłuższym użytkowaniu to większe zużycie baterii. Rozwiązanie jest jedno, root telefonu.

Root telefonu

Rootowanie telefonu jest nieco bardziej skompilowanym procesem, podczas którego istnieje ryzyko uszkodzenia telefonu. Jeżeli zrobimy wszystko powoli z instrukcją nie powinno się nic stać, ale może :). Na proces wykonania roota składa się:

  • Odblokowanie bootloadera – w przypadku telefonów Xiaomi proces jest prosty – https://en.miui.com/unlock/

Gotowych instrukcji krok po kroku najlepiej szukać na forum XDA. Po wykonaniu roota mamy dostęp do wszystkich plików systemowych. Możemy więc wyedytować plik albo posłużyć się programem AdAway, który zrobi to za nas. Program można pobrać z nieoficjalnego sklepu F-Droid. Można w nim znaleźć wiele ciekawych aplikacji na zrootowane telefony. Program pozwala nam na użycie kilku plików hosts. Podsumowując efekt taki sam jak przy użyciu VPN, ale z mniejszym nakładem wykorzystania baterii.

Podusmowanie

Opisane techniki nie należą do najłatwiejszych, mimo tego zachęcam do poeksperymentowania. Czasem warto wiedzieć co się tam dzieje pod spodem. W razie problemów zachęcam do zostawienia komentarza. W razie zainteresowania, opiszę poszczególne kroki bardziej szczegółowo. Zaprezentowane przeze mnie rozwiązania nie są jedynymi.

Blokowanie reklam na telefonie
Oceń wpis
Share: