DNSSEC: как работает защита DNS и зачем она нужна
DNS (Domain Name System) по умолчанию не обеспечивает проверку подлинности ответов. Это означает, что злоумышленник может подменить DNS-ответ и перенаправить пользователя на фишинговый сайт. DNSSEC решает эту проблему, добавляя криптографическую подпись к DNS Lookup.
Проблема: DNS без защиты
Стандартный DNS работает по протоколу UDP без шифрования и аутентификации. Это делает его уязвимым к нескольким типам атак:
DNS Cache Poisoning
Злоумышленник отправляет поддельные DNS-ответы рекурсивному резолверу. Если атака успешна, резолвер кэширует неправильный IP геолокацию, и все его пользователи получают подменённый ответ.
Man-in-the-Middle
Атакующий перехватывает DNS-запрос между клиентом и резолвером и подменяет ответ. Пользователь получает IP фишингового сервера вместо настоящего.
BGP Hijacking
На уровне маршрутизации злоумышленник перенаправляет трафик к DNS-серверу через свою инфраструктуру, получая возможность модифицировать ответы.
Что такое DNSSEC
DNSSEC (DNS Security Extensions) — набор расширений DNS, определённых в RFC 4033–4035. DNSSEC не шифрует DNS-запросы, но добавляет цифровые подписи к DNS-записям, позволяя резолверу проверить их подлинность и целостность.
Как работает DNSSEC
Цепочка доверия (Chain of Trust)
DNSSEC строит цепочку доверия от корневой зоны DNS до конкретного домена:
- Корневая зона (.) — подписывает записи о TLD (.com, .ru, .org)
- TLD (.com) — подписывает записи о доменах второго уровня (example.com)
- Домен (example.com) — подписывает свои записи (A, MX, TXT и т.д.)
Каждый уровень хранит открытый ключ следующего уровня, образуя непрерывную цепочку подписей.
Типы записей DNSSEC
| Запись | Назначение |
|---|---|
RRSIG | Цифровая подпись набора DNS-записей. Каждый набор записей (например, все A-записи домена) подписывается отдельно. |
DNSKEY | Открытый ключ зоны. Используется для проверки RRSIG. |
DS | Delegation Signer — хэш ключа дочерней зоны, размещённый в родительской зоне. Связывает цепочку доверия. |
NSEC / NSEC3 | Authenticated Denial of Existence — доказательство того, что запрошенная запись не существует (защита от подмены «нет такого домена»). |
KSK и ZSK
В DNSSEC используются два типа ключей:
- KSK (Key Signing Key) — «ключ подписи ключей». Подписывает DNSKEY-записи зоны. Его хэш (DS-запись) хранится в родительской зоне. Меняется редко.
- ZSK (Zone Signing Key) — «ключ подписи зоны». Подписывает все остальные записи зоны (A, MX, TXT и т.д.). Меняется регулярно (каждые 1–3 месяца).
Процесс валидации
Когда DNSSEC-валидирующий резолвер получает DNS-ответ:
- Получает запись A (например, IP сайта) вместе с RRSIG
- Запрашивает DNSKEY зоны и проверяет подпись RRSIG
- Проверяет DNSKEY через DS-запись из родительской зоны
- Поднимается по цепочке до корневого ключа (trust anchor)
- Если все подписи верны — ответ считается подлинным
- Если подпись не сходится — ответ отвергается (SERVFAIL)
Как проверить DNSSEC
Командная строка
# Проверить наличие DNSSEC
dig example.com +dnssec +short
# Полная проверка с подписями
dig example.com DNSKEY +dnssec
dig example.com DS
Онлайн-инструменты
Инструмент DNS Lookup на Enterno.io показывает наличие DNSSEC-записей (DNSKEY, DS, RRSIG) для любого домена.
Как включить DNSSEC
Через регистратора
Большинство крупных регистраторов поддерживают DNSSEC:
- Включите DNSSEC-подпись на вашем DNS-хостинге (Cloudflare, Route53 и т.д.)
- Скопируйте DS-запись из DNS-хостинга
- Добавьте DS-запись у регистратора домена
Cloudflare
Cloudflare включает DNSSEC в один клик. DS-запись генерируется автоматически — остаётся только добавить её у регистратора.
Ограничения DNSSEC
- Не шифрует запросы — DNSSEC подтверждает подлинность, но DNS-запросы видны провайдеру. Для шифрования нужен DoH (DNS over SSL/TLS проверку) или DoT (DNS over TLS).
- Увеличивает размер ответов — подписи добавляют объём, что может вызвать проблемы с UDP-фрагментацией.
- NSEC и зонные прогулки — NSEC позволяет перечислить все записи зоны. NSEC3 решает эту проблему хэшированием.
- Сложность ротации ключей — неправильная ротация KSK может «уронить» весь домен.
DNSSEC + DoH/DoT
Для полной защиты DNS рекомендуется комбинировать:
- DNSSEC — защита подлинности ответов (подпись на стороне сервера)
- DoH / DoT — шифрование канала между клиентом и резолвером (конфиденциальность)
Вместе они обеспечивают и подлинность, и конфиденциальность DNS-запросов.
Проверьте ваш сайт прямо сейчас
Проверить →