Настройка dnssec windows server 2019

Обновлено: 02.07.2024

Набор расширений протокола DNS (DNSSEC) позволяет проверять подлинность и целостность данных и защищать домены от спуфинга и атак, связанных с повреждением кеша DNS.

Если вы хотите лучше обезопасить домен, настройте для него DNSSEC. Для этого нужно:

  • добавить связанные с DNSSEC записи ресурсов в систему DNS или подписанную зону;
  • опубликовать записи ресурсов DNS для домена.

Обновление вступит в силу в течение 24 часов. Вы также можете задать автоматическую настройку DNSSEC через Google Domains, и тогда мы выполним оба шага за вас.

Как включить DNSSEC для домена

Ниже представлено два варианта настройки DNSSEC. Выберите нужный в зависимости от того, какие серверы доменных имен вы используете.

• Серверы доменных имен Google Domains

Примечание. Если вы приобрели доменное имя через Google Domains, набор DNSSEC может уже быть настроен.

  1. Войдите в аккаунт Google Domains.
  2. Выберите домен.
  3. В левом верхнем углу нажмите на значок менюDNS.
  4. Если DNS-серверы Google Domains ещё не выбраны, вверху страницы нажмите Google Domains (активно).

Примечание. Если вверху страницы рядом с "Google Domains (активно)" показывается надпись "Пользовательские", то у вас по умолчанию выбраны серверы доменных имен Google Domains.

Примечание. Если набор DNSSEC уже активен, вы увидите на карточке информацию об этом.

Когда вы включите DNSSEC, зона будет подписана автоматически, а DS-записи опубликованы в течение двух часов. Обновление полностью вступит в силу в течение 24 часов. После этого ваш домен будет защищен с помощью DNSSEC.

Вы также можете сократить время ожидания. Например, разверните карточку DNSSEC и нажмите Опубликовать DS-записи. Тогда они будут опубликованы сразу.

• Сторонние серверы доменных имен

