Шифрование DNS трафика с помощью DNS over TLS и UNBOUND в Debian GNU/Linux – daniiiil112.ru

Шифрование DNS трафика с помощью DNS over TLS и UNBOUND в Debian GNU/Linux

Введение

С некоторого времени, без каких либо анонсов, всем известный DNS сервер Google стал поддерживать DNS over TLS. Также, публичный DNS сервер от компании CloudFlare поддерживает DNS over TLS с самого запуска.

Классическая схема работы DNS предполагает передачу запросов по сети Интернет в незашифрованном виде. Данной особенностью пользуются провайдеры, просматривая наши запросы и подменяя ответы. Так же и мошенники не стесняются использовать эту уязвимость.

При использовании DNS over TLS весь трафик идёт внутри зашифрованного тоннеля. Таким образом, ни провайдер, ни мошенники не смогут перехватить ваши запросы.

Так как это довольно серьезный шаг в личной сетевой безопасности, я решил попробовать настроить кеширующий DNS сервер с использованием шифрования DNS over TLS.

Как это устроено

С удаленным DNS сервером выполняется TLS-подключение, при этом проверка сертификата происходит с использованием системных корневых сертификатов, как и при использовании HTTPS в браузере. При данном подключении нет необходимости добавлять другие сертификаты. Внутри тоннеля проходит обычный DNS трафик.

Больше информации про работу DNS over TLS https://developers.google.com/speed/public-dns/docs/dns-over-tls

Установка и настройка UNBOUND

В моём случае, шифрование DNS будет происходить на домашнем сервере. Уже установленный dnsmasq не умеет работать с DNS over TLS. По этому придётся отключить в нём DNS сервер и оставить только DHCP.

daniiiil112@debian:~$ sudo nano /etc/dnsmasq.conf
port=0 # отключение DNS сервера
dhcp-option=6,10.112.1.1 # раздавать dhcp клиентам только локальный сервер dns

В качестве кеширующего DNS сервера будем использовать unbound. В репозитории Debian этот сервер уже собран с поддержкой DNS over TLS. Так что просто ставим его:

daniiiil112@debian:~$ sudo apt update
daniiiil112@debian:~$ sudo apt install unbound

Теперь необходимо настроить этот сервер как туннель из DNS в DNS over TLS:

daniiiil112@debian:~$ sudo nano /etc/unbound/unbound.conf.d/dns-over-tls.conf
server:
    port: 53
    access-control: 0.0.0.0/0 allow
    cache-max-ttl: 14400
    cache-min-ttl: 900
    hide-identity: yes
    hide-version: yes
    interface: 127.0.0.1
    interface: 10.112.1.1
    minimal-responses: yes
    prefetch: yes
    qname-minimisation: yes
    rrset-roundrobin: yes
    ssl-upstream: yes
    use-caps-for-id: yes
    verbosity: 1

remote-control:
    control-interface: 127.0.0.1

forward-zone:
    name: "."
    forward-addr: 8.8.8.8@853
    forward-addr: 1.1.1.1@853

Осталось перезагрузить unbound:

daniiiil112@debian:~$ sudo service unbound restart

Вот и всё, теперь весь DNS трафик с локальной сети проходит через кеширующий DNS сервер и уходит в сеть Интернет уже внутри туннеля. Провайдеры уже не смогут использовать блокировки через DPI по SNI.

Больше информации про настройку unbound: https://wiki.archlinux.org/index.php/unbound

One thought on “Шифрование DNS трафика с помощью DNS over TLS и UNBOUND в Debian GNU/Linux

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *