Настройка DNSSEC на BIND
Тематические термины: DNSSEC, DNS, BIND
Рассмотрим настройку DNSSEC на примере домена dmosk.ru. Примеры самих настроек выполним для Linux CentOS и Ubuntu.
Создание ключей
Подписывание зоны
Настройка сервера BIND
Проверка настроек
Автоматическая подпись зоны
ГОСТ
Прежде чем начать, проверяем, что версия нашего bind 9.9 и выше:
named -v
Формирование ключей
Создаем каталог, в котором будем хранить ключи и сразу переходим в него.
На CentOS / Red Hat:
mkdir /var/named/keys
cd /var/named/keys
На Ubuntu / Debian:
mkdir /etc/bind/keys
cd /etc/bind/keys
* месторасположение каталога может быть любым. Если в системе активирован SELinux, необходимо также настроить контексты безопасности или отключить его.
Генерируем мастер ключ (KSK):
dnssec-keygen -f KSK -a RSASHA1 -b 2048 -n ZONE -r /dev/urandom dmosk.ru
* где:
- -f KSK — флаг, который говорит, что формируется мастер ключ.
- -a RSASHA1 — используемый алгоритм шифрования.
- -b 2048 — размер ключа в битах.
- -n ZONE — для DNS-зоны.
- -r /dev/urandom — путь к файлу со случайными данными. В различных версиях системы путь может отличаться. Если упустить этот ключ в CentOS, процесс генерации сертификата может зависнуть.
- dmosk.ru — домен, для которого предназначен ключ.
* подробное описание ключей можно посмотреть командой dnssec-keygen -help или man dnssec-keygen.
Генерируем ключ для зоны (ZSK):
dnssec-keygen -a RSASHA1 -b 2048 -n ZONE -r /dev/urandom dmosk.ru
Задаем владельца для сгенерированных файлов.
На CentOS / Red Hat:
chown -R named:named /var/named/keys
На Ubuntu / Debian:
chown -R bind:bind /etc/bind/keys
Подпись зоны
Копируем содержимое ключей в файл зоны:
cat Kdmosk.ru.*key >> /var/named/master/dmosk.ru
* где Kdmosk.ru.*key — все ключи для домена dmosk.ru; /var/named/master/dmosk.ru — путь к файлу с настройкой зоны.
Переходим в каталог, где хранится наша зона.
CentOS / Red Hat:
cd /var/named/master
Ubuntu / Debian:
cd /etc/bind/master
Подписываем зону:
dnssec-signzone -e +3mo -N INCREMENT -K /var/named/keys dmosk.ru
* где:
- -e +3mo — время действия RRSIG (3 месяца).
- -N INCREMENT — использовать формат серийного номера SOA из файла.
- -K /var/named/keys — путь хранения сгенерированных ключей.
- dmosk.ru — домен, который подписываем.
Система должна вернуть, примерно, следующее:
Verifying the zone using the following algorithms: RSASHA1.
Zone fully signed:
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
ZSKs: 1 active, 0 stand-by, 0 revoked
В каталоге хранения зон мы должны увидеть dmosk.ru.signed — это файл подписанной зоны.
Настройка BIND
Открываем конфигурационный файл.
На CentOS / Red Hat:
vi /etc/named.conf
На Ubuntu / Debian:
vi /etc/bind/named.conf.local
Проверяем, чтобы dnssec был включен:
options {
...
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
}
* где dnssec-enable — включение или отключение dnssec на уровне сервера; dnssec-validation — проверка корректность ответов; dnssec-lookaside — разрешение использовать сторонние корни DNSSEC.
В настройке зоны меняем путь к файлу:
zone "dmosk.ru" {
file "master/dmosk.ru.signed";
};
Перезапускаем bind:
На CentOS / Red Hat:
systemctl reload named
На Ubuntu / Debian:
systemctl reload bind
Проверка
Чтобы проверить, отдает ли наш сервер bind ответы с цифровыми подписями, вводим команду:
dig mail.dmosk.ru +dnssec
* в данном примере мы запросили IP-адрес для записи mail.dmosk.ru. +dnssec означает, что также клиент запрашивает RRSIG для этой записи.
Мы должны увидеть записи вместе с их RRSIG, например:
mail.dmosk.ru. 14400 IN A 192.168.1.5
mail.dmosk.ru. 14400 IN RRSIG A 5 3 14400 20171101123749 20170927123749 24195 dmosk.ru. JfR+P1GYYA0r9OGVE43WJfK9ByIODN8pKAcoEGHdWlaGAEJK8/toFEBX ODDuYM83N7jptZUXzv7MR5RQyRZb+t5/l+umQ4FSHtOc2PcrJA1mvY7j EGSccsWPv9k3XdzN1v9ies+eINE9tr7ObvS4CUN97t80SzhWSP6AIvsR 0152zUAIs3yQYfumbo6oV62oUGp4bYnj0VXJ2096hRP8NRGPjxoG/Spj fEzmlmiA4tzYJhdEKNcNtw04Z8NPP5+UcnHBNrqm0la0opqSR6SXQiSV CL5OfMxOBeK3XuRtMobbB/2iPFRr+muclB9YT/5nt9elEl6RtegBpefh gfZ44A==
С Windows можно проверить с помощью Powershell:
resolve-dnsname -name mail.dmosk.ru -type A -server 192.168.0.15 -dnssecok
* где 192.168.0.15 — адрес сервера bind с настроенным dnssec.
Автоматическое подписывание зоны
Каждый раз после редактирования зоны не очень удобно ее переподписывать командой dnssec-signzone.
Для автоматизации процесса в конфигурационном файле bind редактируем:
options {
...
key-directory "/var/named/keys";
sig-validity-interval 20 10;
};
* где key-directory — каталог для хранения сгенерированных ключей, необходимо прописать тот, в котором мы формировали последние командой dnssec-keygen; sig-validity-interval — период действия ключей: дней / период обновления.
Для зоны редактируем:
zone "dmosk.ru" {
...
file "master/dmosk.ru";
inline-signing yes;
auto-dnssec maintain;
};
* где inline-signing — включение или отключение прозрачного формирования подписей (без необходимости менять файл зоны); auto-dnssec — уровень автоматической настройки DNSSEC для зоны. Также обращаем внимание, что мы убрали в пути .signed.
Проверяем, что у пользователя named/bind есть права на запись в каталог хранения зоны. При необходимости, меняем владельца, например:
chown -R named:named /var/named/master
Удаляем старый файл подписанной зоны:
rm -f /var/named/master/dmosk.ru.signed
Открываем на редактирование файл зоны и меняем серийный номер.
Перезапускаем bind.
На CentOS / Red Hat:
systemctl restart named
На Ubuntu / Debian:
systemctl restart bind
В каталоге зоны должны появиться дополнительные 3 файла: dmosk.ru.jbk, dmosk.ru.signed, dmosk.ru.signed.jnl
Готово. Проверяем настройку командой dig.
Ключи ГОСТ
Формируются при помощи ключа -a ECCGOST.
KSK:
dnssec-keygen -f KSK -a ECCGOST -b 2048 -n ZONE -r /dev/urandom dmosk.ru
ZSK:
dnssec-keygen -a ECCGOST -b 2048 -n ZONE -r /dev/urandom dmosk.ru