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
      

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
      

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
      
  • 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
      
  • Проверяем, чтобы 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
      
  • Или перегружаем конфигурацию 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
      
  • Или перегружаем конфигурацию 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 записи в реестр, спустя какое-то время можно проверять все ли в порядке.

Links to this note

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие