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.