11 Ноябрь 2016

Внедрение DNSSEC для вашего домена

Deploying DNSSEC for your domain

Тема безопасности в интернете, как нетрудно заметить, является одной из главной тем данного сайта. Уже довольно подробно рассмотрев многие аспекты этой многоплановой проблемой автор пока не останавливался на одном из базовых, а именно обеспечении безопасности базового механизма сетевого взаимодействия — системы разрешения доменных имён DNS.

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

Согласно статистики на сегодня в мире около 14 процентов от всего количества доменых имён корректно поддерживают DNSSEC. Данная статья является скромной попыткой помочь улучшить ситуацию на расширив практику применения этой актуальной и полезной технологии.

1. Как работает DNSSEC

DNSSEC является расширением протокола DNS позволяющим подтвердить достоверность хранимых в DNS записей путём их цифровой подписи.

Звучит знакомо и, на первый взгляд, понятно и несложно для реализации. Однако, если принять внимание потребовашиеся 20 (!) лет от момента первой расстановки точек над "Ё" в качестве осознания наличия серьёзных проблем с безопасностью DNS в 1990 году и подписи корневой зоны . в 2010 по стандарту DNSSEC, можно понять, что путь был весьма непрост. Безусловно, это отразилось и на самом механизме реализации DNSSEC, который подробно изложен сразу в трёх документах — RFC4033, RFC4034 и RFC4035.

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

  • Во-первых, он предназначен именно для удостоверения данных, содержащихся в записях DNS но никак не для их сокрытия. Они по-прежнему хранятся и передаются в открытом виде.
  • Во-вторых, так же как и в случае с сертификатами SSL / TLS подтверждение надёжности данных строится на цепочке доверия от корневой зоны к конечному домену. Но сам сам механизм передачи удостоверяющих данных, в отличие от сертификатов, выстраивается, как бы, снизу вверх. То есть подписанная доменная зона нижнего уровня передаёт данные, которые необходимы для подтверждения её достоверности, выше расположенной доменной зоне которая включает их в свою выдачу как заслуживающие доверия. Она сама, в свою очередь, таким же образом включает аналогичные данные в домены более высокого уровня и так вплоть до корневого домена. Корневому же домену, очевидно, оказывается изначальное и безусловное доверие.

Рассмотрим сам механизм подписи и передачи удостоверяющих данных.

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

Рабочий набор, который предназначен для непосредственно подписи данных содержащихся в зоне, называется Zone Signing Key (или ZSK). Ввиду того, что размер зоны может быть достаточно большим для снижения вычислительной нагрузки при проверки подписи его длина относительно невелика. В настоящее время используются ключи длиной 1024 бита. Очевидно, что столь небольшая размерность сказывается на криптостойкости набора. Поэтому ZSK согласно стандарту рекомендуется регулярно менять на новый набор.

Вторым набором, который носит название Key Signing Key (или KSK) подписывается рабочий набор ключей. Ввиду того, что размер данных ZSK невелик, размерность ключа подписи их набора для надёжности может быть больше. На сегодня обычная их длина составляет 2048 битов. Данная размерность считается достаточно стойкой ко взлому. В этой связи ротация KSK может осуществляться на порядок реже нежели в случае ZSK.

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

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

  1. DNSKEY или DNS Key Record. В данных записях публикуются открытые ключи ZSK и KSK.
  2. RRSIG или DNSSEC Signature. В данных записях содержатся электронные подписи ресурсных записей.
  3. NSEC (или более новая NSEC3) — Next-Secure Record. Служит для контроля целостности данных зоны. NSEC запись содержит отсортированный по алфавиту и закольцованный список записей для данной зоны (последняя ссылается на первую) с указанием типов используемых ресурсных записей.
  4. DS или Delegation Signer. Содержит цифровой отпечаток открытого ключа KSK для низлежащего делегируемого домена. Она является необязательной для домена, который таких подчинённых доменов не имеет.

Рассмотрим как эти записи выглядят в реальности, опросив, к примеру, зону .ru.

root@beta:~ # host -t dnskey ru
ru has DNSKEY record 257 3 8 AwEAAYkpXn6XJ6XZMyo4FqHSTwFdX8D7yHJJz5vli6QzcnAdlOtw5Olk6NjimJAJMVpc1kymvSvnZZJEMgYIDgXn0EFNwuCgNNmoHcPhbxHG+1Ke0/SkRX/7cXbUxFgc2emkzCRvQKLCdInP3g/0j53iHxJZRSCmvNmolk7ktXh+XE+r5SAUOupurQzwC/0dwGMepWRL7d3SJCaFUMxr+1+Hm6GaXC1AXP9Bre6LiHJhvtoPsjLTu+uSqEpPhWsioONg7+mMqlX6rL9C4Wax3qouaHRhzld8w/W0LcGb+kaswNhib5XxYiouVL4xsu9o+/NIZ1wBqd8VB/EHozNWa6tUdFk=
ru has DNSKEY record 256 3 8 AwEAAchyCZcyx15dvmiom9AAYmrfYkPiHXHyZnSvCcOus4U4y4Kt/ofSrNFxWIq0ZhwzdKBkS+SBFDMa/6u4RcmL3UBGIkdNRupg/ZOheBkCa6ze2+HIwnDpRei5eak8KYIqf+T0zxzHHhDCTKm8wUS9anNTRcrzk2wfe2RoSw3UIXzr
ru has DNSKEY record 256 3 8 AwEAAcXlVduzE/IlcYAZbY74MP9Q7siVDfNg8avNCTPskuXUsrWL9xKmBLt2NAI/jExR2Yh5CvMTuVXmN9J7RppJVu7JnCzyP6A9K0AAhCNM4NGh39EdBE9A1Vz4OFJy2TQ/miNdPo/E22hyKx9EkYo3HbAmwrANuuM3K+Yms6CUpQkF

В ответе видно, что DNS сервер вернул три публичных ключа для зоны .ru. Значение 257 первой записи DNSKEY соответствует типу ключа и означает что это KSK. Нетрудно заметить, что он длиннее двух следующих с кодом 256 соответствующим ZSK. Второе число после типа ключа, 3, означает код протокола, а третье, 8, использованный для цифрового ключа алгоритм — в данном случае RSA/SHA256 (см. полный список кодов алгоритмов и их применимость).

