Что такое DNSSEC и стоит ли его включать
Продвинутое3 минРедакция Innovialabs
Коротко
DNSSEC добавляет к DNS-записям цифровые подписи, чтобы резолвер мог проверить, что ответ не подменён; включать его стоит, если ваш DNS-провайдер и регистратор поддерживают его без ручной возни, но нужно аккуратно обращаться с DS-записью при смене провайдера.
Короткий ответ
DNSSEC — это расширение DNS, которое добавляет к записям цифровые подписи. Проверяющий резолвер может убедиться, что ответ пришёл от настоящего владельца зоны и не был изменён по дороге. Это защищает от подмены DNS-ответов и отравления кеша, когда злоумышленник подсовывает пользователю чужой IP вместо вашего.
Стоит ли включать? Если ваш DNS-провайдер подписывает зону автоматически, а регистратор позволяет добавить DS-запись — да, это относительно недорогая дополнительная защита. Главное — понимать, что сломается при неаккуратной смене провайдера.
Чего DNSSEC не делает
- Не шифрует DNS-запросы. Для этого есть DNS-over-HTTPS и DNS-over-TLS.
- Не заменяет HTTPS. Сертификат по-прежнему нужен.
- Не защищает, если злоумышленник получил доступ к вашему аккаунту у регистратора или DNS-провайдера. Защищайте их двухфакторной аутентификацией.
Как это работает
В подписанной зоне появляются новые типы записей:
| Запись | Назначение |
|---|---|
| DNSKEY | Публичные ключи зоны. Обычно два: ключ для подписи ключей (KSK) и ключ для подписи зоны (ZSK) |
| RRSIG | Подпись для каждого набора записей (A, MX, TXT и т.д.) |
| DS | Хеш ключа KSK, который хранится в родительской зоне (например, в зоне .com) |
| NSEC / NSEC3 | Подписанное доказательство, что запрошенной записи не существует |
Цепочка доверия через DS
Подпись сама по себе ничего не доказывает: злоумышленник может подписать подделку своим ключом. Поэтому ключи связаны в цепочку доверия:
- Резолвер доверяет ключу корневой зоны — он заранее встроен в его настройки.
- Корневая зона содержит подписанную DS-запись для доменной зоны верхнего уровня, например
.com. - Зона
.comсодержит подписанную DS-запись дляexample.com. - DS-запись совпадает с хешем ключа DNSKEY зоны
example.com. - Этим ключом подписаны все записи
example.com.
Если на любом шаге подпись не сходится, проверяющий резолвер возвращает ошибку SERVFAIL вместо ответа. Это и защищает от подмены, и одновременно является главной причиной поломок.
Как включить DNSSEC
- Проверьте поддержку. DNSSEC должна поддерживать доменная зона верхнего уровня вашего домена, регистратор и DNS-провайдер.
- Включите подписание у DNS-провайдера. Обычно это одна кнопка в панели. Провайдер сгенерирует ключи и покажет данные DS-записи: key tag, алгоритм, тип дайджеста и сам дайджест.
- Добавьте DS-запись у регистратора. Скопируйте значения в соответствующий раздел. Если DNS и регистрация у одного провайдера, этот шаг часто выполняется автоматически.
- Проверьте результат после обновления родительской зоны:
dig DS example.com +short
dig example.com A +dnssec
delv example.com A
В ответе dig +dnssec от проверяющего резолвера должен появиться флаг ad, а delv должен сообщить о полностью проверенном ответе. Также можно воспользоваться онлайн-анализаторами цепочки DNSSEC.
Что может сломаться
- Смена DNS-провайдера. Самая частая проблема. Если сменить NS-серверы, а у регистратора осталась старая DS-запись, проверяющие резолверы увидят несовпадение ключей и домен перестанет открываться для части пользователей.
- Ошибка в DS-записи. Опечатка или неверный алгоритм ломают цепочку сразу после публикации.
- Истёкшие подписи. RRSIG имеют срок действия. Управляемые провайдеры обновляют их сами, а при собственном DNS-сервере это ваша ответственность.
- Смена ключей (rollover). Замена KSK требует обновления DS у регистратора в правильном порядке.
Безопасная смена провайдера: сначала удалите DS-запись у регистратора, дождитесь истечения её TTL в родительской зоне, затем переносите NS, включайте подписание у нового провайдера и добавляйте новую DS. Более сложный вариант без отключения защиты — перенос с двумя наборами ключей, если оба провайдера это поддерживают.