DNS. Bind. DNSSEC
Настройка DNSSEC в Bind.
Содержание
1 Общая информация
- Версия bind выше, чем 9.9:
named -v
2 Ключи
2.1 Каталоги ключей
- Создаём каталог, в котором будем хранить ключи и переходим в него:
- Red Hat:
mkdir /var/named/keys cd /var/named/keys - Debian, Ubuntu:
mkdir /etc/bind/keys cd /etc/bind/keys
- Red Hat:
2.2 Создание ключей
Создаём мастер-ключей (
KSK):dnssec-keygen -f KSK -a ECDSAP256SHA256 -b 4096 -n ZONE example.com-f KSK: создаётся мастер-ключ;-a ECDSAP256SHA256: используемый алгоритм шифрования;-b 2048: размер ключа в битах (для алгоритмаECDSAP256SHA256игнорируется);-n ZONE: для DNS-зоны;-r /dev/urandom: источник случайных данных;example.com: домен, для которого предназначен ключ.
Создаём ключ для зоны (
ZSK):dnssec-keygen -a ECDSAP256SHA256 -b 2048 -n ZONE example.comЗадаём владельца для сгенерированных файлов:
- Red Hat:
chown -R named:named /var/named/keys - Debian, Ubuntu:
chown -R bind:bind /etc/bind/keys
- Red Hat:
2.3 Права доступа
- Поправим права доступа:
chown -R named:named /var/named/keys chmod 640 /var/named/keys/*
3 Подпись зоны
- Зоны можно подписывать вручную или настроить автоматическую подпись зон.
- При ручной подписи необходимо переподписывать файл зоны после изменения.
3.1 Ручная подпись зоны
Копируем содержимое ключей в файл зоны:
cat Kexample.com.*key >> /var/named/master/example.comПереходим в каталог, где хранится наша зона:
- Red Hat:
cd /var/named/master
- Red Hat:
Debian, Ubuntu:
cd /etc/bind/masterПодписываем зону:
dnssec-signzone -e +3mo -N INCREMENT -K /var/named/keys example.com-e +3mo: время действия RRSIG (3 месяца);-N INCREMENT: использовать формат серийного номера SOA из файла;-K /var/named/keys: путь хранения сгенерированных ключей;example.com: подписываемый домен.
В каталоге хранения зон мы должны увидеть файл подписанной зоны
example.com.signed.
3.1.1 Настройка BIND
Редактируем конфигурационный файл:
- Red Hat:
/etc/named.conf - Debian, Ubuntu:
/etc/bind/named.conf.local
- Red Hat:
Проверяем, чтобы dnssec был включён:
options { ... dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; }dnssec-enable: включение или отключениеdnssecна уровне сервера;dnssec-validation: проверка корректность ответов;dnssec-lookaside: разрешение использовать сторонние корни DNSSEC.
В настройке зоны меняем путь к файлу:
zone "example.com" { file "master/example.com.signed"; };Перезапускаем bind:
- Red Hat:
systemctl reload named - Debian, Ubuntu:
systemctl reload bind
- Red Hat:
Или перегружаем конфигурацию bind:
rndc reload
3.2 Автоматическое подписывание зоны
Для автоматизации процесса в конфигурационном файле bind задаём:
options { ... key-directory "/var/named/keys"; sig-validity-interval 20 10; };key-directory: каталог хранения ключей;sig-validity-interval: период действия ключей: дней (период обновления).
Для зоны редактируем:
zone "example.com" { ... file "master/example.com"; inline-signing yes; auto-dnssec maintain; };inline-signing: включение или отключение прозрачного формирования подписей (без необходимости менять файл зоны);auto-dnssec: уровень автоматической настройки DNSSEC для зоны.
Меняем серийный номер файла зоны.
Перезапускаем bind:
- Red Hat:
systemctl reload named - Debian, Ubuntu:
systemctl reload bind
- Red Hat:
Или перегружаем конфигурацию bind:
rndc reloadВ каталоге зоны должны появиться дополнительные 3 файла:
example.com.jbk,example.com.signed,example.com.signed.jnl.
4 Проверка работы
- Чтобы проверить, отдаёт ли наш сервер ответы с цифровыми подписями, вводим команду:
dig example.com +dnssec - Посмотрим подпись зоны:
dig DNSKEY example.com. @localhost +multiline - Или:
dig A example.com. @localhost +noadditional +dnssec +multiline - Получить DS записи для реестра доменов и прописать их у регистратора:
dig @localhost dnskey example.com | dnssec-dsfromkey -f - example.com - После того, как мы добавили DS записи в реестр, спустя какое-то время можно проверять все ли в порядке.