root@beta:~ # host -t rrsig ru
ru has RRSIG record NSEC3PARAM 8 1 0 20161117192910 20161011083001 62160 ru. T5KhQ7ORQCrgg1aIZq0D/xuesAtINbNGgsnHi2Rcqbl6gG/4Up+QVVjPorxcwq68z/PsGDnwu6eJwcQ9WN80Asvg8reL5RqrTw529TF/hY0NPQ0BR1xmBZkHnErm6IWYpyGO+DjbWArQUKagSN2YO6TJ0DS5vYrxhHfyQiGL/mc=
ru has RRSIG record DNSKEY 8 1 345600 20161125230000 20161105230000 28642 ru. JKlcfeMxuHrwcx/3cXmxk+keYiTSHzFy40J8814qW3EETMeDFzZVAyDmqzsYryYGr6IZbBr0ALdpOzh99UidMbnLvifLIxiWpZX6JirDFwPCHpRQX36w7jEJh7RRkh9lMi9yG8dq7VrUdU24eGi3iVhoScfyDrcOVJmMQbs7CTzJ2HQP+qRqpRPobUsXlDIJI8L5c1XM4volCbL7/OHZkmYkkMVaklUaHfLtGUR1vtGvrYW1yaA5nOVyuRLftLivdNEMS/8twK1HG1l5pWkIu6WinSUZojoThX4hou4z9LqGH32d49LIewad3XJ1tGBgeZnVGvpXLiUNMK4QJRnXjQ==
ru has RRSIG record NS 8 1 345600 20161217222030 20161109022857 62160 ru. RVPwjcYKfO7OsErYt8AMrqag16u4TMPrimKtu/IF/dny/Ahw3bW2sKTs7UCKAG31qHjiuXtezjGZOGV2czrKhGPlheg/UOyvktmhQGJa3jX7Mip3r/cTz3B0+OBSUtjAnelJlvekRrV9QIxPuiuFrP9XjRNHoqch9fwGmk62O7U=
ru has RRSIG record SOA 8 1 345600 20161215225854 20161109183903 62160 ru. GmauEoNuMRk7rHjKWKxwgC32FXR/RSKubi+qA6bonw3rs/Hw/fKK0MkBgJVaPPWJRfLZEcs8pFczlwq6+rpq77O+lyrS+qKOqtAEgHCSwgg09tiuevSmNjlGSPnsAnGj9O8NWR7QTeuzElI3++77iywNTMvYblt3UMLCOOAt/3A=

Полученный набор подписей ресурсных записей зоны .ru по количеству соответствует числе используемых в этой зоне их типов. Здесь их 4 — NSEC3PARAM, DNSKEY, NS и SOA. Первым числом, 8, после имени DNS-записи является тот код использованного алгоритма; далее, 1 указывает что .ru это домен первого уровня; число 345600 это значение TTL для данной записи; после идут дата и время окончания действия данной подписи и дата и время её создания в формате YYYYMMDDHHMMSS; и, наконец, число которое указывает идентификационный номер id ключа, с помощью которого сформирована данная подпись. Нетрудно заметить, что id 62160 соответствует ZSK, а 28642, соответственно, KSK.

root@beta:~ # host -t ds ru
ru has DS record 28642 8 2 bec17a4edf77372fe5e75a687f9ac500499bfac0bcacfb74b4678e3e715bee05

Запись DS с цифровым, как видно по первому числу 28642 которое, как было показано чуть выше, является id для KSK зоны .ru. Ещё раз хотелось бы подчеркнуть, что этот ответ был получен не от DNS сервера зоны .ru, а от корневой зоны.

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

Для наглядности и понимания проблемы возьмём для примера домен 2 уровня dxdt.ru для демонстрации организации структуры записей NSEC.

root@beta:~ # host -t nsec dxdt.ru
dxdt.ru has NSEC record dns.dxdt.ru. A NS SOA MX TXT RRSIG NSEC DNSKEY SPF TYPE65534

Из ответа можно увидеть, что вслед за первым доменом зоны dxdt.ru со списком используемых им типов ресурсных записей следует запись для поддомена dns.dxdt.ru. Если мы воспользуемся аналогичным запросом уже для dns.dxdt.ru мы получим аналогичную запись и для него с указанием последующего домена в данной зоне.

root@beta:~ # host -t nsec dns.dxdt.ru
dns.dxdt.ru has NSEC record dnssec.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec dnssec.dxdt.ru
dnssec.dxdt.ru has NSEC record hpkp-reporter.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec hpkp-reporter.dxdt.ru
hpkp-reporter.dxdt.ru has NSEC record new.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec new.dxdt.ru
new.dxdt.ru has NSEC record pqr.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec pqr.dxdt.ru
pqr.dxdt.ru has NSEC record search.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec search.dxdt.ru
search.dxdt.ru has NSEC record svg.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec svg.dxdt.ru
svg.dxdt.ru has NSEC record tls.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec tls.dxdt.ru
tls.dxdt.ru has NSEC record web-back.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec web-back.dxdt.ru
web-back.dxdt.ru has NSEC record www.dxdt.ru. TXT RRSIG NSEC SPF
root@beta:~ # host -t nsec www.dxdt.ru
www.dxdt.ru has NSEC record xn--80adjurfhd.xn--click-uye2a8548c.dxdt.ru. A RRSIG NSEC
root@beta:~ # host -t nsec xn--80adjurfhd.xn--click-uye2a8548c.dxdt.ru
xn--80adjurfhd.xn--click-uye2a8548c.dxdt.ru has NSEC record dxdt.ru. A RRSIG NSEC

Последняя запись для домена xn--80adjurfhd.xn--click-uye2a8548c.dxdt.ru замыкается вновь на первый домен зоны. По сути мы сейчас осуществили сканирование зоны DNS для домена dxdt.ru методом zonewalking что, как правило, является нежелательным действием для владельца домена и может служить базой для атаки со стороны злонамеренного исследователя.

Тот же процесс можно проделать в автоматическом режиме используя утилиту ldns-walk передав ей имя зоны как параметр.

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

Для указания всех этих параметов используется специальная ресурсная запись NSEC3PARAM сам факт наличия которой говорит о том, что зона должна содержать подписанные описанным в ней методом записи NSEC3.

root@beta:~ # drill -D nsec3param ru | grep NSEC3PARAM
;; ru.  IN      NSEC3PARAM
ru.     3600    IN      NSEC3PARAM      1 0 3 00ff
ru.     3600    IN      RRSIG   NSEC3PARAM 8 1 0 20161224222940 20161110123207 62160 ru. pfYA/bKe9AhKsEoMd6CCnGOM5dyc1LtQGRNw/oQrOX+TiqjjOWGgXxl4kd6T1RJ5/Dpdc1/esM9yCw2SnIAxuW94o/jKg/ojEHZpwJDvCpAMr5v8eM34eBGFG4uA5GZvnxJdALihm9i0UXQB0a57u+/oVTlwL0nOoZhuaAigAfQ=

