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

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: DNSSEC, DNS, 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

# Linux # Безопасность # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет