Настройка DNSSEC

Материал из ISPWiki
Перейти к: навигация, поиск

Технология DNSSEC разработана как расширение системы DNS (Domain Name System) для защиты от подмены данных. Такая защита позволяет не допустить фишинга, отравления кэша и многих других интернет-угроз. Принцип работы DNSSEC основан на использовании цифровых подписей и построении цепочки доверия.

Принципы работы DNSSEC

DNSSEC создаёт для каждого типа ресурсных записей специальную ресурсную запись с цифровой подписью. Главная особенность цифровой подписи состоит в наличии открытых, публично доступных методов проверки достоверности подписи. При этом генерирование подписи для произвольных данных требует наличия в распоряжении подписывающего секретного ключа. Соответственно проверка подписи доступна каждому участнику системы, но подписание новых или изменённых данных доступно только тому, у кого есть секретный ключ.

Открытые ключи публикуются в зоне домена в виде ресурсной записи типа DNSKEY совместно с остальными ресурсными записями. Для проверки открытой части ключа используется цепочка доверия. Проверка достоверности ключа происходит с помощью его дайджестов (fingerprint, хэш), предварительно отправленных в родительскую зону в виде DS-записей. Дайджесты открытых ключей родительских зон также отправляются в соответствующие для них родительские зоны. Такая цепочка доверия строится до корневой зоны, у которой открытый ключ и его дайджесты опубликованы в официальных документах ICANN — организации ответственной за корневую зону.

DNSSEC использует 2 типа ключей:

  • ZSK (Zone Signing Key) — ключ для подписи ресурсных записей зоны;
  • KSK (Key Signing Key) — ключ для подписи ключей.

Для каждого типа ключа можно указать алгоритм, длину ключа и период обновления. С указанными параметрами будут генерироваться ключи для подписывания доменов.

Текущая реализация поддержки DNSSEC позволяет указать только одинаковый алгоритм для ключей.

Общепринятой практикой является выбор для KSK больших значений для длины ключа и периода обновления по сравнению с ZSK:

  • ZSK-ключ используется каждый раз, когда происходит редактирование доменной зоны или её обновление. Использование короткого ключа облегчает процесс подписи, снизив нагрузку на сервер, а небольшой период обновления ZSK позволяет поддерживать высокий уровень безопасности;
  • С помощью KSK-ключей производится только подписание ключей, в связи с чем он используется реже ZSK. Поэтому длинный ключ не так сильно влияет на производительность. Для длинного ключа можно указывать и длинный период обновления ключа без ущерба для безопасности. Длинный период обновления KSK позволяет реже передавать DS-записи в родительскую зону.

Для избежания компрометации ключей DNSSEC используется процесс обновления ключей. В соответствии с принятыми практиками (RFC7583 и RFC6781) ключи обновляются постепенно, чтобы у вторичных серверов и серверов кэширования DNS было достаточно времени для синхронизации с первичным сервером DNS, не допуская сбоев работы домена.

Процесс обновления KSK соответствует алгоритму Double-DS:

  1. Публикация DS-записей нового KSK-ключа в родительской зоне. В ISPmanager следующий KSK-ключ создаётся сразу при подписании домена или сразу после удаления старого KSK-ключа. В таком случае у пользователя появляется возможность заранее опубликовать DS-записи нового ключа. Для корректной работы обновления KSK-ключа в ISPmanager DS-записи нового ключа необходимо опубликовать в родительской зоне за месяц до конца обновления KSK-ключа;
  2. Замена KSK-ключа. Активный действующий KSK-ключ заменяется новым KSK-ключом. В ISPmanager замена происходит за 2 недели до конца обновления KSK-ключа;
  3. Удаление DS-записей старого ключа в родительской зоне. В этот момент ISPmanager генерирует следующий новый ключ, позволяя пользователям одновременно выполнить необходимые действия в родительской зоне: удалить DS-записи старого ключа и добавить DS-записи следующего нового ключа.
Double-DS KSK Rollover

Процесс обновления ZSK происходит по алгоритму Pre-Publication:

  1. Создание и публикация в доменной зоне нового ключа ZSK-ключа. В ISPmanager выполняется за 2 недели до смены ключа. Новый ключ является пассивным и не участвует в процессе подписывания доменной зоны;
  2. Замена ZSK-ключа. Опубликованный заранее новый ZSK-ключ становится активным. Действующий до этого ZSK-ключ становится пассивным и больше не участвует в процессе подписи;
  3. Удаление старого пассивного ZSK-ключа. Действие выполняется через 2 недели после замены ZSK-ключа.
pre-publish ZSK Rollover

Включение поддержки DNSSEC

Поддержка DNSSEC доступна для DNS-серверов:

  • Bind, начиная с версии 9.8.4;
  • PowerDNS, начиная с версии 3.2.

Обратите внимание: в стандартном репозитории Debian 7 — PowerDNS версии 3.1. Обратите внимание: PowerDNS до 4-й версии не полностью поддерживает CAA-записи. В связи с этим на DNS-сервере с PowerDNS до 4-й версии подписывание домена с помощью DNSSEC может привести к недоступности CAA-записей.