Первое число после типа записи 1 означает используемый алгоритм формирования хэша, в данном случае RSA/MD5; значение 0 далее является флагом Opt-Out и означает, что NSEC3 не будет включать неподписанные цифровой подписью записи; следующее далее 3 означает число итераций при вычислении хэша; и, наконец, 00ff это "соль".

root@beta:~ # drill -D nsec3 ru | grep NSEC3
;; ru.  IN      NSEC3
TDUI9D4JKUDS8B9T86GJ39PGFLCNLGM5.ru.    607     IN      NSEC3   1 1 3 00ff  tggmp4s4c5uagaa21l263dbobh0j0c7v NS SOA RRSIG DNSKEY NSEC3PARAM
TDUI9D4JKUDS8B9T86GJ39PGFLCNLGM5.ru.    607     IN      RRSIG   NSEC3 8 2 3600 20161118165719 20161011210434 62160 ru. aeEzpsgBjOAoto/HCjnmVk0tcO7qs873UCC9oyXQpq0yFjRBLNBB1R45CsHpceZnvtnM73V/IMHkdy9yQT0/bbT2YeBIjumdu3Dpa0CR1FAdBQH2DVhS96cq9+kqQYqqF+ZY0hU+mpkhVWQo1mfdMwz3Z9k/Jv5vLpj8eoXRKdM=

Как можно догадаться при таком способе формирования цепочки задача просканировать зону методом zonewalking становится не столь тривиальной, как это было показано выше при использовании NSEC.

При выборе настроек вычисления хэша для NSEC3 следует учесть, что сам этот процесс более затратен в части используемой вычислительной мощности и, соответственно, производительности DNS серверов, которые будут обращаться к данной зоне (см. подробное исследование от NLnetLabs).

2. Как подписать DNSSEC свой домен

2.1. Прежде чем начать

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

Обычно на этом сайте все действия показаны на примере используемого им домена kostikov.co. Однако, на этот раз традиция будет нарушена. Ввиду того, что домен зарегистрирован у компании Namecheap который на данный момент времени не поддерживает DNSSEC для зоны .co, отступим от этой традиции и рассмотрим реализацию данной технологии базе домена peek.ru.

Домен peek.ru зарегистрирован в RU-center который осуществляет поддержку DNSSEC для зоны .ru.

Поскольку корневая зона . подписана, то для домена второго уровня следует предварительно проверить, подписан ли домен первого уровня, к которому он принадлежит. Это можно сдеать вручную, проверив путём отправки пары DNS запросов или ознакомиться со сведениями о поддержке DNSSEC от ICANN.

В вводной части мы уже убедились, что зона .ru, к которой принадлежит наш домен peek.ru, поддерживает DNSSEC — на момент написания статьи ею используются по две пары ключей ZSK и одна пара KSK. Публичный KSK, соответственно, имеет цифровой отпечаток в корневой зоне.

root@beta:~ # host -t ds ru
ru has DS record 28642 8 2 bec17a4edf77372fe5e75a687f9ac500499bfac0bcacfb74b4678e3e715bee05

В качестве вторичного DNS-сервера мы будем использовать бесплатный DNS сервис от afraid.org благодаря наличию у него поддержки DNSSEC чего, к сожалению, лишён более популярный сервис от Hurricane Electric.

Таким образом, проблем с поддержкой нет и можно начинать.

2.2. Подготовка инструментария

Для развёртывания DNSSEC будет использоваться DNS-сервер NSD работающий как первичный для нашей зоны в среде операционной системы FreeBSD.

root@beta:~ # uname -v
FreeBSD 11.0-RELEASE-p2 #0: Mon Oct 24 06:55:27 UTC 2016     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
root@beta:~ # nsd -v
NSD version 4.1.13
...

Для облегчения процессов создания ключей и подписи с их помощью доменной зоны воспользуемся набором утилит ldns, который поддерживается создателем NSD и Unbound — компанией NLnetLabs. Он имеется в составе портов FreeBSD.

root@beta:~ # cd /usr/ports/dns/ldns/
root@beta:/usr/ports/dns/ldns # make showconfig
===> The following configuration options are available for ldns-1.6.17_5:
     DOXYGEN=off: Build documentation with Doxygen
     DRILL=off: With drill program
     EXAMPLES=on: Build and/or install examples
     GOST=off: GOST signatures enabled, requires openssl >= 1.0.0
     RRTYPECDS=off: Enable draft RR type cds.
     RRTYPENINFO=off: Enable draft RR type ninfo.
     RRTYPERKEY=off: Enable draft RR type rkey.
     RRTYPETA=off: Enable draft RR type ta.
     RRTYPEURI=off: Enable draft RR type uri.
===> Use 'make config' to modify these settings

Обратите внимание, что в состав ldns входит также и популярная утилита drill для работы с запросами к DNS серверам. Она имеется также и в наборе кэширующего DNS Unbound, который уже предустановлен во FreeBSD начиная с версии 10.0. Поэтому, если вы уже имеете Unbound в системе то нет нужды устанавливать drill из пакета ldns. Выше, как видно, её повторная установка отключена.

Установим ldns.

root@beta:/usr/ports/dns/ldns # make install clean
===>  License BSD3CLAUSE accepted by the user
===>  Found saved configuration for ldns-1.6.17_5
===>   ldns-1.6.17_5 depends on file: /usr/local/sbin/pkg - found
=> ldns-1.6.17.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://www.nlnetlabs.nl/downloads/ldns/ldns-1.6.17.tar.gz
ldns-1.6.17.tar.gz                            100% of 1284 kB  581 kBps 00m02s
===> Fetching all distfiles required by ldns-1.6.17_5 for building
===>  Extracting for ldns-1.6.17_5
=> SHA256 Checksum OK for ldns-1.6.17.tar.gz.
...

Далее проверим структуру хранения файлов доменов для которых NSD будет выступать в качестве первичного сервера. Если его установка производилась в соответствии со статьёй "Настройка первичного DNS-сервера на базе NSD" то вы должны иметь примерно следующую картину.

root@beta:~ # cd /usr/local/etc/nsd/
root@beta:/usr/local/etc/nsd # ls -Rla zones/
total 10
drwxr-xr-x  5 nsd  nsd  512  7 нояб. 12:10 .
drwxr-xr-x  5 nsd  nsd  512  9 нояб. 18:29 ..
drwxr-xr-x  2 nsd  nsd  512  6 нояб. 20:50 kostikov.co
drwxr-xr-x  2 nsd  nsd  512  6 нояб. 20:50 peek.ru
drwxr-x---  2 nsd  nsd  512  9 нояб. 18:40 tmp