Если вы используете сторонние DNS-серверы, то подписать DNS-зону для домена нужно с помощью вашего поставщика услуг DNS. Узнайте у него следующие значения для каждой записи DNSKEY:

  • Тег ключа. Числовое значение, которое связано с существующей записью DNSKEY.
  • Алгоритм. Алгоритм шифрования, на основе которого создан ключ безопасности в записи DNSKEY. Обычно он используется в паре с хеш-функцией, как в RSA/SHA1.
  • Тип дайджеста. Алгоритм, на основе которого создан дайджест записи DNSKEY. Другие названия: алгоритм генерации дайджеста, хеш дайджеста, хеш-функция дайджеста.
  • Дайджест. Хешированное значение записи DNSKEY, которое позволяет идентифицировать ее, не раскрывая значения ключа. Длина дайджеста зависит от его типа и может состоять из:
    • SHA1 – 40 шестнадцатеричных цифр;
    • SHA256 – 64 шестнадцатеричных цифр;
    • SHA384 – 96 шестнадцатеричных цифр.

    Для каждой записи DNSKEY создайте как минимум одну запись ресурса DS в Google Domains. Вот как это сделать:

    1. Войдите в аккаунт Google Domains.
    2. Выберите домен.
    3. В левом верхнем углу нажмите на значок менюDNS.
    4. Если сторонние DNS-серверы ещё не выбраны, вверху страницы нажмите Пользовательские (активно).

    Примечание. Если вверху страницы рядом с "Google Domains (активно)" показывается надпись "Пользовательские", то у вас по умолчанию выбраны серверы доменных имен Google Domains.

    1. Прокрутите страницу вниз до раздела DNSSEC.
    2. Нажмите Управление DS-записями.
    3. Введите данные, которые вы получили от поставщика услуг DNS. Чтобы добавить сразу несколько записей, нажмите Создать запись.
    4. Затем нажмите Сохранить.

    Как отключить DNSSEC для домена

    • Серверы доменных имен Google Domains

    1. Войдите в аккаунт Google Domains.
    2. Выберите домен.
    3. В левом верхнем углу нажмите на значок менюDNS.
    4. Если DNS-серверы Google Domains ещё не выбраны, вверху страницы нажмите Google Domains (активно).

    Примечание. Если вверху страницы рядом с "Google Domains (активно)" показывается надпись "Пользовательские", то у вас по умолчанию выбраны серверы доменных имен Google Domains.

    1. Прокрутите страницу вниз до раздела DNSSEC.
    2. Нажмите Отключить.

    Когда вы отключите DNSSEC, публикация DS-записей будет отменена. Обновление вступит в силу полностью в течение 48 часов. Затем Google Domains может удалить подпись DNS-зоны, чтобы полностью завершить деактивацию DNSSEC.

    • Сторонние серверы доменных имен

    Чтобы полностью отключить DNSSEC, удалите DS-записи из Google Domains и попросите вашего поставщика услуг DNS удалить записи ресурсов DNSKEY из файла зоны. Вот как удалить DS-записи из Google Domains:

    1. Войдите в аккаунт Google Domains.
    2. Выберите домен.
    3. В левом верхнем углу нажмите на значок менюDNS.
    4. Если сторонние DNS-серверы ещё не выбраны, вверху страницы нажмите Пользовательские (активно).

    Примечание. Если вверху страницы рядом с "Google Domains (активно)" показывается надпись "Пользовательские", то у вас по умолчанию выбраны серверы доменных имен Google Domains.

    1. Нажмите Управление DS-записями.
    2. Удалите все записи.
    3. Нажмите Сохранить.

    Не забудьте попросить вашего поставщика услуг DNS удалить записи ресурсов DNSKEY из файла зоны.


    Чем плох DNS

    Система DNS в нынешнем виде была разработана более 20 лет назад, когда о защите информации не особенно задумывались. Она имеет несколько фундаментальных уязвимостей.

    Также уязвимы кеширующие DNS-серверы провайдеров, выступающие как резолверы для клиентов: Атака Каминского.

    Сегодня существуют технологии, предусматривающие хранение открытых ключей в DNS-записях, например, DKIM-подписи в электронной почте, SSH-ключей в записях SSHFP и т.д. Все эти технологии требуют защиты от подделки DNS.

    Теория DNSSEC

    DNSSEC — технология, позволяющая однозначно удостовериться в подлинности DNS информации при помощи криптографической подписи.

    Перед продолжением настоятельно рекомендуется внимательно прочитать вышеприведенные ссылки, так как на первый взгляд процедура подписания зоны кажется довольно запутанной.

    В ответе можно увидеть запись RRSIG содержащую хеш-подпись.

    Но этого недостаточно, так как в резолве участвуют нижестоящие серверы, ответы которых тоже нужно верифицировать. Тогда владельцы домена верхнего уровня, например «com.», создают такую же пару ключей и подписывают все записи в своей зоне, и после этого добавляют слепок своего открытого ключа в корневую зону. В результате доверяя открытому ключу корневой зоны можно проверить подлинность ключа зоны «com.» и, соответственно, доверять ему:

    В ответе запись DS содержит слепок ключа, которым подписывается зона «com.»

    Важно понимать, что после каждого изменения в зоне подписание происходит заново. Но, так как корневая зона подписывает только открытый ключ зоны «com.», то нет необходимости перехешировать записи в корневой зоне при каждом изменении в зоне «com.»

    image

    Схематически это выглядит так:

    Приведенное выше описание достаточно примитивно и нелепо. Оно написано с целью объяснить принцип работы «на пальцах». Вероятно, оно нисколько не упростит понимание, а только еще больше запутает.

    Практика внедрения DNSSEC

    Далее предполагается, что у нас уже есть домен, делегированный на собственные, полностью настроенные DNS, и готовый файл зоны.
    Для включения поддержки DNSSEC в named.conf в секцию options нужно добавить:

    Инструменты для генерации ключей и подписания зон входят в пакет BIND последних версий.
    На этом этапе предполагается, что читателю уже известно что такое ZSK (Zone Sign Key) и KSK (Key Sign Key).
    Все приведенные ниже операции необходимо проводить в отдельно созданной папке.

    Генерация ключа ZSK:

    Генерация ключа KSK:

    Исходный файл зоны останется без изменений. Далее в конфиге BIND необходимо заменить файл на подписанный:

    Далее предполагается, что подписанная зона уже размещена на авторитарном NS-сервере и доступна снаружи:

    Команда должна вернуть подписанную зону.

    На этом этапе можно активировать secondary сервера и синхронизировать зону по AXFR.

    Далее необходимо добавить DS-записи в панели регистратора домена. Они были сгенерированы при выполнении dnssec-signzone и находятся в файле dsset-my-domain в таком виде:

    Так выглядит форма добавления DS-записей в панели GoDaddy:

    image

    Необходимо переключиться в «Advanced mode» и скопировать обе строки, предварительно отредактировав. Нужно добавить значение TTL и удалить пробел во второй строке в отпечатке ключа, иначе форма вернет ошибку. В результате копируемые строки должны выглядеть так:

    Записи будут добавлены только в случае если зона на master-сервере доступна и подписана правильно.

    Значения полей в DS-записи:

    86400 — TTL данной записи
    40513 — Key Tag
    5 — Algorithm
    1/2 — Digest Type

    В приведенном выше примере при генерации ключей был использован алгоритм RSA-SHA1, поэтому запись имеет номер пять.
    Таблица номеров алгоритмов:

    Number Algorithm
    1 RSAMD5
    2 DH
    3 DSA/SHA1
    4 ECC
    5 RSA/SHA-1
    6 DSA-NSEC3-SHA1
    7 RSASHA1-NSEC3-SHA1
    8 RSA/SHA-256
    9
    10 RSA/SHA-512
    11
    12 ГОСТ Р 34.10-2001

    Digest Type в приведенном примере у первой записи равен 1, во второй 2.
    Таблица номеров Digest Type:

    Number Digest Type
    1 SHA-1
    2 SHA-256
    3 SHA-512

    После добавление DS-записей можно проверить их появление на серверах, ответственных за домен верхнего уровня. Для домена «com.» это выглядит так:

    В момент, когда это произойдет, можно проверить правильность подписания зоны с помощью DNSSEC Debugger от Verisign и визуализатора цепочки подписания.
    Напомню, что после каждого изменения в записях зоны, необходимо выполнять подписание повторно. DS-записи при этом обновлять не нужно.
    Если всё правильно, можно переходить к настройке клиентской части.

    Настройка клиентского резолвера

    Наиболее простой вариант — плагин для Firefox и Chrome.

    image

    Плагин позволяет производить резолв в обход системных DNS, имеет свои предустановленные серверы с поддержкой валидации DNSSEC. По умолчанию плагин использует системные DNS, изменить это можно в настройках плагина: выбрать CZ.NIC's или 217.31.57.6

    Для того, чтобы научить утилиту dig проверять подпись, необходимо создать отправную точку в цепочке доверия, создав файл с ключом корневой зоны:

    После необходимо в файле /etc/trusted-key.key удалить строку:

    Если этого не сделать dig вернет:

    Теперь можно проверять подлинность подписей с помощью dig:

    Как настроить рекурсивный резолвер с функцией проверки подписей можно прочитать здесь

    Практическая польза

    Не смотря на то, что стандарт DNSSEC до сих пор находится в разработке, уже возможно извлекать из него пользу.

    Публичный SSH-ключ

    При первом подключении к серверу SSH клиент просит самостоятельно проверить отпечаток публичного ключа сервера и ввести yes, после чего публичный ключ сервера сохраняется в файле known_hosts.
    С появлением DNSSEC публичный ключ может быть помещен в DNS-запись типа SSHFP и, при первом подключении к серверу, проверяться автоматически без запроса. Для активирования этой функции нужно добавить опцию VerifyHostKeyDNS=yes в конфиг SSH-клиента, также необходимо чтобы системный резолвер поддерживал верификацию DNSSEC.

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

    Создание отпечатка ключа:

    где gencaa.py файл из пакета dnssec-tls-tools.
    Команда вернет строку вида:

    Проверяем правильность ключа в DNS:

    Команда должна вернуть DNSSEC validation is ok: SUCCESS

    После того как запись type27 доступна и подписана, можно сгенерировать цепочку доверия DNSSEC:

    И сам сертификат:

    Подключение сертификата в Nginx выглядит так:

    Из-за того, что цепочка подписания DNSSEC может изменяться, создание цепочки и генерацию сертификата (последние две команды) необходимо добавить в крон и выполнять, например, раз в сутки.

    Из-за того, что вся цепочка DNSSEC помещена в сертификат, браузеру нет необходимости производить полную проверку цепочки, так что сертификат будет «валидным» даже в случае если системный резолвер не поддерживает проверку DNSSEC.

    Серверы имён FirstVDS пока не поддерживают DNSSEC. Чтобы использовать эту опцию, нужно организовать собственные серверы имён — через панель управления ISPmanager или установив и настроив DNS-сервер вручную. Например, с помощью Bind с версии 9.9.

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

    Подключение DNSSEC в ISPmanager

    Чтобы начать работать с DNSSEC, нужно включить его в настройках панели. Для этого откройте ISPmanager, перейдите в раздел Домены — Доменные имена и сверху нажмите «Настройки» .


    В конце открывшегося списка параметров отметьте пункт «Поддержка DNSSEC» и нажмите «Ok» .


    Если после подключения поддержки DNSSEC вернуться в раздел Домены — Доменные имена и снова нажать «Настройки» , в конце списка параметров вы увидите новые поля:


    С их помощью можно задать ряд настроек для DNSSEC:

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

    После активации DNSSEC можно можно подписывать домены с помощью электронной подписи. Эта опция доступна в разделе Домены — Доменные имена — выберите ваш домен в списке, на панели инструментов нажмите «Изменить» . В настройках отметьте пункт «Подписать домен» и нажмите «Ок» для сохранения параметров.


    В течение пары минут в панели появится уведомление о неопубликованных DS-записях. Чтобы его увидеть, обновите страницу.


    Чтобы опубликовать DS-записи (передать регистратору домена), в разделе Домены — Доменные домена выберите ваш домен и сверху нажмите «DNSSEC» .


    В разделе DS-записи будут перечислены данные, которые нужно передать регистратору. В некоторых случаях регистратор может требовать указать и DNSKEY-записи.


    Каждая DS-запись в ISPmanager состоит из следующих полей:


    Если вы регистрировали домен у нас, для передачи записей регистратору обратитесь в службу поддержки: создайте запрос в Личном кабинете — раздел Поддержка — Запросы — «Создать» . В текст запроса скопируйте все DS-записи.

    При использовании собственных серверов имён регистратору передаются DS-записи только основного домена — того, на базе которого работают ваши NS-ы. При создании и подписи дополнительных доменов их DS-записи передаются уже вашей зоне, и она отвечает за их валидацию.

    Например, если домен, на котором настроены собственные серверы имён, и дополнительные домены размещены на одном сервере, DS-записи можно передать автоматически: откройте раздел Домены — Доменные имена , выберите подписанный домен и сверху нажмите «DNSSEC» . Внизу нажмите «Передать DS-записи в родительскую зону» :


    Если же главный домен, на котором работают серверы имён, и дополнительные домены размещены на разных серверах, DS-записи дополнительных доменов потребуется создать в главном домене вручную. Это можно сделать в ISPmanager — раздел Домены — Доменные имена — выберите домен, сверху «Записи» :


    Откроется список записей главного домена. Для добавления записей нажмите «Создать» :


    Откроется окно настройки новой записи.

    • в поле «Имя» введите имя домена, DS-запись которого хотите добавить;
    • в поле «Тип» выберите вариант «DS (дайджест ключа DNSSEC)» ;
    • остальные поля заполняются по содержимому добавляемой DS-записи.

    Чтобы сохранить настройки, нажмите «Оk» . На этом публикация DS-записи дополнительного домена завершена. Однако их обычно несколько для каждого домена, так что не расслабляйтесь :)

    После успешной публикации DS-записей в родительской зоне и обновления кэша DNS статус домена в ISPmanager изменится:

    date

    31.01.2014

    directory

    Windows Server 2012 R2

    comments

    комментариев 5

    Недостатки DNS

    Системы разрешения имен DNS, являющаяся одной из основ современной системе сетевых взаимодействий, разрабатывалась более 20 лет назад, когда о вопросах защиты информации почти не задумывались. Одним из основных недостатков системы DNS является возможность подделки ответа на DNS запрос.

    Зачем нужна технология DNSSEC

    DNS Security Extensions (DNSSEC) – технология, предназначена для повышения безопасности службы DNS за счет использования криптографических подписей, позволяющих однозначно удостоверится в подлинности информации, полученной от DNS сервера. Т.е. все запросы и ответы DNS сервера с поддержкой DNSSEC должны обладать цифровой подписью, верность которой может проверить клиент с помощью открытого ключа. Эти цифровые подписи создаются при подписывании зоны (применения к ней DNSSEC).

    Упрощенно механизм проверки DNSSEC работает так: клиент отправляет запрос на DNS сервер, сервер возвращает DNS ответ с цифровой подписью. Т.к. клиент обладает открытым ключом центра сертификации, подписавшего записи DNS, он может расшифровать подпись (хэш-значение) и проверить ответ DNS. Для этого и клиент и сервер DNS должны быть настроены на использование одного якоря доверия (trust anchor). Trust anchor – предварительно настроенный открытый ключ, связанный с конкретной зоной DNS. Если DNS сервер поддерживает несколько зон, то может использоваться несколько якорей доверия.

    Основные компоненты DNSSEC определены в следующих стандартах RFC:

    DNSSEC в системах Windows

    Поддержка технология DNSSEC появилась еще в Windows Server 2008 R2 и Windows 7. Однако из-за сложности и неочевидности настроек, широкого распространения она не получила. Свое дальнейшее развитие DNSSEC получила в Windows Server 2012, в котором функционал DNSSEC был существенно расширен, и предполагает возможность настройки через графический интерфейс.

    В этой статье мы опишем базовую установку и настройку DNSSEC на базе DNS сервера с ОС Windows Server 2012, создадим подписанную зону и точки доверия.

    Установка и настройка DNSSEC в Windows Server 2012

    Примечание. В Windows 8/2012 вместо утилиты nslookup для получения информации с DNS сервера лучше воспользоваться Powershell командлетом Resolve-DnsName.

    Resolve-DnsName - poweshell аналог nslookup

    Т.к. зона не подписана, запрос не вернет записи RRSIG.

    dnssec подпись зоны

    В появившемся мастере Zone Signing Wizard оставьте все параметры по умолчанию (Use default settings to sign the zone) -> Next -> Next -> Finish.

    Мастер подписывания зон

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

    содержимое безопасной dns зоны dnssec

    После того, как зона подписана, открытый ключ будет сохранен в файле %windir%\system32\dns\keyset-dnssec.

    Импортируем в DNS открытый ключ зоны (тот самый якорь доверия), перейдя в консоли DNS в раздел Trust Point, выбрав import -> DNSKEY, и указав путь к файлу keyset-dnssec.

    Примечание. Данный ключ необходимо распространить на все DNS сервера, которым будут участвовать в процессе безопасного кэширования данных подписанной зоны.

    импорт открытого ключа зоны

    dnssec открытые ключи

    В Windows Server 2012 возможно автоматически реплицировать ключи якорей доверия (Trust Anchors) по всем контролерам домена в лесу, обслуживающем данную зону DNS. Для этого в свойствах нужной зоны (dnssec) на вкладке Trust Anchor включите опцию Enable the Distribution of Trust Anchors for this zone и сохраните изменения.

    Репликация trust anchors между DNS серверами Active Directory

    Попробуем еще раз опросить данную зону с клиента.

    Как мы видим, в ответе DNS сервера есть информации об RRSIG записи и цифровой подписи.

    Настройка клиентов WIndows на использование DNSSEC

    Чтобы заставить клиентов на ОС Windows принудительно использовать только «безопасные» (DNSSEC) запросы, т.е. принимать DNS данные только в том случае, если их цифровая подпись верна, необходимо с помощью GPO задействует политику NRPT (Name Resolution Policy Table).

    Для этого в разделе GPO Computer Configuration -> Polices -> Windows Settings -> Name Resolution Policy на вкладке DNSSEC включите опции:

    • Enable DNSSEC in this rule
    • Require DNS clients to check that name and address data has been validated by the DNS server

    Включить обязательную проверку dnssec на клиентах Windows

    Осталось назначить политику на нужную OU. После применения политики убедимся, что клиент настроен на использование «безопасного» DNS:

    Get-DnsClientNrptPolicy - проверка NRPT политики

    В том случае, если полученный от DNS сервера ответ не будет подписан, или будет подписан неверным сертификатов, команда вернет ошибку Unsecured DNS packet.

    DNSSEC для внешних зон

    Чтобы DNS сервер требовал обязательной проверки DNSSEC для внешних зон, нужно в его свойствах на вкладке Advanced включить опцию Enable DNSSEC validation for remote responses.

    Enable-DNSSEC-validation-for-remote-responses - включить DNSSEC для внешних зон

    Импортировать якоря доверия корневых зон можно вручную (описано выше), либо с помощью команды:

    Читайте также: