Szyfrowane połączenie DNS
Ostatnia zmiana: 2017-04-23 22:48

Wszyscy obecnie korzystamy z serwerów DNS. Dzięki nim nie musimy pamiętać szeregu cyfr będących adresami urządzeń, można posługiwać się nazwami. Jednakże z tym protokołem jest pewien problem - jest on przesyłany niezabezpieczonym protokołem, co może prowadzić do ataków typu podszywanie się pod domenę, podsłuchiwanie czy ataki typu man-in-the-middle. Jednym ze bardziej znanych i stosowanych serwerów DNS jest OpenDNS, który dostarcza kilka różnych metod ochrony, a wśród nich dostępna jest pewna metoda nazwa DNSCrypt. W dużym uproszczeniu powiedzmy że polega to na szyfrowaniu całego ruchu dns. Oczywiście serwer dns musi obsługiwać taką metodę, ale tu przychodzi nam z pomocą znów OpenDNS (a także wiele innych serwisów).
Konfigurację przetestowana na LEDE 17.01.

Instalacja

Wymagana jest instalacja pakietu dnscrypt-proxy:


    # opkg update
    # opkg install dnscrypt-proxy

Konfiguracja

Trzeba "przekonać" nasz wbudowany serwer dns-cache, czyli dnsmasq żeby wszystkie zapytania były kierowane przez proxy:


    # uci del dhcp.@dnsmasq[0].resolvfile
    # uci set dhcp.@dnsmasq[0].noresolv=1
    # uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#5353'
    # uci add_list dhcp.@dnsmasq[0].server='/pool.ntp.org/208.67.222.222'
    # uci commit dhcp

Uruchomienie



    # /etc/init.d/dnscrypt-proxy enable
    # /etc/init.d/dnscrypt-proxy start
    # /etc/init.d/dnsmasq restart

DNSCrypt do poprawnego działania potrzebuje poprawnie ustawionego czasu na routerze. Jeżeli do serwera odwołujemy się przez nazwę to może to nie działać bo rozpoznawanie nazwy idzie przez proxy, które do działania wymiana czasu, więc mamy problem. Dlatego też podaje się w konfiguracji statyczne odwzorowanie nazwy serwera czasu (pool.ntp.org) na jeden z jego ip (208.67.222.222). Należy więc pamiętać, żeby również tego serwera czasu używać w plikach konfiguracyjnych (/etc/config/timeserver lub /etc/config/ntpclient).
W niektórych przypadkach wymagane może być także opóźnienie jego uruchomienia na starcie systemu.

Sprawdzenie działania

Jeżeli używamy resolvera cisco (plik /etc/config/dnsproxy-crypt, sekcja ns1, opcja resolver - domyślnie jest fvz-anyone) to można sprawdzić działanie usługi - po uruchomieniu udajemy się pod adres https://www.opendns.com/welcome/ . Jeżeli zostanie wyświetlony komunikat o połączeniu z OpenDNS to wszystko działa poprawnie.

Zakończenie

Oczywiście ma to sens, jeżeli będziemy korzystać z dnsów z naszego routera. Jeżeli komputery mają ustawione inne dnsy, należy np. przy pomocy odpowiedniej reguły iptables wymusić, aby cały ruch DNS był kierowany przez router.

Opracowano na podstawie wątku z forum openwrt.org.