zones/kostikov.co:
total 6
drwxr-xr-x  2 nsd   nsd    512  6 нояб. 20:50 .
drwxr-xr-x  5 nsd   nsd    512  7 нояб. 12:10 ..
-rw-r--r--  1 root  wheel  726 10 окт.  00:14 kostikov.co.zone

zones/peek.ru:
total 10
drwxr-xr-x  2 nsd   nsd     512  6 нояб. 20:50 .
drwxr-xr-x  5 nsd   nsd     512  7 нояб. 12:10 ..
-rw-r--r--  1 root  wheel  4522 15 окт.  06:00 peek.ru.zone

zones/tmp:
total 4
drwxr-x---  2 nsd  nsd  512  9 нояб. 18:40 .
drwxr-xr-x  5 nsd  nsd  512  7 нояб. 12:10 ..

То есть файлы зон хранятся в отдельных подкаталогах имена которых соответствуют именам обслуживаемых доменов, равно как и сам файл носит имя домена и расширение .zone.

2.3. Создание ключей

Прежде чем приступать к созданию пар ключей следует определиться, будет ли осуществляться поддержка NSEC3 или достаточно будет NSEC. Автор рекомендует использовать первый вариант. Сам хэш в любом случае будет формироваться по алгоритму SHA1.

Для целей демонстрации воспользуемся протоколом DSA-NSEC3-SHA1 или номер 6.

В качестве первого этапа создадим набор ZSK длиной 512 битов при помощи утилиты ldns-keygen.

root@beta:/usr/local/etc/nsd # cd zones/peek.ru/
root@beta:/usr/local/etc/nsd/zones/peek.ru # ldns-keygen -a DSA-NSEC3-SHA1 -b 512 peek.ru
Kpeek.ru.+006+15134
root@beta:/usr/local/etc/nsd/zones/peek.ru # ll
total 8
-rw-r--r--  1 root  nsd       66 11 нояб. 10:06 Kpeek.ru.+006+15134.ds
-rw-r--r--  1 root  nsd      345 11 нояб. 10:06 Kpeek.ru.+006+15134.key
-rw-r--r--  1 root  nsd      442 11 нояб. 10:06 Kpeek.ru.+006+15134.private
-rw-r--r--  1 root  wheel   4450 11 нояб. 15:34 peek.ru.zone

В результате в рабочем каталоге подписываемой зоны появилось три файла, назначение которых понятно из расширений — закрытый и открытый ключи, а также отпечаток открытого ключа. Кроме того в наименовании файла фигурирует код используемого алгоритма и id ключей.

root@beta:/usr/local/etc/nsd/zones/peek.ru # cat Kpeek.ru.+006+15134.key
peek.ru.        IN      DNSKEY  256 3 6 AKC+93W0nJaaY4fHq/q5J8oQrPMpwOoHIhM9ZJBq8kmlVJn0pcaBA4YaeUU04tDgK2kJNBZKUvlh4Ei6oOZTdu8BA9S8XPOzKaKzyFq56Ih3XyR1fTXO7kaN8TIMa4c0h/34E+pMBwQdPXX5YOo6E2BLhpDar9jiuK9WOVR3fa710shy18WcZVpjCtLFV21OucN7aM8KTYH4rG6/qAzagLt0Y9BuuvDEjo9ctka2fWXtYV14zQ82y4TLokF226IOmg8EphfP0ftzgTEe0oTVVhKUQH5M ;{id = 15134 (zsk), size = 512b}
root@beta:/usr/local/etc/nsd/zones/peek.ru # cat Kpeek.ru.+006+15134.ds
peek.ru.        IN      DS      15134 6 1 c423cfd90270eb7d3d82daa65db663c5a2cde837

Создадим также пару KSK. Несмотря на то, что на практике продемонстрирована возможность использования разных алгоритмов для KSK и ZSK, мы строго последуем рекомендациям RFC4035 и RFC6840 и воспользуемся тем же DSA-NSEC3-SHA1 увеличив, однако, размерность до 1024 битов. Кстати, эта размерность является максимально возможной для этого алгоритма.

root@beta:/usr/local/etc/nsd/zones/peek.ru # ldns-keygen -a DSA-NSEC3-SHA1 -b 1024 -k peek.ru
Kpeek.ru.+006+44711
root@beta:/usr/local/etc/nsd/zones/peek.ru # ll
total 14
-rw-r--r--  1 root  nsd       66 11 нояб. 10:06 Kpeek.ru.+006+15134.ds
-rw-r--r--  1 root  nsd      345 11 нояб. 10:06 Kpeek.ru.+006+15134.key
-rw-r--r--  1 root  nsd      442 11 нояб. 10:06 Kpeek.ru.+006+15134.private
-rw-r--r--  1 root  nsd       66 11 нояб. 10:06 Kpeek.ru.+006+44711.ds
-rw-r--r--  1 root  nsd      602 11 нояб. 10:06 Kpeek.ru.+006+44711.key
-rw-r--r--  1 root  nsd      694 11 нояб. 10:06 Kpeek.ru.+006+44711.private
-rw-r--r--  1 root  wheel   4450 11 нояб. 15:34 peek.ru.zone

KSK был создан с id 44711, а увеличенная длина пар ключей сполна отразилась и на длине файлов пары закрытый / открытый ключ, но не на размере отпечатка.

2.4. Подписывание зоны

Перед подписанием зоны следует обновить serial нашей зоны который расположен в ресурсной записи SOA, после чего файл зоны peek.ru приобретёт следующий вид (публикуется в сокращённом виде).

root@beta:/usr/local/etc/nsd/zones/peek.ru # cat peek.ru.zone
$ORIGIN peek.ru.
$TTL 86400
@       IN SOA  beta.peek.ru. hostmaster.peek.ru. (
                2016111105      ; serial
                10800           ; refresh
                1800            ; retry
                604800          ; expire
                14400   )       ; minimum
; NS
        IN NS   beta.peek.ru.
        IN NS   ns2.afraid.org.
; WWW
@       IN A    78.40.219.163
beta    IN A    78.40.219.163
www     IN CNAME        peek.ru.
list    IN CNAME        beta.peek.ru.
mail    IN CNAME        beta.peek.ru.
; MX
@       IN MX   10 beta.peek.ru.
        IN SPF  "v=spf1 +mx -all"
        IN TXT  "v=spf1 +mx -all"
