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 записи в реестр, спустя какое-то время можно проверять все ли в порядке.