Szyfrowane połączenie DNS
Ostatnia zmiana: 2018-08-06 22:18

Wszyscy 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 serwerami DNS jest pewien problem - ruch do nich jest zwykle przesyłany niezabezpieczonym tekstem, co może prowadzić do ataków typu podszywanie się pod domenę czy podsłuchiwanie tego co się dzieje w sieci. Jednym ze sposobów ochrony jest metoda nazwana DNSCrypt. W dużym uproszczeniu polega to na szyfrowaniu całego ruchu dns i przesłanie go do bezpiecznego serwera, który oczywiście musi umieć obsługiwać taką metodę komunikacji. W sieci dostępne są takie serwery DNS, a jednym z nich jest znany OpenDNS.
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 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.