_adsp._domainkey.peek.ru.       IN TXT  "dkim=all"
_dmarc.peek.ru.                 IN TXT  "v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-rua@peek.ru"
...

Подпишем её используя утилиту ldns-signzone. В качесте параметров укажем: при помощи ключа -n что будет использоваться NSEC3, -t используя 10 итераций (справочно, RFC6781 рекомендовано значение 100 но, при этом, оно не должно превышать значения, указанные в п.10.3. RFC5155) и ключа -s где будет указана "соль".

Предварительно сгенерируем случайную "соль", например, таким способом.

root@beta:/usr/local/etc/nsd/zones/peek.ru # head -c 512 /dev/random | shasum | cut -b 1-16
b1a0cd83eb0fcad6

И, собственно, подпишем зону.

root@beta:/usr/local/etc/nsd/zones/peek.ru # ldns-signzone -n -t 10 -s b1a0cd83eb0fcad6 peek.ru.zone Kpeek.ru.+006+15134 Kpeek.ru.+006+44711
root@beta:/usr/local/etc/nsd/zones/peek.ru # ll
total 36
-rw-r--r--  1 root  nsd       66 11 нояб. 10:06 Kpeek.ru.+006+15134.ds
-rw-r--r--  1 root  nsd      345 11 нояб. 10:06 Kpeek.ru.+006+15134.key
-rw-r--r--  1 root  nsd      442 11 нояб. 10:06 Kpeek.ru.+006+15134.private
-rw-r--r--  1 root  nsd       66 11 нояб. 10:06 Kpeek.ru.+006+44711.ds
-rw-r--r--  1 root  nsd      602 11 нояб. 10:06 Kpeek.ru.+006+44711.key
-rw-r--r--  1 root  nsd      694 11 нояб. 10:06 Kpeek.ru.+006+44711.private
-rw-r--r--  1 root  wheel   4450 11 нояб. 15:34 peek.ru.zone
-rw-r--r--  1 root  nsd    17668 11 нояб. 15:34 peek.ru.zone.signed

В результате в рабочем каталоге был создан файл с раширением .signed который и является файлом с подписанной DNSSEC зоной. Взглянем на его содержимое (также сокращено).