Включение поддержки DNSSEC и указание настроек для генерации ключей для домена осуществляется в разделе "Домены" -> "Доменные имена" -> выделить домен -> кнопка "Настройки" -> включить опцию "Поддержка DNSSEC". Возможность включения поддержки DNSSEC доступна только пользователю с уровнем доступа "Администратор".

Параметры ключей DNSSEC
  • Поддержка DNSSEC — опция, включающая функциональность DNSSEC для доменной зоны;
  • Ключ подписания ключа (KSK):
    • Алгоритм ­— алгоритм генерации KSK-ключа:
      • Устаревшие алгоритмы:
        • 5 — RSA/SHA-1;
        • 7 — RSASHA1-NSEC3-SHA1;
      • Современные алгоритмы:
        • 8 — RSA/SHA-256;
        • 10 — RSA/SHA-512;
        • 12 — GOST R 34.10-2001;
      • Новейшие алгоритмы:
        • 13 — ECDSA Curve P-256 with SHA-256;
        • 14 — ECDSA Curve P-384 with SHA-384.
    • Длина ключа — длина KSK-ключа. Указывается в битах;
    • Период обновления — период, по истечении которого будет сгенерирован новый ключ. Указывается в месяцах.
  • Ключ подписания зоны (ZSK):
    • Алгоритм ­— алгоритм генерации ZSK-ключа. Должен совпадать с алгоритмом генерации KSK-ключа:
      • Устаревшие алгоритмы:
        • 5 — RSA/SHA-1;
        • 7 — RSASHA1-NSEC3-SHA1;
      • Современные алгоритмы:
        • 8 — RSA/SHA-256;
        • 10 — RSA/SHA-512;
        • 12 — GOST R 34.10-2001;
      • Новейшие алгоритмы:
        • 13 — ECDSA Curve P-256 with SHA-256;
        • 14 — ECDSA Curve P-384 with SHA-384.
    • Длина ключа — длина ZSK-ключа. Указывается в битах;
    • Период обновления — период, по истечении которого будет сгенерирован новый ключ. Указывается в месяцах.

Почтовые уведомления

Для включения и поддержания работы защиты DNSSEC требуется вручную выполнять публикацию и обновление DS-записей в родительской зоне. Почтовые уведомления DNSSEC позволяют настроить получение уведомлений о новых DS-записях, требующих публикации.

Для получения уведомлений необходимо включить опцию "Уведомления от расширения DNSSEC dns-сервера" в разделе "Настройки" -> "Почтовые уведомления".

Почтовые уведомления DNSSEC

Включение защиты DNSSEC для домена

Алгоритм включения защиты DNSSEC для домена состоит из следующих этапов:

  • проверка максимального значения TTL в доменной зоне;
  • подписание доменной зоны;
  • создание цепочки доверия.

Проверка максимального значения TTL в доменной зоне

Для правильного обновления ключей необходимо, чтобы максимальное значение TTL в доменной зоне имело значение менее 2 недель. По умолчанию TTL-зоны равно 3 часам.

Максимальное значение TTL в доменной зоне указывается в разделе "Домены" -> "Доменные имена" -> выделить домен -> кнопка "Записи" -> столбец "TTL, сек".

Подписание доменной зоны

Подписание доменной зоны осуществляется в разделе "Домены" -> "Доменные имена" -> выделить домен -> кнопка "Изменить" -> включить опцию "Подписать домен".

Подписание доменной зоны

После применения изменений запускается фоновый процесс подписания доменной зоны. В ходе процесса генерируются KSK и ZSK в соответствии с заданными параметрами. На время подписания доменной зоны в столбце "Состояние" отображается иконка уведомления о подписании, а также для домена блокируются операции "Изменить" и "Удалить".

Через несколько секунд необходимо обновить страницу "Доменные имена".

При успешном подписании доменной зоны:

  • в столбце "Состояние" отображается иконка уведомления;
  • отображается баннер "Есть неопубликованные DS-записи";
  • кнопка "DNSSEC" становится активной для домена.
Доменная зона подписана, но есть неопубликованные DS-записи

Подписание доменной зоны доступно пользователям с уровнем доступа "Пользователь" и выше.

Создание цепочки доверия

Для создания цепочки доверия необходимо передать DS-записи (иногда, в зависимости от регистратора, также DNSKEY-записи KSK) в родительскую зону. Информация об основных параметрах ключей и их записях DNSKEY и DS отображается на странице "Параметры DNSSEC": раздел "Домены" -> "Доменные имена" -> выделить домен -> кнопка "DNSSEC".

Параметры DNSSEC
  • Статус DNSSEC — состояние DNSSEC;
  • Алгоритм ключей — алгоритм генерации KSK и ZSK ключей;
  • Параметры KSK:
    • Дата обновления ключа — дата генерации текущего KSK-ключа;
    • Период обновления (месяцы) — период, по истечении которого будет сгенерирован новый ключ. Указывается в месяцах;
    • Длина ключа — длина KSK-ключа, в битах.
  • DS-записи — DS-записи в доменной зоне. Проверка достоверности ключа происходит с помощью его дайджестов (fingerprint, хэш), предварительно отправленных в родительскую зону в виде DS-записей.
