Что такое DNSSEC?
DNSSEC (Domain Name System Security Extensions) — набор криптографических расширений DNS, подтверждающий подлинность ответов DNS цифровыми подписями записей и защищающий данные DNS от подделки и изменения.Как работает DNSSEC
Chain of Trust:
Root Zone (.)
├── Signs: .com zone key
│ └── KSK (Key Signing Key)
│ └── ZSK (Zone Signing Key)
│
TLD Zone (.com)
├── Signs: example.com zone key
│ └── DS Record points to child KSK
│
Domain Zone (example.com)
├── Signs: All DNS records
│ └── RRSIG (Record Signature)
│ └── DNSKEY (Public keys)
│
Resolver validates entire chain from root
Типы записей DNSSEC
| Запись | Назначение | Описание |
|---|---|---|
| RRSIG | Подпись | Криптографическая подпись каждого набора записей |
| DNSKEY | Открытый ключ | Открытые ключи подписи зоны (KSK и ZSK) |
| DS | Делегирующий подписывающий объект | Хеш KSK дочерней зоны в родительской зоне |
| NSEC/NSEC3 | Подтверждённое отрицание | Доказывает отсутствие записи |
Типы ключей
| Ключ | Назначение | Периодичность ротации |
|---|---|---|
| KSK (Key Signing Key) | Подписывает записи DNSKEY | Ежегодно или реже |
| ZSK (Zone Signing Key) | Подписывает все остальные записи | От ежемесячно до ежеквартально |
Процесс проверки DNSSEC
1. Клиент запрашивает у DNS-резолвера A-запись example.com
2. Резолвер получает A-запись и подпись RRSIG
3. Резолвер получает DNSKEY для проверки RRSIG
4. Резолвер проверяет DS относительно DNSKEY
5. Цепочка продолжается до корня, проверяя каждый уровень
6. Если все подписи действительны, ответ считается аутентифицированным
Какие угрозы предотвращает DNSSEC
| Атака | Описание | Защита DNSSEC |
|---|---|---|
| Отравление кэша | Внедрение ложных записей в кэш | Подписи выявляют подмену |
| Атака посредника | Перехват и изменение ответов | Криптографическая проверка завершается ошибкой |
| Подмена DNS | Возврат поддельных IP-адресов | У поддельных записей нет действительной подписи |
Что учитывать при внедрении
- Производительность: из-за подписей ответы больше (примерно 1000–4000 байт вместо примерно 100 байт)
- Управление ключами: нужны безопасные генерация, хранение и ротация ключей
- Подписание зоны: при изменении записей зону нужно подписывать заново
- Поддержка резолвера: клиентам нужны резолверы с проверкой DNSSEC
Лучшие практики
1. Используйте алгоритм 13 или 14: ECDSA создаёт подписи меньше RSA
2. Автоматизируйте ротацию ключей: используйте инструменты вроде OpenDNSSEC для жизненного цикла ключей
3. Следите за истечением: у подписей RRSIG есть сроки действия
4. Тестируйте до внедрения: проверяйте зону инструментами вроде dnsviz.net
5. Планируйте аварийные действия: документируйте процедуры смены ключей
DNSSEC обеспечивает важную защиту целостности DNS и помогает направлять пользователей к легитимным ресурсам, а не к серверам под контролем атакующих.