root@beta:/usr/local/etc/nsd/zones/peek.ru # cat peek.ru.zone.signed
peek.ru.        86400   IN      SOA     beta.peek.ru. hostmaster.peek.ru. 2016111105 10800 1800 604800 14400
peek.ru.        86400   IN      RRSIG   SOA 6 2 86400 20161209133447 20161111133447 15134 peek.ru. ACq2v/k83ujBY525bY7KtSE0doGXmSkPYjlO/X3+/KyHheYGI9T0AQs=
peek.ru.        86400   IN      A       78.40.219.163
peek.ru.        86400   IN      RRSIG   A 6 2 86400 20161209133447 20161111133447 15134 peek.ru. AG7F8xN2uiQ8uKrfGMKEmXPIeeuUdrFfOGi9cOSwFLlESGGE2Edww0A=
peek.ru.        86400   IN      NS      ns2.afraid.org.
peek.ru.        86400   IN      NS      beta.peek.ru.
peek.ru.        86400   IN      RRSIG   NS 6 2 86400 20161209133447 20161111133447 15134 peek.ru. ADGoegHKCgHTXFA+3A4twXWiD0YhHoYF6jpzlpn/xwUysAT3Xs2rHcU=
peek.ru.        86400   IN      MX      10 beta.peek.ru.
peek.ru.        86400   IN      RRSIG   MX 6 2 86400 20161209133447 20161111133447 15134 peek.ru. AIKzjlxORUij353CEUD/uiVO9pIshhNL6xSjWkrZaqUIM1olZL1vx0s=
peek.ru.        86400   IN      TXT     "v=spf1 +mx -all"
peek.ru.        86400   IN      RRSIG   TXT 6 2 86400 20161209133447 20161111133447 15134 peek.ru. AFXMH+X09vPC7aNYq9H6q1uZ+1gafYBe1XMUH/gnK7Uu4Zp/qi9lt+Y=
peek.ru.        86400   IN      DNSKEY  256 3 6 AKC+93W0nJaaY4fHq/q5J8oQrPMpwOoHIhM9ZJBq8kmlVJn0pcaBA4YaeUU04tDgK2kJNBZKUvlh4Ei6oOZTdu8BA9S8XPOzKaKzyFq56Ih3XyR1fTXO7kaN8TIMa4c0h/34E+pMBwQdPXX5YOo6E2BLhpDar9jiuK9WOVR3fa710shy18WcZVpjCtLFV21OucN7aM8KTYH4rG6/qAzagLt0Y9BuuvDEjo9ctka2fWXtYV14zQ82y4TLokF226IOmg8EphfP0ftzgTEe0oTVVhKUQH5M ;{id = 15134 (zsk), size = 512b}
peek.ru.        86400   IN      DNSKEY  257 3 6 CNrq1NXCn3vhN1gU1Dn8bYqy5039k+lUe7rPphwZ/rWtAdOXfbF0G8CqRONQKLdp5C4tiBUXwS2PrtdXErXmJM5/bKeBmO3QbHYR0dn8Vhpy1cNWIe/o0aTC/xKQVukXna4TletNODmWF9dPP1jmVRFjthy/U9638tr68tJjpUKwcdmywBbNkIoZNoOCqzZAy1AXRF89vqb5T5onu6OsQqAosm6D6ia1SaqDXLjVfbVHxkMO/yqVOf1T5A7ChmeY+Sf75inywfsHUga70y1SWsp5rXqBrWZcy6Mb4PTxTagWZC1xOBi7VoZXZ7m1jqBsNHzfxRV677/+m8zK7yXkqGFhENaGXi509s20nIYS7c+T9t7p4DRVQgPw6qKjRNQcacGehqM9mfEqazA2FhgnECUlL7Tg/EFHRMVytzA6dURmIZzm3ztcOVEdKNCGCQfUkLAH10aTkZJhilcAgqs68cZRDglm9Dy3PTIxgLcq40N+6krABlfbAaDGaLvrhPGq6cDXWhB45Ff/SS1G5KVxXjnAmajq ;{id = 44711 (ksk), size = 1024b}
peek.ru.        86400   IN      RRSIG   DNSKEY 6 2 86400 20161209133447 20161111133447 44711 peek.ru. AIQeJzfXZ4CLzbY+IAJ69ClCuzqtV+9lJQN3aJWBL+9/0v15PfPufkI=
peek.ru.        3600    IN      NSEC3PARAM      1 0 10 b1a0cd83eb0fcad6
peek.ru.        3600    IN      RRSIG   NSEC3PARAM 6 2 3600 20161209133447 20161111133447 15134 peek.ru. AB1vEr+5T0nG3cKmYiPwzThFvjm3BuREeYSntEqxsRuF7c5u9ZZTeeg=
peek.ru.        86400   IN      SPF     "v=spf1 +mx -all"
peek.ru.        86400   IN      RRSIG   SPF 6 2 86400 20161209133447 20161111133447 15134 peek.ru. AJXbAM1D9GCRkh/rRukip/qiQt0/BmUSbP2x1kMrbfh5eAcj5wBc0ek=
pttqcgo0s1h7t762anqu7jeuo7h51sjt.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  q85tkm9cq2naetvk085pb7dksts23ai5 A NS SOA MX TXT RRSIG DNSKEY NSEC3PARAM SPF
pttqcgo0s1h7t762anqu7jeuo7h51sjt.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AGZdSR0GkBLSPqHfDCFFjpFjbsRTK6gETHhyexc+4d3z87sQ/Xnpi0A=
_dmarc.peek.ru. 86400   IN      TXT     "v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-rua@peek.ru"
_dmarc.peek.ru. 86400   IN      RRSIG   TXT 6 3 86400 20161209133447 20161111133447 15134 peek.ru. AEY9mURVZIjnyNpJujBh1H2GN3H7RywmK4sVgWZH9n8VhV9m3/9CkXA=
go015vp348k4tv2t5km49894or89f3rp.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  hp2n9lh9uhni9f7dok5vn8ljnuna3o29 TXT RRSIG
go015vp348k4tv2t5km49894or89f3rp.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AGPM8sOI9B1H9TYnElkCVHRUEOVqBrngpFd6PWjAf/W2oR3udqPSY3g=
vpdfoov6pll89njn8r3l76en376558q4.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  vt883qmfoisfaje62odaaugjf3habliq
vpdfoov6pll89njn8r3l76en376558q4.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AIkmWbCLELEoSi68T6U/WVmMxHigIsu1qiEIg1508FjGqSuXswenOpM=
cvupu86ht9hs419qu1r61ag7c8000gjh.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  d1povpj83e0k11h02gg5i6vod8utns67 TXT RRSIG
cvupu86ht9hs419qu1r61ag7c8000gjh.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AARb4SMR3ppVcxBLZicENGIi+jq+PpiLYjlP0sbyNjkpROYBaqP4x+M=
qmkid6k1ap5t9km5c5j197114600igqa.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  tou2hr5akj0dv4ajeapcauk7tph4fe43 TXT RRSIG
qmkid6k1ap5t9km5c5j197114600igqa.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. ADEm7SDLDranYTUdt8q3nf0dbS6TgcNILjsu5O0N2aDbX1SgAxJ0KwY=
4ah774mf33orh5vpnjf1avu7thu4lk2u.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  4jm73v86m938en26qqk2cio3npsd5949 TXT RRSIG
4ah774mf33orh5vpnjf1avu7thu4lk2u.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. ADdJdCINuydHwr09x9+olmNtV7mjGRn7PQw1ifJwOWGq3bqRhtPUdQ4=
beta.peek.ru.   86400   IN      A       78.40.219.163
beta.peek.ru.   86400   IN      RRSIG   A 6 3 86400 20161209133447 20161111133447 15134 peek.ru. AAXJy37PoYrHdphqdftNQipx4EYcGLkwtKxKqA+GTtkAsOwE+R2qfWk=
4jm73v86m938en26qqk2cio3npsd5949.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  55g8tj5gvt49d2kmqjoqj7mdjij9hudr A RRSIG
4jm73v86m938en26qqk2cio3npsd5949.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AGUbYGNrq5fPmBOTuh5WUvhTtITvMR8aBPbkE5wTfoUmspKXXHQZzxI=
l78g65fcih71d45upvks9i57p8e1njh3.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  lfi1i078psl9niqa1mtj84115ihvin5c
l78g65fcih71d45upvks9i57p8e1njh3.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. ACBjH8ut6aocE4DynD54D5nH3Ey9W8DypQXXtN8IfWFN/ECUi7/tlHY=
cmt4ar5v9hf3u1isu1nml92t9ae5oi0u.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  cvupu86ht9hs419qu1r61ag7c8000gjh
cmt4ar5v9hf3u1isu1nml92t9ae5oi0u.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AIfFyBVCa2cPiXEnC4tNN4NxajRhXk7Mi4blLG5Ro/VxlIZHRhF0z1A=
matiblk9oeomukvp2culpc4isr334tjn.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  n8g8stgm0f4flhcut6kcblpp58872qnj
matiblk9oeomukvp2culpc4isr334tjn.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AKBQL550WfvBIINmKi04ptB7QO8sIg6GxHPhTt6k+/FgpMfi6u48twQ=
list.peek.ru.   86400   IN      CNAME   beta.peek.ru.
list.peek.ru.   86400   IN      RRSIG   CNAME 6 3 86400 20161209133447 20161111133447 15134 peek.ru. AJsabtj3SNFan1nuPcA91Kg5Cfe0nl3kUQ5EslrqtY5anjkcWjSBvfk=
ehtmp0pl85pos4thrdfl9sj3oth14829.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  f8n122e65bfrmq9u3o2gr12vu36cg79u CNAME RRSIG
ehtmp0pl85pos4thrdfl9sj3oth14829.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AI1U/3Bg2CO4aOY5cULtUw71Uu9rkJxNg7WMEm1TQm1WmfHvss1foVI=
mail.peek.ru.   86400   IN      CNAME   beta.peek.ru.
mail.peek.ru.   86400   IN      RRSIG   CNAME 6 3 86400 20161209133447 20161111133447 15134 peek.ru. AIgENNA633f4aa1Bttfy3uMIfbPQP2rtYhMI/YgL1YVbtyQM46VO444=
www.peek.ru.    86400   IN      CNAME   peek.ru.
www.peek.ru.    86400   IN      RRSIG   CNAME 6 3 86400 20161209133447 20161111133447 15134 peek.ru. AAU2EkoIDbZegZCRr6CywVNV4eX0e8FRZG01FMgzLFXYZdrvC0tJ1aA=
q85tkm9cq2naetvk085pb7dksts23ai5.peek.ru.       14400   IN      NSEC3   1 0 10 b1a0cd83eb0fcad6  qmkid6k1ap5t9km5c5j197114600igqa CNAME RRSIG
q85tkm9cq2naetvk085pb7dksts23ai5.peek.ru.       14400   IN      RRSIG   NSEC3 6 3 14400 20161209133447 20161111133447 15134 peek.ru. AErNwx4suixi6q9tXqnkLjFc+ckjbEX3HCmaTYWcj2A2PT0YV1DVFgw=
...