Для каждой записи из списка DS-записей отображаются следующие данные:
  • Начало записи — начало DS-записи;
  • Тег — идентификатор KSK-ключа;
  • Алгоритм — идентификатор алгоритма шифрования;
  • Тип дайджеста — идентификатор типа дайджеста;
  • Дайджест — содержимое дайджеста.
  • Показать DNSKEY — по нажатию кнопки отображается таблица DNSKEY-записей. Для каждой записи из списка DNSKEY-записей отображаются следующие данные:
  • Начало записи — начало DNSKEY-записи;
  • Флаги — идентификатор типа ключа;
  • Протокол — номер протокола DNSSEC;
  • Алгоритм — идентификатор алгоритма шифрования;
  • Публичный ключ — открытая часть ключа;
  • Тег — идентификатор KSK-ключа.

Передача DS-записей осуществляется одним из следующих образов:

  1. Добавление записей через веб-интерфейс панели управления доменом у регистратора доменных имён. Необходимо скопировать DS-записи из ISPmanager. Если у регистратора записи добавляются в виде строк, то необходимо объединить значения всех столбцов из таблицы DS-записей в ISPmanager, вставляя пробелы между ними.
  2. Если доменная зона находится вместе с родительской зоной (зоной на один уровень выше) на одном и том же сервере под управлением ISPmanager или DNSmanager, то на странице "Параметры DNSSEC" домена доступна кнопка "Передать DS-записи в родительскую зону". По нажатию на данную кнопку панель осуществляет передачу DS-записей.
  3. Если подписываемый домен является родительским для домена, находящегося на стороннем сервере, то DS-записи дочернего домена создаются в записях родительского домена, также как и остальные ресурсные записи.
Создание DS-записи дочернего домена
  • Имя — имя дочернего домена, которому принадлежит запись;
  • TTL — время обновления информации о записи;
  • Тип — тип записи. Выберите значение "DS (дайджест ключа DNSSEC)";
  • Тег ключа — идентификатор KSK-ключа
  • Алгоритм ­— алгоритм генерации KSK-ключа:
    • 3 — DSA/SHA-1;
    • 5 — RSA/SHA-1;
    • 6 — DSA-NSEC3-SHA1;
    • 7 — RSASHA1-NSEC3-SHA1;
    • 8 — RSA/SHA-256;
    • 10 — RSA/SHA-512;
    • 12 — GOST R 34.10-2001;
    • 13 — ECDSA Curve P-256 with SHA-256;
    • 14 — ECDSA Curve P-384 with SHA-384;
    • 15 — Ed25519;
    • 16 — Ed448.
  • Тип дайджеста — алгоритм генерации дайджеста:
    • Устаревший тип дайджеста:
      • 1 — SHA-1;
    • Современные типы дайджеста:
      • 2 — SHA-256;
      • 3 — GOST R 34.11-94;
    • Самый надежный тип дайджеста:
      • 4 — SHA-384.
  • Дайджест — содержимое дайджеста.

Один раз в сутки ISPmanager проверяет наличие DS-записей в родительской зоне. Необходимо, чтобы было передано хотя бы по одной DS-записи для каждого KSK. Успешное прохождение проверки завершает процесс включения защиты DNSSEC. В столбце Состояние предупреждающая иконка заменяется на иконку, подтверждающую защищённость домена с помощью DNSSEC:

Домен "example.com" защищён с помощью DNSSEC

Отключение защиты DNSSEC для домена

В случае компрометации ключей необходимо переподписать доменную зону новыми ключами. Для этого необходимо отключить защиту DNSSEC для домена:

  • удалить все DS-записи из родительской доменной зоны и подождать несколько часов;
  • удалить подпись доменной зоны: раздел "Домены" -> "Доменные имена" -> выделить домен -> кнопка "Изменить" -> включить опцию "Удалить подпись".

Отключение защиты домена доступно пользователям с уровнем доступа "Пользователь" и выше

Отключение поддержки DNSSEC

Перед отключением поддержки DNSSEC необходимо удалить DS-записи всех подписанных доменов из их родительских зон. В противном случае доменные имена перестанут работать.

Отключение поддержки DNSSEC для домена осуществляется в разделе "Домены" -> "Доменные имена" -> кнопка "Настройки" -> отключить опцию "Поддержка DNSSEC". Возможность отключения поддержки DNSSEC доступна только пользователю с уровнем доступа "Администратор".

После подтверждения изменений происходит отписывание всех доменов и удаление всех их ключей.

Ограничения

При использовании DNSSEC размер пакетов увеличивается. Обратите внимание:

  • при превышении 512 байт DNS использует протокол TCP. На некоторых маршрутизаторах работа DNS по протоколу TCP может быть запрещена (закрыт порт 53);
  • при превышении размера MTU пакеты DNS фильтруются. MTU — максимальный размер полезного блока данных одного пакета, который может быть передан без фрагментации. Распространенный размер MTU — 1500 байт.