Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)
Узнайте, как DNSSEC предотвращает отравление кэша DNS, а DNS через HTTPS и DNS через TLS защищают конфиденциальность запросов от наблюдателей на пути передачи.
«Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Проблемы безопасности DNS
Система доменных имён (DNS) преобразует понятные человеку доменные имена в IP-адреса. Разработанный в 1980-х годах DNS создавался без средств защиты: запросы и ответы передаются через порт 53 UDP/TCP в открытом виде и без аутентификации. Это создаёт две основные уязвимости: отравление кэша DNS (внедрение поддельных ответов DNS для перенаправления пользователей на вредоносные серверы) и перехват запросов DNS (наблюдение за доменами, которые запрашивает пользователь, раскрывает его действия в интернете). Эти проблемы решают два стандарта: DNSSEC предотвращает подделку, а DNS over HTTPS (DoH) предотвращает перехват.
Отравление кэша DNS
Отравление кэша DNS (атака Kaminsky) использует отсутствие аутентификации в протоколе DNS. Resolver отправляет запрос авторитетному DNS-серверу и кэширует ответ на время, определяемое TTL. Атакующий, способный угадать идентификатор транзакции (16-разрядный и предсказуемый) и исходный порт (используется как дополнительный источник энтропии согласно RFC 5452), может отправить поддельные ответы, которые Resolver сохранит в кэше, перенаправив всех пользователей этого Resolver на сервер атакующего. После отравления кэша пользователи направляются на поддельные серверы, даже если ввели правильный домен. DNSSEC предотвращает это, подписывая ответы DNS цифровой подписью.
# DNS cache poisoning simulation
# Attacker floods resolver with forged responses
# for the query 'A example.com?'
# Each response guesses a different transaction ID:
# ID=1234: example.com -> 198.51.100.1 (attacker IP)
# ID=1235: example.com -> 198.51.100.1
# ...
# ID=XXXX: example.com -> 198.51.100.1 (correct guess!)
# Resolver caches poisoned answer (TTL = 3600s)
# All users querying this resolver get attacker IP
# Users are redirected to phishing/malware serverDNSSEC: расширения безопасности DNS
DNSSEC добавляет к записям DNS криптографические подписи, позволяя Resolver проверять, что ответы поступили от легитимного владельца зоны и не были изменены. DNSSEC вводит новые типы записей: RRSIG (подпись записи ресурса, фактическая подпись набора записей), DNSKEY (открытый ключ, используемый для проверки подписей), DS (подписывающая запись делегирования, связывающая ключи родительской и дочерней зон) и NSEC/NSEC3 (аутентифицированное подтверждение отсутствия — доказывает, что имя не существует). DNSSEC создаёт цепочку доверия от корневой зоны (подписанной ICANN) через TLD до авторитетных зон.
# Verify DNSSEC signature on a domain
dig +dnssec example.com A
# Look for 'ad' (authenticated data) flag in response
# and the RRSIG record alongside the A record
# Query for DNSKEY record
dig DNSKEY example.com
# Query for DS record at parent zone
dig DS example.com @a.iana-servers.net
# Full DNSSEC chain validation check
dig +sigchase +trusted-key=/.../root.key example.com AТипы ключей DNSSEC: KSK и ZSK
DNSSEC использует два типа ключей подписи. Zone Signing Key (ZSK) подписывает отдельные наборы записей DNS (RRSIG) и часто заменяется (ежемесячно или ежеквартально) для гибкости эксплуатации. Key Signing Key (KSK) подписывает набор записей DNSKEY, обеспечивая якорь доверия для зоны. KSK заменяется реже (ежегодно), поскольку при каждом изменении KSK родительскую зону необходимо обновлять новой записью DS — этот процесс требует координации. KSK проверяет ZSK, а ZSK подписывает данные. Такая двухуровневая структура уравновешивает безопасность (частая замена ZSK) и эксплуатационные затраты (редкая замена KSK).
Ограничения DNSSEC
У DNSSEC есть важные ограничения. Он не шифрует запросы DNS — он лишь подписывает ответы для обеспечения целостности. Перехватчик по-прежнему может видеть все запросы DNS, но не может подделывать ответы. Перечисление зоны: записи NSEC (подтверждающие отсутствие имён) позволяют атакующим обходить зону и перечислять все доменные имена внутри неё; NSEC3 снижает этот риск с помощью хешированных имён, но не устраняет его полностью. Эксплуатационная сложность: управление ключами, истечение срока действия подписей и координация с родительской зоной создают значительные эксплуатационные затраты. Распространение DNSSEC остаётся неполным: многие TLD и регистраторы его поддерживают, но многие организации ещё не внедрили эту технологию.
DNS через HTTPS (DoH)
DNS через HTTPS (DoH) шифрует DNS-запросы внутри HTTPS (RFC 8484), скрывая их содержимое от наблюдателей в сети. Запросы отправляются на совместимый с DoH распознаватель по стандартному URL HTTPS, благодаря чему DNS-трафик невозможно отличить от другого HTTPS-трафика. Это не позволяет интернет-провайдерам, работодателям и атакующим, перехватывающим трафик, видеть, какие домены запрашивает пользователь, — таким образом устраняется пробел в конфиденциальности, который оставляет DNSSEC. Однако DoH переносит доверие с DNS-распознавателя сети на поставщика DoH (обычно Google 8.8.8.8, Cloudflare 1.1.1.1 или собственный DoH-распознаватель организации). Теперь DoH изначально поддерживается большинством популярных браузеров.
# DoH query using curl
curl -H 'accept: application/dns-json' \
'https://cloudflare-dns.com/dns-query?name=example.com&type=A'
# DoH query via RFC 8484 (binary format)
curl -s -H 'Content-Type: application/dns-message' \
-H 'Accept: application/dns-message' \
--data-binary @query.bin \
https://dns.google/dns-query
# Configure Firefox to use DoH
# about:config -> network.trr.uri
# Set to: https://mozilla.cloudflare-dns.com/dns-queryDNS через TLS (DoT)
DNS через TLS (DoT) (RFC 7858) шифрует DNS-запросы с помощью TLS через выделенный TCP-порт 853, а не туннелирует их через HTTPS. DoT обеспечивает те же преимущества конфиденциальности, что и DoH, — скрывает содержимое запросов от перехватчиков, — но администраторам сети проще его обнаруживать и фильтровать (порт 853 вместо порта 443). Это палка о двух концах: DoT виден в сети, и корпоративные межсетевые экраны могут его блокировать, тогда как DoH сложнее заблокировать, не затронув обычный HTTPS-трафик. Локальные распознаватели (на уровне OS) чаще используют DoT, а браузеры — DoH.
# Test DoT connection using kdig
kdig -d @9.9.9.9 +tls-ca example.com A
# Test DoT using openssl
openssl s_client -connect 1.1.1.1:853
# Then type: query string in DNS wire format
# Configure systemd-resolved to use DoT (Linux)
# /etc/systemd/resolved.conf:
[Resolve]
DNS=9.9.9.9#dns.quad9.net
DNSOverTLS=yesDoH и DoT: аспекты для Enterprise
Зашифрованный DNS создаёт проблему для сред Enterprise, зависящих от фильтрации на основе DNS и sinkhole-механизмов. Когда браузеры используют внешние распознаватели DoH, внутренние средства управления DNS обходятся. Меры защиты Enterprise: развернуть внутренний распознаватель DoH/DoT (Cisco Umbrella, Pi-hole с DoH) и настроить все устройства на его использование; заблокировать IP-адреса внешних распознавателей DoH на межсетевом экране (Google 8.8.8.8, Cloudflare 1.1.1.1) на порту 443; использовать Group Policy для отключения DoH на уровне браузера на управляемых конечных устройствах; а также настроить правила прозрачного прокси, перехватывающего DNS через TLS на порту 853. Цель — направлять весь DNS-трафик через контролируемый распознаватель, не блокируя зашифрованный DNS полностью.
# Enterprise DoH bypass prevention
# Windows Group Policy:
# Computer Config > Admin Templates > Google Chrome
# 'DNS over HTTPS mode': Disabled
# 'DNS over HTTPS URI templates': <empty>
# Firewall: block known public DoH resolvers
iptables -I FORWARD -d 8.8.8.8 -p tcp --dport 443 -j DROP
iptables -I FORWARD -d 1.1.1.1 -p tcp --dport 443 -j DROP
iptables -I FORWARD -d 9.9.9.9 -p tcp --dport 443 -j DROP
iptables -I FORWARD -d 149.112.112.112 -p tcp --dport 443 -j DROP
# Redirect all DNS to corporate resolver
iptables -t nat -A PREROUTING -p udp --dport 53 \
-j DNAT --to-destination 10.0.0.53:53Безопасность DNS на практике
Полная стратегия безопасности DNS объединяет несколько средств контроля. DNSSEC для авторитетных зон предотвращает подмену записей в кэше вашего домена. Фильтрация на основе DNS (Cisco Umbrella, Cloudflare Gateway) блокирует вредоносные домены на уровне распознавателя. DoH/DoT к контролируемому распознавателю обеспечивает конфиденциальность запросов без потери видимости фильтрации. Ведение журналов DNS в SIEM сохраняет все запросы для поиска угроз — журналы DNS раскрывают C2-трафик, извлечение данных через DNS-туннелирование и активность алгоритма генерации доменов (DGA) вредоносных программ. Телеметрия DNS — один из наиболее ценных доступных источников данных для безопасности.
Обнаружение DNS-туннелирования
DNS-туннелирование кодирует данные внутри DNS-запросов и ответов, чтобы извлекать данные или устанавливать каналы C2 через сети, где другой исходящий трафик заблокирован. Такие инструменты, как iodine, DNScat и dnscat2, кодируют полезную нагрузку в метках поддоменов (запрос к EXFILTRATEDDATA.evil.com) или записях TXT. Обнаружение: необычно длинные имена DNS-запросов (более 100 символов), большой объём запросов с одного узла, запросы к несуществующим родительским доменам, необычные типы записей (TXT, NULL) и анализ энтропии меток домена (закодированные данные имеют высокую энтропию Шеннона). Платформы аналитики безопасности DNS автоматически выявляют шаблоны туннелирования.
# DNS tunneling detection indicators
# Flag queries with:
# 1. Query name > 100 characters
# 2. More than 50 queries/minute from single host
# 3. High-entropy domain labels (base64/hex patterns)
# 4. TXT or NULL record type queries (unusual)
# 5. Queries to domains with no web presence
# Example tunnel query (encoded payload)
# aGVsbG8gd29ybGQ.vGhpcyBpcyBkYXRh.evil-domain.com
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Base64 encoded 'hello world this is data'Зоны политик ответов DNS (RPZ)
Зоны политик ответов DNS (RPZ) позволяют распознавателям DNS применять локальные политики переопределения к ответам DNS, фактически создавая локальный sinkhole на уровне распознавателя без изменения глобальной инфраструктуры DNS. Когда клиент запрашивает известный вредоносный домен, политика RPZ возвращает NXDOMAIN, перенаправляет запрос на IP-адрес sinkhole или пропускает ответ без изменений. Каналы RPZ доступны у поставщиков аналитики угроз (Spamhaus, SURBL) и могут напрямую импортироваться в распознаватели BIND или Unbound. RPZ — мощный инструмент защиты, поскольку применяет фильтрацию на уровне DNS ко всем устройствам в сети без настройки на стороне клиента.
# BIND RPZ configuration snippet
# /etc/named.conf
response-policy {
zone 'rpz.spamhaus.net';
zone 'local-blocklist.internal';
};
# RPZ zone file (local-blocklist.internal)
$ORIGIN local-blocklist.internal.
@ SOA ns1.company.com. admin.company.com. 2024010101 3600 600 86400 300
botnet-c2.evil IN CNAME . # NXDOMAIN response
phishing-site.com IN A 10.0.0.99 # Redirect to sinkholeБыстрая проверка
Проверьте понимание концепций CompTIA Security+ (SY0-701) из этого урока.
Итоги урока
В этом уроке Вы узнали следующее: DNSSEC добавляет к записям DNS криптографические подписи с помощью пар ключей KSK/ZSK, предотвращая отравление кэша, но не шифрует запросы; DNS через HTTPS (DoH) шифрует DNS-запросы внутри HTTPS, предотвращая перехват, но создаёт риски обхода корпоративной фильтрации; DNS-туннелирование кодирует данные в DNS-запросах и обнаруживается по длине и объёму запросов, а также с помощью анализа энтропии. Далее мы рассмотрим IPsec, протоколы VPN и безопасность удалённого доступа.
Часто задаваемые вопросы
Урок «Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)» бесплатный?
Да — полный текст урока «Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)»?
Узнайте, как DNSSEC предотвращает отравление кэша DNS, а DNS через HTTPS и DNS через TLS защищают конфиденциальность запросов от наблюдателей на пути передачи. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Замена небезопасных протоколов: Telnet и SSH, FTP и SFTP
- Версии TLS, наборы шифров и совершенная прямая секретность
- Безопасный DNS: DNSSEC и DNS через HTTPS (DoH)
- IPsec, протоколы VPN и безопасность удалённого доступа