Как видно, всё подписалось так, как это и было задумано, включая NSEC3. Публичные ключи DNSKEY были автоматически добавлены в подписанную зону. Обратите внимание, что сроком окончания действия наших подписей установлено 13:34:47 09-12-2016 то есть через 4 недели от момента формирования цифровых подписей.

2.5. Подключение к DNS

Теперь включим изменёный файл зоны в конфигурацию DNS-сервера NSD. В результате раздел для peek.ru приобретёт следующий вид.

root@beta:/usr/local/etc/nsd/zones/peek.ru # cat ../../nsd.conf
#
# nsd.conf -- the NSD(8) configuration file, nsd.conf(5).
#
# Copyright (c) 2001-2011, NLnet Labs. All rights reserved.
#
# See LICENSE for the license.
#

# -- by xM 2016-11-11
...
# -- for secondary @ afraid.org
pattern:
        name: "xfr-afraid"
        zonefile: "%s/%s.zone.signed"
        notify: 174.37.196.55 NOKEY
        provide-xfr: 174.37.196.55 NOKEY
...
zone:
        name: "peek.ru"
        include-pattern: "xfr-afraid"
...

Перезапустив NSD с новой конфигурацией можно увидеть прошедший успешно трансфер зоны на вторичные DNS-серверы.

root@beta:/usr/local/etc/nsd/zones/peek.ru # service nsd restart
Stopping nsd.
Waiting for PIDS: 62461.
Starting nsd.
root@beta:/usr/local/etc/nsd/zones/peek.ru # tail -n10 ../../var/log/nsd.log
[2016-11-11 13:57:49.412] nsd[76580]: warning: signal received, shutting down...
[2016-11-11 13:57:49.447] nsd[76967]: notice: nsd starting (NSD 4.1.13)
[2016-11-11 13:57:49.456] nsd[76967]: info: setup SSL certificates
[2016-11-11 13:57:49.538] nsd[76969]: info: zone peek.ru read with success
[2016-11-11 13:57:49.538] nsd[76969]: info: rehash of zone peek.ru. with parameters 1 0 10 7aedd075e492e61d
[2016-11-11 13:57:49.539] nsd[76969]: info: zone peek.ru written to db
[2016-11-11 13:57:49.539] nsd[76969]: info: zonefile kostikov.co/kostikov.co.zone is not modified
[2016-11-11 13:57:49.540] nsd[76969]: notice: nsd started (NSD 4.1.13), pid 76968
[2016-11-11 13:58:59.789] nsd[76968]: info: axfr for peek.ru. from 174.37.196.55

Осталось сообщить отпечаток нашего публичного KSK регистратору домена. Напомню, он хранится в файле с раширением .ds. Регистратор нашего домена RU-center также (почему-то) требует предоставления публичной части KSK.

root@beta:/usr/local/etc/nsd/zones/peek.ru # cat Kpeek.ru.+006+44711.ds
peek.ru.        IN      DS      44711 6 1 d8980394189c6b5e2d4757b463337b14414c790c
root@beta:/usr/local/etc/nsd/zones/peek.ru # cat Kpeek.ru.+006+44711.key
peek.ru.        IN      DNSKEY  257 3 6 CNrq1NXCn3vhN1gU1Dn8bYqy5039k+lUe7rPphwZ/rWtAdOXfbF0G8CqRONQKLdp5C4tiBUXwS2PrtdXErXmJM5/bKeBmO3QbHYR0dn8Vhpy1cNWIe/o0aTC/xKQVukXna4TletNODmWF9dPP1jmVRFjthy/U9638tr68tJjpUKwcdmywBbNkIoZNoOCqzZAy1AXRF89vqb5T5onu6OsQqAosm6D6ia1SaqDXLjVfbVHxkMO/yqVOf1T5A7ChmeY+Sf75inywfsHUga70y1SWsp5rXqBrWZcy6Mb4PTxTagWZC1xOBi7VoZXZ7m1jqBsNHzfxRV677/+m8zK7yXkqGFhENaGXi509s20nIYS7c+T9t7p4DRVQgPw6qKjRNQcacGehqM9mfEqazA2FhgnECUlL7Tg/EFHRMVytzA6dURmIZzm3ztcOVEdKNCGCQfUkLAH10aTkZJhilcAgqs68cZRDglm9Dy3PTIxgLcq40N+6krABlfbAaDGaLvrhPGq6cDXWhB45Ff/SS1G5KVxXjnAmajq ;{id = 44711 (ksk), size = 1024b}

Добавление производится путём копирования вышеприведённых данных в специальную форму в личном кабинете.

add DS and DNSKEY for domain to RU-center

После сохранения введённых данных начнётся процесс обновления DNS-серверов в зоне .ru и через некоторое время можно будет посмотреть что получилось.

2.6. Проверка результатов

Итак, после данные нашей свежеподписанной DNSSEC зоны peek.ru синхронизировались и можно проверить результаты.

Самым простым способом это сделать будет воспользоваться уже знакомой утилитой drill с ключами трассировки (-T) DNSSEC (-D).

root@beta:~ # drill -TD peek.ru
;; Number of trusted keys: 1
;; Domain: .
[T] . 172800 IN DNSKEY 256 3 8 ;{id = 39291 (zsk), size = 2048b}
. 172800 IN DNSKEY 257 3 8 ;{id = 19036 (ksk), size = 2048b}
Checking if signing key is trusted:
New key: .      172800  IN      DNSKEY  256 3 8 AwEAAYbinauHA9oUb4aGNtJIrepyGoYy0OL01rvIhvo3RWN/Ch8p2C4ZEkpvUYkx74r9JpgrOsjKOv+JQdKtT2u8AxGjUoH8x8HdpDiMV7XnpWJo9wAxlFtDtbMnPwRQ3dWsT1p5myrGcm7EFJ9j7KmiAEG5hGsevZqcnqMOW9QFkmp/zM0TFYXYWq6AsAof2uZqLUyd+nHIW0TGsaHMzcTNfA8Ww+OYV7R4bcR/8edCEo6OAh9j48R1hRtuO1e2MQdnkITc9DJljB4Cq1gQKwv/ku7mAvmFuWkRotMZIFN3vDhpmpmy7M0C1EHSRAgP+HkblLRQKOPnwI/VksJEU4fmnhk= ;{id = 39291 (zsk), size = 2048b}
        Trusted key: .  3600    IN      DS      19036 8 2 49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5
        Trusted key: .  172800  IN      DNSKEY  256 3 8 AwEAAYbinauHA9oUb4aGNtJIrepyGoYy0OL01rvIhvo3RWN/Ch8p2C4ZEkpvUYkx74r9JpgrOsjKOv+JQdKtT2u8AxGjUoH8x8HdpDiMV7XnpWJo9wAxlFtDtbMnPwRQ3dWsT1p5myrGcm7EFJ9j7KmiAEG5hGsevZqcnqMOW9QFkmp/zM0TFYXYWq6AsAof2uZqLUyd+nHIW0TGsaHMzcTNfA8Ww+OYV7R4bcR/8edCEo6OAh9j48R1hRtuO1e2MQdnkITc9DJljB4Cq1gQKwv/ku7mAvmFuWkRotMZIFN3vDhpmpmy7M0C1EHSRAgP+HkblLRQKOPnwI/VksJEU4fmnhk= ;{id = 39291 (zsk), size = 2048b}
