Настройка DNS с использованием TLS на Linux Mint для обеспечения безопасности и приватности DNS-запросов

В данном руководстве я объясню, как обеспечить защиту конфиденциальности DNS на Linux Mint с использованием DNS через TLS. Для этого мы будем применять инструмент под названием stubby. Однако, прежде чем начать, давайте разберёмся, почему стандартный DNS небезопасен.

Проблема в защите DNS заключается в том, что она часто игнорируется.

DNS остаётся уязвимым из-за отсутствия шифрования запросов по умолчанию. Эти данные передаются в открытом виде через сеть и могут быть перехвачены злоумышленниками. Например, Великая Китайская Огненная Стена использует методы, такие как отравление кеша DNS, для цензуры интернета в Китае, воспользовавшись нешифрованными данными.

GFW анализирует все DNS-запросы, отправляемые на серверы за пределами Китая. Так как DNS-протокол работает на основе UDP, который не требует установления соединения, GFW способна подделывать как IP-адрес клиента, так и сервера. Если GFW обнаруживает домен в своем списке заблокированных, она модифицирует DNS-ответ.

Если, к примеру, пользователь интернета в Китае пытается зайти на google.com, GFW предоставляет IP-адрес, находящийся в Китае, вместо действительного IP-адреса Google в DNS-резольвер. В итоге DNS-резольвер передает ложный IP-адрес на компьютер пользователя, что препятствует доступу к google.com.

Что представляет собой DNS через TLS? Как он обеспечивает защиту вашей конфиденциальности в системе DNS?

DNS через TLS подразумевает, что запросы DNS передаются по защищенному каналу, зашифрованному с помощью технологии TLS (Transport Layer Security), которая также используется для шифрования HTTP-трафика. Это позволяет предотвратить доступ третьих лиц к вашим DNS-запросам. В сочетании с HTTPS-сайтами и зашифрованным SNI (Server Name Indication) ваша история веб-серфинга будет надежно защищена от наблюдения со стороны интернет-провайдеров.

Читайте также:  Ocserv Advanced (разделение туннелей, поддержка IPv6, статический IP, индивидуальные настройки для пользователей, виртуальный хостинг)

Stubby — это открытый DNS stub resolver. Stub resolver представляет собой компактный DNS-клиент на пользовательском компьютере, который получает запросы DNS от приложений, таких как Firefox, и направляет их на рекурсивные резольверы, например, 1.1.1.1 или 8.8.8.8. Уникальной особенностью Stubby является поддержка DNS через TLS, что позволяет ему по умолчанию отправлять исключительно зашифрованные DNS-запросы.

Обратите внимание: данное руководство предназначено исключительно для Linux Mint 19, включая версии 19.1 и 19.2. Если у вас установлена Linux Mint 18, настоятельно рекомендуем обновить вашу систему.

Как настроить DNS через TLS на Linux Mint с помощью Stubby

Stubby добавлен в репозиторий ПО для Linux Mint 19. Чтобы установить его, откройте терминал и введите следующую команду.

sudo apt install stubby

Совет: Если предыдущая команда не завершилась мгновенно, нажмите клавишу Q, чтобы выйти из нее и восстановить управление терминалом.

Stubby осуществляет прослушивание TCP и UDP на порту 53 локального хоста (127.0.0.1), что можно проверить, выполнив следующую команду:

sudo netstat - lnptu | grep stubby

По умолчанию resolver имен, который предлагает systemd-resolved, отслеживает TCP и UDP на порту 53 по адресу 127.0.0.53.

sudo netstat - lnptu | grep systemd-resolve

Теперь, когда stubby установлен и работает, необходимо указать системе Linux Mint использовать его. Нажмите на иконку Network Manager в правом нижнем углу экрана и выберите пункт «Сетевые настройки».

Linux Mint: использование DNS через TLS.

Кликните по иконке шестерёнки для конфигурации сети.

Настройка DNS-сервера в Linux Mint.

Перейдите на вкладку IPv4 и отключите автоматическую настройку DNS. Это остановит получение DNS-адреса от вашего маршрутизатора в системе Linux Mint. Затем введите адрес Stubby (127.0.0.1) в поле для сервера. Нажмите на кнопку «Применить» и закройте окно настроек сети.

DNS через TLS на Linux Mint

После этого выполните следующую команду в терминале для перезапуска NetworkManager, чтобы применить внесённые изменения.

sudo systemctl restart NetworkManager

Когда вы снова подключитесь к маршрутизатору, нажмите на значок Network Manager и выберите раздел Сетевые настройки. Теперь в вашей системе Linux Mint в качестве DNS-сервера отображается 127.0.0.1 (stubby).

Установка и настройка Stubby на Linux Mint.

Как перейти на Stubby через командную строку.

Вы можете настроить свою систему Linux Mint для работы со stubby, изменив конфигурацию systemd-resolved через командную строку. Чтобы увидеть текущий DNS-сервер, используйте следующую команду.

systemd-resolve --status

Для того чтобы настроить Stubby в качестве сервера по умолчанию, откройте файл конфигурации systemd-resolved с помощью текстового редактора, например, Nano.

sudo nano /etc/systemd/resolved.conf

Для навигации используйте клавиши стрелок, чтобы двигаться вверх и вниз. В разделе [Resolve] добавьте эту строку, чтобы ваша система начала использовать Stubby.

DNS=127.0.0.1

Сохраните файл и закройте его. (Для сохранения в текстовом редакторе Nano нажмите Ctrl+O, а затем Enter для подтверждения. Чтобы выйти, используйте комбинацию Ctrl+X.)

После этого перезапустите сервис systemd-resolved.

sudo systemctl restart systemd-resolved

Теперь введите следующую команду, чтобы проверить DNS-сервер, установленный по умолчанию.

systemd-resolve --status

Вы заметите, что в разделе Global в качестве DNS-сервера указано 127.0.0.1.

Как узнать, зашифрован ли ваш DNS-трафик?

WireShark можно применять для отслеживания DNS-трафика. Для установки WireShark из репозитория Linux Mint выполните следующую команду в терминале.

sudo apt install wireshark

Если вам зададут вопрос «Следует ли разрешать пользователям без прав суперпользователя захватывать пакеты?», выберите вариант Да с помощью клавиши со стрелкой и нажмите Enter.

захват трафика в Wireshark на Linux Mint

После завершения установки введите следующую команду, чтобы добавить свою учетную запись в группу wireshark, что позволит вам захватывать пакеты. Замените your-username на ваше фактическое имя пользователя.

sudo adduser your-username wireshark

Выйдите из аккаунта и войдите снова, чтобы изменения заработали. После этого запустите WireShark из списка приложений.

Wireshark на Linux Mint

Выберите необходимый сетевой интерфейс в WireShark. Например, мой Ethernet интерфейс называется enp0s3. Если вы подключены к Wi-Fi, то ваш сетевой интерфейс может иметь имя, похожее на wlp0s3. После этого установите фильтр захвата на порт 853. Это позволит WireShark фиксировать только трафик, проходящий через порт 853, который используется для DNS с использованием TLS.

захват трафика DNS через TLS в Linux Mint с использованием Wireshark

Чтобы начать захват трафика, нажмите клавишу Enter. Затем в терминале выполните следующую команду для получения доменного имени с использованием утилиты dig. К примеру, я могу запросить A-запись своего домена.

dig A linux16.ru

Теперь у вас есть возможность просмотреть захваченный DNS-трафик в WireShark. Как видно, мой DNS-запрос был направлен на адреса 185.49.141.37, 145.100.185.15 или 145.100.185.16 — три стандартных DNS-резолвера, указанных в конфигурационном файле stubby. Соединения были установлены через TCP и зашифрованы с использованием TLS, что полностью соответствует моим требованиям. Чтобы остановить захват трафика, нажмите на красную кнопку в верхнем левом углу.

Настройка DNS через TLS в Linux Mint с использованием Stubby.

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

Заключение

Надеюсь, данный урок оказался полезным для вас в обеспечении конфиденциальности DNS в Linux Mint с использованием DNS через TLS. Если вы нашли эту информацию ценной, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций. Заботьтесь о себе.