DNS (Domain Name System) to usługa odpowiedzialna za przypisywanie adresów IP nazwom internetowym (domenom), czytelnym dla człowieka. Każda strona WWW posiada swój „identyfikator”, czyli wspomniany adres IP. Posiadanie domeny i przypisanie jej do adresy IP serwera udostępniającego usługę WWW nie jest obowiązkowe, natomiast wchodzenie na stronę z użyciem adresu IP nie wygląda profesjonalnie, dodatkowo ogranicza nam możliwości — jeden serwer może obsługiwać wiele domen (np. hosting). Adresy te można poznać poprzez wyszukanie strony np. w bazie GWhois lub dzięki polecenia ping w Windows (które wyświetli jedynie adres IP) czy komenda host w Linux. Jest to o tyle dobrze przemyślane, iż dzięki usługom DNS nie musimy pamiętać adresu IP każdej strony, z którą zamierzamy się połączyć.
Polecane serwery DNS
Tak naprawdę trudno wyobrazić sobie świat bez tych serwerów. Adresami IP serwerów DNS zajmuje się IANA i ICANN. W Polsce ich odpowiednikiem jest Naukowa i Akademicka Sieć Komputerowa, czyli NASK. Sam DNS podczas przesyłania zapytań działa na podstawie protokołu UDP w warstwie aplikacji w modelu OSI, na domyślnym porcie 53. Zwykle mamy skonfigurowane dwa adresy IP różnych dostawców DNS-ów, co jest zabezpieczeniem w przypadku awarii któregoś z nich. Natomiast wykupienie domeny nie zawsze jest równoznaczne z natychmiastowym dodaniem do bazy DNS adresu internetowego.
„Szkielet Internetu” stanowią tzw. root servers. Ich lista dostępna jest na stronie https://root-servers.org/.
Często bywa tak, iż dostawca usług internetowych konfiguruje router, aby łączył się z ustalonymi DNS-ami i zwykle są to serwery DNS operatora internetu. Nie jest to zawsze bezpieczne i nie jest to idealne rozwiązanie, co wyjaśniam w dalszej części artykułu.
Dlaczego warto zmienić domyślny adres DNS?
Przede wszystkim dlatego, iż serwery DNS należące do globalnych operatorów są z reguły wydajniejsze i bezpieczniejsze od tych oferowanych przez dostawców Internetu. Niektóre z nich (w tym te wymienione poniżej) zawierają też dodatkowe funkcjonalności w postaci blokowania domen oznaczonych jako złośliwe.
Porównanie serwerów DNS
Tabelka dotycząca porównania serwerów DNS: nazwa operatora, adresy IP, kraj operatora, filtrowanie kategorii, wsparcie dla DoH (DNS over HTTPS).
Cloudflare | 1.1.1.1 oraz 1.1.1.2, 1.0.0.2 (ochrona przed malware), 1.1.1.3, 1.0.0.3 (ochrona przed malware i filtr treści) | USA | NIE | TAK | TAK |
Google Public DNS | 8.8.8.8 i 8.8.4.4 | USA | NIE | NIE | TAK |
Quad9 | 9.9.9.9 | USA | NIE | TAK | TAK |
DNS.Watch | 84.200.69.80 i 84.200.70.40 | Niemcy | NIE | NIE | TAK (beta) |
OpenNIC | Lista dostępna tutaj | USA | NIE | NIE | NIE |
Comodo Secure DNS | 8.26.56.26 i 8.20.247.20 | USA | NIE | TAK | NIE |
CleanBrowsing | 185.228.168.168 i 185.228.169.168 | USA | TAK | TAK | TAK |
Alternate DNS | 94.140.14.14 i 94.140.15.15 (blokowanie reklam), 94.140.14.15 i 94.140.15.16 (blokowanie treści „dla dorosłych”) | USA | TAK | TAK | TAK |
AdGuard DNS | 176.103.130.130 i 176.103.130.131 | USA | TAK | TAK | TAK |
NextDNS | 45.90.28.141 i 45.90.30.141 | USA | TAK | TAK | TAK |
Komentarz do tabeli
Praktycznie wszystkie serwery DNS znajdują się z jurysdykcją w USA. Jedynie czterech dostawców zapewnia jednocześnie filtrowanie kategorii i ochronę przed złośliwymi (w ogólnym znaczeniu) stronami. Cieszy fakt, iż sporo serwerów wspiera DNS over HTTPS (DoH), czyli szyfrowanie zapytań. Warto zauważyć, iż serwery bez wsparcia tej technologii nie mają wiele do zaoferowania.
Konfiguracja adresów DNS
Zmianę adresów DNS dokonujemy na pojedynczym urządzeniu lub na wszystkich (w ustawieniach routera). Ma do duże znaczenie. W przypadku modyfikacji adresów np. na laptopie sprawimy, iż tylko to pojedyncze urządzenie będzie komunikowało się ze światem za pośrednictwem ustawionych serwerów. Pozostałe urządzenia w sieci będą rozwiązywały domeny na adresy IP za pośrednictwem serwerów DNS ustawionych w routerze. Należy pamiętać, iż systemowe DNS mają „pierwszeństwo” przed tymi w konfiguracji routera.
W przypadku zmiany adresów DNS w konfiguracji routera sprawa wygląda paradoksalnie łatwiej. Należy jednak pamiętać, iż pozostałych ustawień lepiej nie modyfikować, jeżeli się nie wie, do czego służą. W przeglądarce wchodzimy pod adres (najczęściej) 192.168.0.1 lub 192.168.1.1, czy też inny, w zależności od struktury sieci i producenta routera.
Zazwyczaj ustawienia DNS są połączone z ustawieniami DHCP (Dynamic Host Configuration Protocol), co odpowiada za automatyczne przydzielanie urządzeniom w sieci informacji o niej, m.in. adres IP, maska czy adres bramy domyślnej i DNS.
W jaki sposób poznać adres routera?
Metod jest kilka, a te zależą w głównej mierze od systemu:
- Windows: Uruchamiamy wiersz polecenia (z poziomu Menu Start, wyszukując “cmd”, lub skrótem Win+R i wpisując “cmd”. Następnie wpisujemy „ipconfig” i szukamy pozycji Default Gateway. Widoczny adres to adres routera. To zdecydowanie najszybszy sposób, bo w domowej sieci raczej DHCP przydziela konfigurację, a kilka osób ustawia ją statycznie (co ma uzasadnienie w przypadku serwerów i drukarek w sieci). jeżeli posiadamy sprzęt od MikroTik, to polecam wykorzystać WinBox, który w zakładce Neighbours wyświetla urządzenia tej firmy w naszej sieci.
- Linux: W terminalu wystarczy wpisać “route” i pod Gateway widoczny jest szukany adres.
- Android: Adres routera jest widoczny w ustawieniach konkretnej sieci WiFi. Nie zalecam jednak zmieniać konfiguracji z poziomu mobilnych przeglądarek z powodu małego komfortu. Lepiej pobrać aplikację (Tether w przypadku TP-Link i MikroTik dla łotewskiego producenta) z oficjalnego sklepu i z niej korzystać, bo umożliwia szybki dostęp do najważniejszych ustawień (w tym blokadę danego urządzenia jednym kliknięciem).
Test szybkości serwerów DNS
Do przetestowania szybkości serwerów DNS użyłem narzędzia dnsperf, które pobierało z pliku tekstowego listę 33575 domen. Następnie automatycznie odpytywał po kolei serwery z adresami z tej listy.
Tabelka zawiera wyniki (w milisekundach, więc Average Latency wypisane przez dnsperf należało pomnożyć 1000 razy) średniego czasu odpowiedzi od domen zapisanych w pliku.
Im mniejsza wartość, tym odpowiedź serwera jest szybsza (milisekundy).
Cloudflare | 221,4 | 211,6 | 214,6 | 221,6 |
Google Public DNS | 151,1 | 145,2 | 141,2 | 140,8 |
Quad9 | 319,8 | 298,5 | 305 | 294,1 |
DNS.Watch | 166,6 | 205,8 | 156,6 | 170 |
OpenNIC | 56,6 | 161,3 | 58,8 | 291,3 |
Comodo Secure DNS | 148 | 137,1 | 156,8 | 147,5 |
CleanBrowsing | 205,9 | 187,7 | 215,4 | 193,4 |
Alternate DNS | 153,7 | 165,3 | 213 | 166 |
AdGuard DNS | 199,6 | 208,2 | 208,7 | 203,4 |
NextDNS | 160,9 | 164,6 | 383,5 | 153,2 |
Komentarz do tabeli:
Od razu można zauważyć zdecydowaną przewagę serwerów DNS OpenNIC pod względem wydajności. W tym przypadku podobne wyniki utrzymywały się praktycznie przez cały czas trwania testu, z wyjątkiem pory popołudniowej. Niektóre serwery również potrafią gwałtownie obsłużyć ruch (Google, Comodo), chociaż uzyskane czasy znacznie się różną z wynikami lidera testu.
Test ochrony przed phishingiem (100 adresów dziennie)
Oba testy były całkowicie zautomatyzowane. Manualna obsługa polegała na uruchomieniu skryptu do testowania i weryfikacja plików z domenami pod kątem ich różnorodności. Musiałem też wstrzymać testy na kilka dni, aby do listy dodać unikalne adresy URL, jeżeli w ciągu jednego dnia nie pojawiły się nowe zagrożenia.
Pewnym wyzwaniem było przygotowanie list z adresami phishingowymi i malware pod wymagania polecenia wget (z parametrem -i, który wskazuje plik z pobraną listą adresów).
W przypadku listy od CERT Polska, sprawa była prosta, wystarczyło użyć head -n100 i przekierować output do pliku o odpowiedniej nazwie. Lista PhishTank była w formacie CSV, tutaj można było sobie poradzić w samym arkuszu kalkulacyjnym. Obie listy były użyte do testów ochrony przed phishingiem.
Z kolei lista adresów z malware od URLhaus, oprócz domen, zawiera wiele adresów IP, które nie były szczególnie przydatne w testach DNS. W dodatku adresy są poprzedzone protokołem i mają też dalszą część poza samym adresem (bezpośredni odnośnik do pliku). Pierwszym krokiem było pozostawienie jedynie adresu/domeny, bez protokołu i dalszej części. W tym zadaniu wyjątkowo dobrze sprawdził się awk. Następnie konieczne było „odsianie” adresów IP (wraz z portem, jeżeli akurat był zawarty) i pozostawienie jedynie domen. Jedyną opcją było użycie wyrażeń regularnych. Wynikowo otrzymywałem plik z samymi domenami oraz pustymi liniami po usunięciu adresów IP. Zadaniem sed było wycięcie tych linii. Później już tylko awk usuwający powtórzenia domen i na koniec standardowo head.
Od liczby 100 odejmowałem ilość pobranych plików i w ten sposób uzyskiwałem ilość zablokowanych zapytań.
Dzień 1 | 82 | 87 | 82 | 100 | 35 | 81 | 82 |
Dzień 2 | 63 | 77 | 78 | 78 | 69 | 75 | 76 |
Dzień 3 | 26 | 24 | 24 | 79 | 100 | 25 | 24 |
[*] Tak zwany błąd NXDOMAIN oznacza, iż w bazie DNS konkretnego operatora domena nie jest powiązana z adresem IP, czyli użytkownik końcowy nie widzi odpowiedzi od danej strony.
Test ochrony przed malware (100 adresów dziennie)
Dzień 1 | 50 | 99 | 42 | 99 | 47 | 7 | 40 |
Dzień 2 | 39 | 99 | 35 | 100 | 32 | 4 | 30 |
Dzień 3 | 42 | 98 | 31 | 100 | 36 | 8 | 37 |
[*] Tak zwany błąd NXDOMAIN oznacza, iż w bazie DNS konkretnego operatora domena nie jest powiązana z adresem IP, czyli użytkownik końcowy nie widzi odpowiedzi od danej strony.
Serwer DNS to istotny aspekt naszego bezpieczeństwa!
Wszystkie urządzenia wysyłają i odbierają jakieś dane. Użytkownik odwiedza daną stronę w przeglądarce, zainstalowana aplikacja odpytuje swoje serwery o aktualizacje itp. Serwer DNS może ochronić przed różnymi złośliwymi działaniami. Należy jednak pamiętać, iż malware nie znajduje się jedynie w Internecie, bo równie dobrze możemy zainfekować system, uruchamiając złośliwe makra, nieznany program. Zagrożeniem jest też podłączenie nieznanego pendrive.
DNS nie chroni przed popularnymi atakami występującymi w sieci (MITM, podsłuchanie komunikacji, ARP spoofing). Nie możemy też liczyć na ochronę kamery internetowej czy pliku hosts. Swoją drogą mało osób o tym wspomina, ale ten prosty plik ma ogromny wpływ na bezpieczeństwo. Podmiana pliku HOSTS przez malware może mieć tragiczne konsekwencje:
[adres_IP_atakujacego] mbank.pl
Od teraz zamiast na stronie mBanku, po wejściu na https://mbank.pl będziemy na witrynie należącej do atakującego! jeżeli jest dobrze przygotowana, to raczej nie mamy szans na zauważenie ataku (chociaż można porównać tzw. odcisk palca certyfikatu, ale raczej nikt nie porównuje tego za każdym razem). W pasku adresu widoczny jest mbank.pl, a w praktyce jesteśmy połączeni z serwerem przestępcy!
Serwery DNS to bardzo istotny element naszego bezpieczeństwa. O tym niech poświadczy fakt szkodliwego systemu DNSChanger, które podmieniało adresy DNS. Pisał o tym także CERT Polska. Na tej stronie internetowej znajdują się aktualne listy serwerów DNS w Polsce.