Key is now trusted!
        Trusted key: .  172800  IN      DNSKEY  257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b}
[T] ru. 86400 IN DS 28642 8 2 bec17a4edf77372fe5e75a687f9ac500499bfac0bcacfb74b4678e3e715bee05
;; Domain: ru.
[T] RU. 345600 IN DNSKEY 256 3 8 ;{id = 62160 (zsk), size = 1024b}
RU. 345600 IN DNSKEY 256 3 8 ;{id = 17625 (zsk), size = 1024b}
RU. 345600 IN DNSKEY 257 3 8 ;{id = 28642 (ksk), size = 2048b}
Checking if signing key is trusted:
New key: RU.    345600  IN      DNSKEY  256 3 8 AwEAAcXlVduzE/IlcYAZbY74MP9Q7siVDfNg8avNCTPskuXUsrWL9xKmBLt2NAI/jExR2Yh5CvMTuVXmN9J7RppJVu7JnCzyP6A9K0AAhCNM4NGh39EdBE9A1Vz4OFJy2TQ/miNdPo/E22hyKx9EkYo3HbAmwrANuuM3K+Yms6CUpQkF ;{id = 62160 (zsk), size = 1024b}
        Trusted key: .  3600    IN      DS      19036 8 2 49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5
        Trusted key: .  172800  IN      DNSKEY  256 3 8 AwEAAYbinauHA9oUb4aGNtJIrepyGoYy0OL01rvIhvo3RWN/Ch8p2C4ZEkpvUYkx74r9JpgrOsjKOv+JQdKtT2u8AxGjUoH8x8HdpDiMV7XnpWJo9wAxlFtDtbMnPwRQ3dWsT1p5myrGcm7EFJ9j7KmiAEG5hGsevZqcnqMOW9QFkmp/zM0TFYXYWq6AsAof2uZqLUyd+nHIW0TGsaHMzcTNfA8Ww+OYV7R4bcR/8edCEo6OAh9j48R1hRtuO1e2MQdnkITc9DJljB4Cq1gQKwv/ku7mAvmFuWkRotMZIFN3vDhpmpmy7M0C1EHSRAgP+HkblLRQKOPnwI/VksJEU4fmnhk= ;{id = 39291 (zsk), size = 2048b}
        Trusted key: .  172800  IN      DNSKEY  257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b}
        Trusted key: RU.        345600  IN      DNSKEY  256 3 8 AwEAAcXlVduzE/IlcYAZbY74MP9Q7siVDfNg8avNCTPskuXUsrWL9xKmBLt2NAI/jExR2Yh5CvMTuVXmN9J7RppJVu7JnCzyP6A9K0AAhCNM4NGh39EdBE9A1Vz4OFJy2TQ/miNdPo/E22hyKx9EkYo3HbAmwrANuuM3K+Yms6CUpQkF ;{id = 62160 (zsk), size = 1024b}
Key is now trusted!
        Trusted key: RU.        345600  IN      DNSKEY  256 3 8 AwEAAchyCZcyx15dvmiom9AAYmrfYkPiHXHyZnSvCcOus4U4y4Kt/ofSrNFxWIq0ZhwzdKBkS+SBFDMa/6u4RcmL3UBGIkdNRupg/ZOheBkCa6ze2+HIwnDpRei5eak8KYIqf+T0zxzHHhDCTKm8wUS9anNTRcrzk2wfe2RoSw3UIXzr ;{id = 17625 (zsk), size = 1024b}
        Trusted key: RU.        345600  IN      DNSKEY  257 3 8 AwEAAYkpXn6XJ6XZMyo4FqHSTwFdX8D7yHJJz5vli6QzcnAdlOtw5Olk6NjimJAJMVpc1kymvSvnZZJEMgYIDgXn0EFNwuCgNNmoHcPhbxHG+1Ke0/SkRX/7cXbUxFgc2emkzCRvQKLCdInP3g/0j53iHxJZRSCmvNmolk7ktXh+XE+r5SAUOupurQzwC/0dwGMepWRL7d3SJCaFUMxr+1+Hm6GaXC1AXP9Bre6LiHJhvtoPsjLTu+uSqEpPhWsioONg7+mMqlX6rL9C4Wax3qouaHRhzld8w/W0LcGb+kaswNhib5XxYiouVL4xsu9o+/NIZ1wBqd8VB/EHozNWa6tUdFk= ;{id = 28642 (ksk), size = 2048b}
[T] PEEK.RU. 345600 IN DS 44711 6 1 d8980394189c6b5e2d4757b463337b14414c790c
;; Domain: peek.ru.
[T] peek.ru. 86400 IN DNSKEY 256 3 6 ;{id = 15134 (zsk), size = 512b}
peek.ru. 86400 IN DNSKEY 257 3 6 ;{id = 44711 (ksk), size = 1024b}
[T] peek.ru.    86400   IN      A       78.40.219.163
;;[S] self sig OK; [B] bogus; [T] trusted

Вывод демонстрирует выстроенную полную цепочку доверия от корневой зоны, через зону .ru к нашему домену peek.ru. Значени [T] — Trusted по всему списку говорит о том, что всё функционирует должным образом и ошибок нет.

Более наглядно это можно увидеть воспользовавшись мощным аналитическим инструментом DNSViz от компании Verisign.

dnsviz DNSSEC tree

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

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

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

3. PROFIT !

Статья была полезной? Тогда прошу не стесняться и поддерживать деньгами через PayPal или Яндекс.Деньги.


DNS  security  DNSSEC