Страница 1 из 1

Настройка DNSSEC на BIND

Добавлено: 17 янв 2022, 23:24
xor

Источник:https://www.dmosk.ru/miniinstruktions.p ... ind#keygen

Настройка DNSSEC на BIND

Рассмотрим настройку DNSSEC на примере домена dmosk.ru. Примеры самих настроек выполним для Linux CentOS и Ubuntu.
Прежде чем начать, проверяем, что версия нашего 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