Найти тему
nixCraft

Скрываем DNS трафик с помощью DNS-over-TLS

Обычно DNS получает, а затем возвращает запросы в открытом виде. При некотором желании любой может получить эти данные. Прекратить это безобразие, а заодно повысить уровень конфиденциальности и безопасности можно с помощью протокола DoT (DNS-over-TLS).

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

Ниже мы рассмотрим, как с помощью встроенных возможностей Linux повысить уровень конфиденциальности сети, усилить защиту от потенциальных киберугроз и сохранить бесперебойную передачу данных в сетях. В этом нам поможет стандарт шифрования DNS-запросов DoT (DNS-over-TLS), который использует тот же протокол безопасности TLS, что и веб-сайты с HTTPS используют для шифрования и аутентификации связей.

Проблема DNS

По своей сути система доменных имён (DNS) выступает в роли некоего каталога, в котором записаны все адреса, существующие в интернете. К примеру, пользователь вводит название сайта в свой браузер. Сервер DNS за считанные доли секунды переводит это удобное для человеческого восприятия доменное имя в числовой IP-адрес. Неудивительно, что любое удалённое сетевое соединение зависит от надёжной работы сервера DNS.

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

Каждый раз, когда происходит DNS-запрос, любой человек, обладающий необходимыми инструментами, может увидеть к какому сайту или сервису пытается получить доступ тот или иной пользователь. Это открывает двери для множества угроз: от простого прослушивания пакетов до более организованных атак типа «man-in-the-middle», когда ответ на запрос редактируется для перенаправления пользователя на вредоносный сайт.

В бурно развивающемся мире цифровых технологий угрозы становятся всё более изощрёнными с каждым днём. IT-специалисты понимают, что статус-кво DNS-коммуникаций неприемлем. Именно здесь на помощь приходит стандарт шифрования запросов DoT (DNS-over-TLS), который использует стандартный протокол для выполнения разрешения удалённой системы DNS с использованием TLS.

DNS-over-TLS — безопасная итерация основополагающего интернет-протокола

DNS-over-TLS (DoT) — это защищённая версия традиционного DNS. По своей сути DoT берет обычную систему DNS и оборачивает её в протокол Transport Layer Security (TLS), обеспечивая тем самым зашифрованный канал для DNS-запросов.

Если вы знакомы с HTTPS (расширением протокола HTTP для поддержки шифрования SSL/TLS), концепция DoT является вполне аналогичной. В то время как HTTPS шифрует действия пользователя по просмотру веб-страниц, то DoT нацелен на шифрование запросов по поиску доменных имён.

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

Ключевыми преимуществами DoT являются:

  • Сквозное шифрование: При использовании DoT DNS-запросы шифруются от источника (клиента) до места назначения (DNS-резольвера). Это обеспечивает полную конфиденциальность DNS-запросов пользователя.
  • Целостность данных: Протокол TLS гарантирует, что пакеты данных, как запросы, так и ответы, остаются неприкосновенными. Любая попытка подделки быстро обнаруживается, что предотвращает любую возможность перенаправления.
  • Аутентификация сервера: DoT облегчает аутентификацию DNS-серверов. Когда клиент устанавливает TLS-соединение, он может проверить сертификат сервера, гарантируя, что он подключается к настоящему DNS-серверу, а не к его подделке.

Подготовка системы

Для перехода на использование стандарта DNS-over-TLS готовность системы имеет первостепенное значение. Учитывая, что данный ресурс ориентирован на Linux, я сосредоточусь на требованиях, специфичных для Linux, которые включают:

  • Операционная система: Должен быть установлен дистрибутив Linux. Ubuntu с его широкой поддержкой сообщества и надёжной производительностью служит отличной платформой для внедрения DoT.
  • Доступ пользователей: В случае работы на удалённой машине необходимо иметь доступ root или sudo. Это необходимо для установки пакетов, изменения конфигурации системы и перезапуска служб.

Что касается серверной части, то стоит отметить, что потребуется подключение к DNS-серверу, который также поддерживает DoT. Ниже представлены общедоступные DNS-серверы, взятые со страницы Википедии.

-2

Чтобы использовать DoT вместо стандартного сервиса имён, ваш systemd должен иметь версию 239 или выше, поскольку более ранние версии не поддерживают опцию DNSOverTLS. Чтобы проверить версию systemd, введите в командной строке:

systemd --version

Если версия systemd ниже 239, то непременно подумайте об обновлении системы. По умолчанию в последних версиях Ubuntu включен systemd-resolved. Это системная служба, которая управляет сетевыми именами и разрешает их. Чтобы убедиться, что systemd-resolved запущен, введите:

sudo systemctl status systemd-resolved.service

Вы должны получить утвердительный ответ. Иначе службу надо запустить, но прежде необходимо активировать её автозапуск:

sudo systemctl enable systemd-resolved.service

sudo systemctl start systemd-resolved.service

По умолчанию в системе DNS-over-TLS не работает. Чтобы его включить, надо отредактировать конфигурационный файл «/etc/systemd/resolved.conf». Откроем его в текстовом редакторе с помощью команды:

sudo nano /etc/systemd/resolved.conf

В этом файле строка «DNS» задает DNS-серверы, которые должен использовать systemd-resolved. Я использую DNS-сервер Cloudflare, который поддерживает DoT. Строка «FallbackDNS» — это резервные сервера, которые будут задействованы в случае, когда основные DNS-серверы будут вне доступа. Наконец, в строке «DNSOverTLS» надо установить значение «yes», которое и включит использование шифрования DNS-запросов.

Строки конфигурации должны выглядеть следующим образом:

[Resolve]
DNS=1.1.1.1 1.0.0.1
FallbackDNS=8.8.8.8 8.8.8.4.4
DNSOverTLS=yes

Нажмите «Ctrl+X», затем «Y» и «Enter», чтобы сохранить и выйти из редактора nano.

После этого необходимо перезапустить службу, чтобы изменения вступили в силу:

sudo systemctl restart systemd-resolved

Проверка и мониторинг

Любые изменения в конфигурации необходимо проверять, иначе мы не достигнем желаемого результата. Сначала убедимся, что система использует указанный нами в конфигурационном файле DNS-сервер. Для этого наберите в командной строке следующее:

resolvectl status | grep 'Current DNS Server'

Если результат совпадает с указанными вами серверами (например, 1.1.1.1), то это предварительный признак того, что всё идёт по плану.

DoT — это фундаментальная функция безопасности для современных сетей, но, как и все системы, DoT требует бдительности. Его нельзя просто включить и забыть; за ним нужно активно следить.

Прежде чем отслеживать трафик на интерфейсе, необходимо определить его имя с помощью команды ip a или ip addr show:

ip a

Эта команда выдаст список всех сетевых интерфейсов. Как правило, проводные соединения обозначаются как «ethX» (например, eth0), а беспроводные — как «wlanX» (например, wlan0).

-3

Найдите интерфейс, который имеет inet-адрес (IPv4) или inet6-адрес (IPv6) и находится в состоянии «UP». Как правило, это и есть активный сетевой интерфейс. В моём случае это беспроводной интерфейс «wlp2s0».

Теперь, когда вы определили активный сетевой интерфейс, используйте инструмент «tcpdump» для мониторинга DNS-трафика. При использовании DoT мониторинг становится критически важным для отслеживания активного шифрования. Включить мониторинг DNS-трафика можно командой:

sudo tcpdump -i wlp2s0 -n 'port 853'

Замените wlp2s0 на свой сетевой интерфейс.

С помощью приведенной выше команды «tcpdump» перехватывает и регистрирует сетевой трафик. Если DoT функционирует, то имена доменов, к которым осуществляется доступ, не будут отображаться в открытом виде. DoT работает через порт 853 и через него проходят все зашифрованные запросы.

Пока инструмент «tcpdump» активен, зайдите на несколько сайтов. И вы увидите, что вместо узнаваемых доменных имён в выводе только зашифрованные данные, что подтверждает эффективность DoT.

Важность регулярного мониторинга трафика невозможно переоценить. Мониторинг помогает выявить необычные схемы трафика и потенциальные угрозы безопасности, а также гарантирует, что DoT работает без сбоев. Конечно, такие инструменты, как DoT, — это лишь часть решения для поддержания безопасной среды.

Каждая система, независимо от ее назначения, является потенциальной мишенью. Поэтому обновление системы — это не роскошь, а необходимость. В конце концов, вам ничего не стоит набрать в консоли команду:

sudo apt update && sudo apt upgrade

и дождаться окончания её выполнения.

Регулярные обновления устраняют выявленные уязвимости системы и обеспечивают оптимальную производительность. Что позволяет не только обеспечить надёжность работы DoT, но и повышает безопасность всей системы.

Периодические аудиты безопасности также важны. Такие инструменты, как Nmap, Sniffnet или Wireshark, помогут вам контролировать и просматривать сетевой трафик. Убедитесь, что открыты и доступны только необходимые порты, регулярно просматривайте и обновляйте конфигурации, следя за тем, чтобы не использовались устаревшие протоколы или программное обеспечение.

Заключение

DoT — это не просто обновление самого используемого протокола, это изменение парадигмы в сторону соблюдения конфиденциальности данных и повышения уровня безопасности. Каждый IT-специалист несёт ответственность за обеспечение безопасности вверенного ему цифрового пространства. Принятие и использование DoT показывает уровень этой ответственности.

На своём домашнем ноутбуке и рабочем компьютере, на обоих установлен Ubuntu Linux, я давно включил DoT. И дома, и на работе я использую беспроводную сеть, и каким бы надёжным не был пароль этих сетей, всегда есть некая вероятность, что один из соседей решит попробовать себя в роли крутого хакера.