В данном руководстве я объясню, как обеспечить защиту конфиденциальности DNS на Linux Mint с использованием DNS через TLS. Для этого мы будем применять инструмент под названием stubby. Однако, прежде чем начать, давайте разберёмся, почему стандартный DNS небезопасен.
Содержание статьи
- 1 Проблема в защите DNS заключается в том, что она часто игнорируется.
- 2 Что представляет собой DNS через TLS? Как он обеспечивает защиту вашей конфиденциальности в системе DNS?
- 3 Как настроить DNS через TLS на Linux Mint с помощью Stubby
- 4 Как перейти на Stubby через командную строку.
- 5 Как узнать, зашифрован ли ваш DNS-трафик?
- 6 Заключение
Проблема в защите 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) ваша история веб-серфинга будет надежно защищена от наблюдения со стороны интернет-провайдеров.
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 в правом нижнем углу экрана и выберите пункт «Сетевые настройки».

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

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

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

Как перейти на 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, что позволит вам захватывать пакеты. Замените your-username на ваше фактическое имя пользователя.
sudo adduser your-username wireshark
Выйдите из аккаунта и войдите снова, чтобы изменения заработали. После этого запустите WireShark из списка приложений.

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

Чтобы начать захват трафика, нажмите клавишу 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-запросы отправляются без шифрования, компьютер взаимодействует с DNS-сервером через порт 53. Вы можете установить фильтр захвата на этот порт, но в WireShark не появится никаких пакетов, что свидетельствует о том, что stubby обеспечивает шифрование ваших DNS-запросов.
Заключение
Надеюсь, данный урок оказался полезным для вас в обеспечении конфиденциальности DNS в Linux Mint с использованием DNS через TLS. Если вы нашли эту информацию ценной, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций. Заботьтесь о себе.

