Установка и настройка ДНС сервера BIND с DNSSEC в CentOS

articles Установка ДНС сервера BIND в CentOS 6 и CentOS 7 особо ничем не отличается, за исключением доступной в "родном" репозитории версии. В нашем случае мы будем устанавливать BIND в CentOS 6 из репозитория CentALT, потому как только в нём доступна самая свежая на данный момент (bind x86_64 44:9.10.2-1.el6) версия, которая поддерживает самые новые "фичи" среди которых и автоподписание зон, что избавляет от необходимости выполнять "dnssec-signzone -S -N INCREMENT zone-filename.zone" после каждого изменения файла зоны.

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

Если наш регистратор не предоставляет ДНС серверов с поддержкой DNSSEC для нашего домена, но в тоже время хотябы поддерживает отправку DS/KSK записи в корневые домены (.com/.org/.ru etc), то в таком случае для реализации DNSSEC для совего домена нам и потребуется свой собственный ДНС сервер BIND с DNSSEC поддержкой.

Установка ДНС сервера BIND с DNSSEC в CentOS

Посмотрим на информацию о пакетах bind и bind-utils:

$ yum info bind
...
Available Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.8.2
Release     : 0.37.rc1.el6_7.7
Size        : 4.0 M
Repo        : updates
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System)
            : server
URL         : http://www.isc.org/products/BIND/
License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the
            : DNS (Domain Name System) protocols. BIND includes a DNS server
            : (named), which resolves host names to IP addresses; a resolver
            : library (routines for applications to use when interfacing with
            : DNS); and tools for verifying that the DNS server is operating
            : properly.
 
 
$ yum info bind-utils
...
Installed Packages
Name        : bind-utils
Arch        : x86_64
Epoch       : 36
Version     : 9.9.1
Release     : 4.P3.el6
Size        : 439 k
Repo        : installed
From repo   : CentALT
Summary     : Utilities for querying DNS name servers
URL         : http://www.isc.org/products/BIND/
License     : ISC
Description : Bind-utils contains a collection of utilities for querying DNS
            : (Domain Name System) name servers to find out information about
            : Internet hosts. These tools will provide you with the IP addresses
            : for given host names, as well as other information about
            : registered domains and network addresses.
            :
            : You should install bind-utils if you need to get information from
            : DNS name servers.

Видим, что версия bind-utils уже установлена из CentALT репозитория и она выше (9.9.1), чем предлагаемая версия bind из репозитория updates (9.8.2) - это может вызвать проблемы при установке, например:


...
Error: Package: 32:bind-9.8.2-0.37.rc1.el6_7.7.x86_64 (updates)
           Requires: libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6.x86_64 (base)
               libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6_7.1.x86_64 (updates)
               libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6_7.2.x86_64 (updates)
               libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6_7.4.x86_64 (updates)
               libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6_7.5.x86_64 (updates)
               libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6_7.6.x86_64 (updates)
               libdns.so.81()(64bit)
           Available: 32:bind-libs-9.8.2-0.37.rc1.el6_7.7.x86_64 (updates)
               libdns.so.81()(64bit)
           Installed: 36:bind-libs-9.9.1-4.P3.el6.x86_64 (@CentALT)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Если это наш случай, то мы можем либо сначала удалить, а потом установить/переустанавить пакет bind из репозитория "updates":

$ yum remove bind-utils bind-libs
$ yum install bind bind-utils
...
Dependencies Resolved
 
================================================================================
 Package         Arch        Version                         Repository    Size
================================================================================
Installing:
 bind            x86_64      32:9.8.2-0.37.rc1.el6_7.7       updates      4.0 M
 bind-utils      x86_64      32:9.8.2-0.37.rc1.el6_7.7       updates      186 k
Installing for dependencies:
 bind-libs       x86_64      32:9.8.2-0.37.rc1.el6_7.7       updates      887 k
 
Transaction Summary
================================================================================
Install       3 Package(s)
 
Total download size: 5.0 M
Installed size: 9.9 M
Is this ok [y/N]:
------------------------------------------------------------------------
 
Либо установить пакет bind из репозитория "CentALT" также на всяк случай предварительно удалив bind-utils и bind-libs:
--------------------------------------------------------------------------------
$ yum remove bind-utils bind-libs
$ yum --disablerepo="*" --enablerepo="CentALT" install bind bind-utils
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities, versionlock
Setting up Install Process
Loading mirror speeds from cached hostfile
http://centos.alt.ru/repository/centos/6/x86_64/repodata/repomd.xml: [Errno 14] Peer cert cannot be verified or peer cert invalid
Trying other mirror.
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 36:9.9.3-4.P2.el6 will be installed
--> Processing Dependency: libisccc.so.90()(64bit) for package: 36:bind-9.9.3-4.P2.el6.x86_64
--> Processing Dependency: liblwres.so.90()(64bit) for package: 36:bind-9.9.3-4.P2.el6.x86_64
--> Processing Dependency: libbind9.so.90()(64bit) for package: 36:bind-9.9.3-4.P2.el6.x86_64
--> Processing Dependency: libdns.so.99()(64bit) for package: 36:bind-9.9.3-4.P2.el6.x86_64
--> Processing Dependency: libisccfg.so.90()(64bit) for package: 36:bind-9.9.3-4.P2.el6.x86_64
--> Processing Dependency: libisc.so.95()(64bit) for package: 36:bind-9.9.3-4.P2.el6.x86_64
---> Package bind-utils.x86_64 36:9.9.3-4.P2.el6 will be installed
--> Running transaction check
---> Package bind-libs.x86_64 36:9.9.3-4.P2.el6 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
================================================================================
 Package           Arch          Version                   Repository      Size
================================================================================
Installing:
 bind              x86_64        36:9.9.3-4.P2.el6         CentALT        2.5 M
 bind-utils        x86_64        36:9.9.3-4.P2.el6         CentALT        179 k
Installing for dependencies:
 bind-libs         x86_64        36:9.9.3-4.P2.el6         CentALT        953 k
 
Transaction Summary
================================================================================
Install       3 Package(s)
 
Total download size: 3.7 M
Installed size: 9.1 M
Is this ok [y/N]: y
Downloading Packages:
http://centos.alt.ru/repository/centos/6/x86_64/bind-9.9.3-4.P2.el6.x86_64.rpm: [Errno 14] Peer cert cannot be verified or peer cert invalid
Trying other mirror.
http://centos.alt.ru/repository/centos/6/x86_64/bind-libs-9.9.3-4.P2.el6.x86_64.rpm: [Errno 14] Peer cert cannot be verified or peer cert invalid
Trying other mirror.
http://centos.alt.ru/repository/centos/6/x86_64/bind-utils-9.9.3-4.P2.el6.x86_64.rpm: [Errno 14] Peer cert cannot be verified or peer cert invalid
Trying other mirror.
 
Error Downloading Packages:
  36:bind-utils-9.9.3-4.P2.el6.x86_64: failure: bind-utils-9.9.3-4.P2.el6.x86_64.rpm from CentALT: [Errno 256] No more mirrors to try.
  36:bind-9.9.3-4.P2.el6.x86_64: failure: bind-9.9.3-4.P2.el6.x86_64.rpm from CentALT: [Errno 256] No more mirrors to try.
  36:bind-libs-9.9.3-4.P2.el6.x86_64: failure: bind-libs-9.9.3-4.P2.el6.x86_64.rpm from CentALT: [Errno 256] No more mirrors to try.

Установка закончилась ошибкой "Peer cert cannot be verified or peer cert invalid Trying other mirror." По ссылке: Why does yum fail with "[Errno 14] Peer cert cannot be verified or peer cert invalid"? - Red Hat Customer Portal - рекомендуется в файле настроек репозитория, в нашем случае это "vi /etc/yum.repos.d/centalt.repo", изменить mirrorlist= (либо baseurl=) с http:// на https:// - однако в нашем случае это не сработало. Содержимое нашего файла /etc/yum.repos.d/centalt.repo выглядело следующим образом:

[CentALT]
name=CentALT Packages for Enterprise Linux 6 - $basearch
baseurl=https://centos.alt.ru/repository/centos/6/$basearch/
enabled=0
gpgcheck=0
#priority=9

Открыв главную страницу centos.alt.ru на тот момент я обнаружил там совсем не репозиторий, а веб-страницу с заголовком "Welcome to VMware ESXi", что навело на мысль о том, что нужно искать зеркало CentALT репозитория, найдя которое я "допилил" /etc/yum.repos.d/centalt.repo до такой кондиции:

[CentALT]
name=CentALT Packages for Enterprise Linux 6 - $basearch
#baseurl=https://centos.alt.ru/repository/centos/6/$basearch/
baseurl=http://mirror.astpage.ru/centalt/repository/centos/6/$basearch/
enabled=0
gpgcheck=0
#priority=9

И всё отлично заработало и установилось, при этом версия "36:9.9.3-4.P2.el6" сменилась на "44:9.10.2-1.el6", а именно это нам и нужно:

$ yum --disablerepo="*" --enablerepo="CentALT" install bind bind-utils
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities, versionlock
Setting up Install Process
Loading mirror speeds from cached hostfile
CentALT                                                  |  951 B     00:00
CentALT/primary                                          | 104 kB     00:00
CentALT                                                                 319/319
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 44:9.10.2-1.el6 will be installed
--> Processing Dependency: bind-libs = 44:9.10.2-1.el6 for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: libbind9.so.140()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: libisccc.so.140()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: liblwres.so.141()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: libisccfg.so.140()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: libisc.so.148()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: libdns.so.160()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
--> Processing Dependency: libirs.so.141()(64bit) for package: 44:bind-9.10.2-1.el6.x86_64
---> Package bind-utils.x86_64 44:9.10.2-1.el6 will be installed
--> Running transaction check
---> Package bind-libs.x86_64 44:9.10.2-1.el6 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
================================================================================
 Package           Arch          Version                   Repository      Size
================================================================================
Installing:
 bind              x86_64        44:9.10.2-1.el6           CentALT        2.6 M
 bind-utils        x86_64        44:9.10.2-1.el6           CentALT        123 k
Installing for dependencies:
 bind-libs         x86_64        44:9.10.2-1.el6           CentALT        987 k
 
Transaction Summary
================================================================================
Install       3 Package(s)
 
Total download size: 3.7 M
Installed size: 9.2 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): bind-9.10.2-1.el6.x86_64.rpm                      | 2.6 MB     00:03
(2/3): bind-libs-9.10.2-1.el6.x86_64.rpm                 | 987 kB     00:01
(3/3): bind-utils-9.10.2-1.el6.x86_64.rpm                | 123 kB     00:00
--------------------------------------------------------------------------------
Total                                           643 kB/s | 3.7 MB     00:05
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 44:bind-libs-9.10.2-1.el6.x86_64                             1/3
  Installing : 44:bind-utils-9.10.2-1.el6.x86_64                            2/3
  Installing : 44:bind-9.10.2-1.el6.x86_64                                  3/3
  Verifying  : 44:bind-utils-9.10.2-1.el6.x86_64                            1/3
  Verifying  : 44:bind-libs-9.10.2-1.el6.x86_64                             2/3
  Verifying  : 44:bind-9.10.2-1.el6.x86_64                                  3/3
 
Installed:
  bind.x86_64 44:9.10.2-1.el6         bind-utils.x86_64 44:9.10.2-1.el6
 
Dependency Installed:
  bind-libs.x86_64 44:9.10.2-1.el6
 
Complete!

Проверить версию и "флаги" (опции) с которыми был собран BIND можно с помощью комманд:

$ named -v
BIND 9.10.2
$ named -V
BIND 9.10.2 <id:53e49fb5> built by make with '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-libtool' '--localstatedir=/var' '--enable-threads' '--enable-ipv6' '--with-pic' '--disable-static' '--disable-openssl-version-check' '--with-gssapi=yes' '--disable-isc-spnego' '--with-docbook-xsl=/usr/share/sgml/docbook/xsl-stylesheets' '--enable-fixed-rrset' '--enable-filter-aaaa' '--enable-rrl' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS= -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' 'CPPFLAGS= -DDIG_SIGCHASE'
compiled by GCC 4.4.7 20120313 (Red Hat 4.4.7-11)
compiled with OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
linked to OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
compiled with libxml2 version: 2.7.6
linked to libxml2 version: 20706

Наш только-что установленный ДНС сервер ещё не запущен и не добавлен в автозагрузку - проверим состояние и добавим его в автозагрузку:

$ service named status
rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
named is stopped
 
$ chkconfig --list|grep -i named
named           0:off   1:off   2:off    3:off    4:off    5:off    6:off
$ chkconfig named on
named           0:off   1:off   2:on    3:on    4:on    5:on    6:off

Базовая настройка ДНС сервера BIND

В данном примере мы будем настраивать на ДНС сервере BIND зону remoteshaman.com, потому в Вашем случае поменяете remoteshaman.com на своё доменное имя. Подправим /etc/named.conf до нужной кондиции предварительно сохранив его копию:

$ cp /etc/named.conf /etc/named.conf.bak
$ vi /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
 
options {
        listen-on port 53 { localhost; 93.170.128.114; };
        #listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        allow-transfer { none; };
        recursion no;
        version "Go away!";
 
        additional-from-auth no;
        additional-from-cache no;
 
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
 
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
 
        managed-keys-directory "/var/named/dynamic";
};
 
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
 
zone "." IN {
        type hint;
        file "named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
 
zone "remoteshaman.com" IN {
    type master;
    file "zone/remoteshaman.com.zone";
    allow-update { none; };
};

В конце основного файла конфигурации /etc/named.conf мы добавили секцию "zone "remoteshaman.com" IN {...}", в которой указали имя файла содержащего ресурсные ДНС записи о нашей зоне remoteshaman.com.

Обычно файлы зон сваливают прямо в каталог /var/named, что на мой взгляд как не эстетично, так и не практично - для зон мы создадим отдельный каталог /var/named/zone. Файл зоны "remoteshaman.com.zone" BIND будет искать в директории /var/named/zone, в которой мы его сейчас и создадим:

$ mkdir /var/named/zone
$ chown named:named /var/named/zone
$ chmod 0750 /var/named/zone
$ vi /var/named/zone/remoteshaman.com.zone
$ORIGIN remoteshaman.com.
$TTL 3d
 
@    IN    SOA    ns1.remoteshaman.com. www.remoteshaman.com.yandex.ru. (
        1458462568    ; serial
        1d            ; refresh after 1 day
        2h            ; retry after 2 hour
        4w            ; expire after 4 week
        1d            ; minimum TTL of 1 day
        )
 
@    86400    IN    NS    ns1.remoteshaman.com.
@    259200    IN    MX    10    mx.yandex.net.
@    3600    IN    SPF    "v=spf1 redirect=_spf.yandex.net"
@    259200    IN    TXT    google-site-verification=jr5WMEnS1hBd6ZgyT0HRwNpVbWMgDy9KgDdsbsse-Eo
 
remoteshaman.com.    259200    IN    A    93.170.128.114
ns1.remoteshaman.com.    259200    IN    A    93.170.128.114
www.remoteshaman.com.    259200    IN    CNAME    remoteshaman.com.

Проверяем файл нашей зоны и если всё "OK", то мы должны получить примерно такой вот результат:

$ named-checkzone remoteshaman.com /var/named/zone/remoteshaman.com.zone
zone remoteshaman.com/IN: loaded serial 1458462568
OK
$ service named start
$ service named status
version: 9.10.2 (Go away!) <id:53e49fb5>
boot time: Fri, 25 Mar 2016 05:28:17 GMT
last configured: Fri, 25 Mar 2016 06:30:11 GMT
CPUs found: 1
worker threads: 1
UDP listeners per interface: 1
number of zones: 9
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
named (pid  13289) is running...

Проверяем работу нашего ДНС сервера:

$ nslookup remoteshaman.com 93.170.128.114
Server:        93.170.128.114
Address:    93.170.128.114#53
 
Name:    remoteshaman.com
Address: 93.170.128.114

Если при "ресолве" мы получаем ошибку:

$ nslookup www.remoteshaman.com 93.170.128.114
Server:        93.170.128.114
Address:    93.170.128.114#53
 
** server can't find www.remoteshaman.com: NXDOMAIN

значит в конце CNAME записи забыли поставить точку.

Включаем DNSSEC

Для ключей у нас будет отдельный каталог /var/named/keys, в котором будут размещатся подкаталоги с именами зон:

$ mkdir -p /var/named/keys/remoteshaman.com
$ chown -R named:named /var/named/keys
$ chmod 0750 /var/named/keys /var/named/keys/remoteshaman.com

Так DNSSEC ключи для нашего домена remoteshaman.com будут расположены в директории /var/named/keys/remoteshaman.com - входим в него и создаём там DNSSEC ключи:

$ cd /var/named/keys/remoteshaman.com
$ dnssec-keygen -a RSASHA256 -b 1024 remoteshaman.com
Generating key pair...++++++...++++++
Kremoteshaman.com.+008+00756
$ ls
Kremoteshaman.com.+008+00756.key  Kremoteshaman.com.+008+00756.private
$ dnssec-keygen -a RSASHA256 -b 2048 -f KSK remoteshaman.com
Generating key pair...+++...+++
Kremoteshaman.com.+008+46435
$ ls
Kremoteshaman.com.+008+00756.key      Kremoteshaman.com.+008+46435.key
Kremoteshaman.com.+008+00756.private  Kremoteshaman.com.+008+46435.private
$ chmod 0640 /var/named/keys/remoteshaman.com/*
$ chown -R named:named /var/named/keys

Если создание ключей зависло более чем на 1 мин, значит нехватает так званой энтропии (случайных чисел) и нам ппонадобится установить пакет "rng-tools" и повторить попытку если она была прервана:

$ yum -y install rng-tools
 
$ service rngd start
Unable to open file: /dev/tpm0
can't open any entropy source
Maybe RNG device modules are not loaded
 
$ rngd -v
Unable to open file: /dev/tpm0
can't open any entropy source
Maybe RNG device modules are not loaded
 
$ vi /etc/sysconfig/rngd
# Add extra options here
EXTRAOPTIONS="-r /dev/urandom"
 
$ service rngd start
$ chkconfig rngd on

Всё что нам теперь осталось, так это слегка подшаманить секцию "zone" в /etc/named.conf и перезагрузить сервер с новой конфигурацией и зона будет подписана автоматически:

$ vi /etc/named.conf
options {
    ...
}
 
...
 
zone "example.com" IN {
    type master;
    file "zone/remoteshaman.com.zone";
    allow-update { none; };
    key-directory "keys/remoteshaman.com";
    inline-signing yes;
    auto-dnssec maintain;
};
 
$ rndc reload

После этого в каталоге /var/named/zone/ должны будут образоваться три дополнительных бинарных файла с раширениями .jbk, .signed и .jnl:

$ ls /var/named/zone/
remoteshaman.com.zone
remoteshaman.com.zone.jbk
remoteshaman.com.zone.signed
remoteshaman.com.zone.signed.jnl

Проверить успешность подписания зоны можно коммандой:

$ dig @93.170.128.114 remoteshaman.com +dnssec
 
; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @93.170.128.114 remoteshaman.com +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2937
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;remoteshaman.com.        IN    A
 
;; ANSWER SECTION:
remoteshaman.com.    259200    IN    A    93.170.128.114
remoteshaman.com.    259200    IN    RRSIG    A 8 2 259200 20160424061932 20160325051944 756 remoteshaman.com. CP8Enmo9+hCC4SwLj2T8Ejq7eJGdXQuO+CfXWWlxtwAWH9wmqUfGdgrH xBIz+varu2sKXgUn1iDQ2/3DY/LuLcrivqPMflTnkRNUuzBbwm4TGJ22 86WhWODVDqO8T6CEgyCGEhpKiu98heT+I4hWNvxOdY0lGUQQRCbKwsAS S58=

Либо коммандой:

$ dig @93.170.128.114 remoteshaman.com. DNSKEY +multiline +noall +answer
 
; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @93.170.128.114 remoteshaman.com. DNSKEY +multiline +noall +answer
; (1 server found)
;; global options: +cmd
remoteshaman.com.    259200 IN DNSKEY 256 3 8 (
                AwEAAdnGo5DvjZzhPBxTwYxq6kd+IeWONdZSCzahxR49
                bzT2y9BUVbdr1nV0mYyqG6oJ+HUR8tdlW9ayb+3qNYeR
                4T2CkpKdEZjxmJ2flhTc7LwBFVeAqa91FQSE+YRi0uEn
                +C//VWXMeZ9orCpotm3mb+KYWWt+CxgaND/Qk5xFE+y5
                ) ; ZSK; alg = RSASHA256; key id = 756
remoteshaman.com.    259200 IN DNSKEY 257 3 8 (
                AwEAAZsoe6EOeUXWfn3hnelwRVobfZzRLD3BShe5jaha
                sPshQoyhAtt8mjMQJrnsUEgDgpu3wUNA1FMQtqQ2g+s+
                1EXjm/2bao6wW06LclvypdPUYA9DTBbnnY9nv5LFSMjP
                B2cU1zmfJGalPrtbH1qy7UBZtv8uhNlr6+z8WmBnHBFR
                4u6VQs4v8kwQFsVI/VJrmn72Zw81xtFsKU988NJAV3fm
                cpIFHcs9ZnUSJJz/iTAgOaMfZ9ex9g/Q6/eIkmZxS2IY
                G+L/5ugHCuNZ+mm5pBMVQzHFdAfnJfDB9hu69d5lJ6uQ
                DGqSbyLz31c39QFUfePg8Omec/nYbc6ktIvl8Pc=
                ) ; KSK; alg = RSASHA256; key id = 46435

Если в секции "options {...}" конфига /etc/named.conf не указано "allow-transfer { none; };", то приведённая ниже комманда выдыаст нам список всех ДНС записей или же вернёт "; Transfer failed.":

$ dig @93.170.128.114 remoteshaman.com. AXFR +multiline +onesoa
 
; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @93.170.128.114 remoteshaman.com. AXFR +multiline +onesoa
; (1 server found)
;; global options: +cmd
; Transfer failed.

Отправка регистратору DS/KSK записи

DNSSEC подписание своей доменной зоны на своём или любом стороннем ДНС сервере не означает, что DNSSEC уже включен и полноценно работает. Последним шагом на пути к окончательной активации DNSSEC будет отправка DS/KSK (Delegation of Signing, Key Signing key) записи на ДНС сервера корневых зон, которая выполняется непосредственно через регистратора доменного имени ибо только регистратор домена имеет право доступа к ДНС серверам корневых доменных зон.

В большинстве случаев нам нужна именно KSK запись, которую мы пожем получить либо непосредственно из ключа соданного ранее коммандой "dnssec-keygen" с флагом "-f KSK":

$ less /var/named/keys/remoteshaman.com/Kremoteshaman.com.+008+46435.key
; This is a key-signing key, keyid 46435, for remoteshaman.com.
; Created: 20160324135802 (Thu Mar 24 16:58:02 2016)
; Publish: 20160324135802 (Thu Mar 24 16:58:02 2016)
; Activate: 20160324135802 (Thu Mar 24 16:58:02 2016)
remoteshaman.com. IN DNSKEY 257 3 8 AwEAAZsoe6EOeUXWfn3hnelwRVobfZzRLD3BShe5jahasPshQoyhAtt8 mjMQJrnsUEgDgpu3wUNA1FMQtqQ2g+s+1EXjm/2bao6wW06LclvypdPU YA9DTBbnnY9nv5LFSMjPB2cU1zmfJGalPrtbH1qy7UBZtv8uhNlr6+z8 WmBnHBFR4u6VQs4v8kwQFsVI/VJrmn72Zw81xtFsKU988NJAV3fmcpIF Hcs9ZnUSJJz/iTAgOaMfZ9ex9g/Q6/eIkmZxS2IYG+L/5ugHCuNZ+mm5 pBMVQzHFdAfnJfDB9hu69d5lJ6uQDGqSbyLz31c39QFUfePg8Omec/nY bc6ktIvl8Pc=

Либо выполнив ДНС запрос коммандой:

$ dig @93.170.128.114 remoteshaman.com. DNSKEY +multiline +noall +answer
 
; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @93.170.128.114 remoteshaman.com. DNSKEY +multiline +noall +answer
; (1 server found)
;; global options: +cmd
remoteshaman.com.    259200 IN DNSKEY 256 3 8 (
                AwEAAdnGo5DvjZzhPBxTwYxq6kd+IeWONdZSCzahxR49
                bzT2y9BUVbdr1nV0mYyqG6oJ+HUR8tdlW9ayb+3qNYeR
                4T2CkpKdEZjxmJ2flhTc7LwBFVeAqa91FQSE+YRi0uEn
                +C//VWXMeZ9orCpotm3mb+KYWWt+CxgaND/Qk5xFE+y5
                ) ; ZSK; alg = RSASHA256; key id = 756
remoteshaman.com.    259200 IN DNSKEY 257 3 8 (
                AwEAAZsoe6EOeUXWfn3hnelwRVobfZzRLD3BShe5jaha
                sPshQoyhAtt8mjMQJrnsUEgDgpu3wUNA1FMQtqQ2g+s+
                1EXjm/2bao6wW06LclvypdPUYA9DTBbnnY9nv5LFSMjP
                B2cU1zmfJGalPrtbH1qy7UBZtv8uhNlr6+z8WmBnHBFR
                4u6VQs4v8kwQFsVI/VJrmn72Zw81xtFsKU988NJAV3fm
                cpIFHcs9ZnUSJJz/iTAgOaMfZ9ex9g/Q6/eIkmZxS2IY
                G+L/5ugHCuNZ+mm5pBMVQzHFdAfnJfDB9hu69d5lJ6uQ
                DGqSbyLz31c39QFUfePg8Omec/nYbc6ktIvl8Pc=
                ) ; KSK; alg = RSASHA256; key id = 46435

Однако для полноты счастья, если регистратору вместо KSK потребуется именно запись формата DS, мы сгенерируем записи DS от созданного ранее KSK (Kremoteshaman.com.+008+46435.key) с использованием трёх различных алгоритмов хэширования (SHA-1 (type 1), SHA-256 (type 2) и SHA-384 (type 4) соответственно):

$ cd /var/named/keys/remoteshaman.com
$ dnssec-dsfromkey -a SHA-1 Kremoteshaman.com.+008+46435.key
remoteshaman.com. IN DS 46435 8 1 61225075311C0FE44FE421F64D5BA153525CFEBA
$ dnssec-dsfromkey -a SHA-256 Kremoteshaman.com.+008+46435.key
remoteshaman.com. IN DS 46435 8 2 82CDE38A69D69F0B9452ADD235629D6FD7E24DB13A252DD3B903576536CFB488
$ dnssec-dsfromkey -a SHA-384 Kremoteshaman.com.+008+46435.key
remoteshaman.com. IN DS 46435 8 4 A7D507EF058F0C8A03EE03FC4B64094EE271F4C3F2AF9EA7984C0F710002E79EE3F47E7F5297779BFED280D1A94FE171

В итоге, для завершения активации DNSSEC на нашем домене remoteshaman.com, мы должны отправить нешему регистратору доменных имён такую вот инфу:

Key id (ака Key tag)
46435
 
Algorithm
RSASHA256 (type 8)
 
Digest type 1 (SHA-1)
61225075311C0FE44FE421F64D5BA153525CFEBA
 
Digest type 2 (SHA-256)
82CDE38A69D69F0B9452ADD235629D6FD7E24DB13A252DD3B903576536CFB488
 
Digest type 4 (SHA-384)
A7D507EF058F0C8A03EE03FC4B64094EE271F4C3F2AF9EA7984C0F710002E79EE3F47E7F5297779BFED280D1A94FE171
 
DNSKEY (flags 257, KSK)
AwEAAZsoe6EOeUXWfn3hnelwRVobfZzRLD3BShe5jahasPshQoyhAtt8mjMQJrnsUEgDgpu3wUNA1FMQtqQ2g+s+1EXjm/2bao6wW06LclvypdPUYA9DTBbnnY9nv5LFSMjPB2cU1zmfJGalPrtbH1qy7UBZtv8uhNlr6+z8WmBnHBFR4u6VQs4v8kwQFsVI/VJrmn72Zw81xtFsKU988NJAV3fmcpIFHcs9ZnUSJJz/iTAgOaMfZ9ex9g/Q6/eIkmZxS2IYG+L/5ugHCuNZ+mm5pBMVQzHFdAfnJfDB9hu69d5lJ6uQDGqSbyLz31c39QFUfePg8Omec/nYbc6ktIvl8Pc=

Для справки

Таблица номеров алгоритмов используемых при подписании зоны:

  1. RSA/MD5 (RSAMD5)
  2. Diffie-Hellman (DH)
  3. DSA/SHA1 (DSA)
  4. - Reserved
  5. RSA/SHA-1 (RSASHA1)
  6. DSA-NSEC3-SHA1
  7. RSASHA1-NSEC3-SHA1
  8. RSA/SHA-256 (RSASHA256)
  9. - Reserved
  10. RSA/SHA-512 (RSASHA512)
  11. - Reserved
  12. ГОСТ Р 34.10-2001 (ECC-GOST)
  13. ECDSA Curve P-256 with SHA-256 (ECDSAP256SHA256)
  14. ECDSA Curve P-384 with SHA-384 (ECDSAP384SHA384)

DNSSEC Digest type Number

  1. SHA-1
  2. SHA-256
  3. ---
  4. SHA-384

После того как DS (формируется из KSK) была успешно добавлена регистратором на корневые ДНС сервера, в нашем случае корневой зоны .com, можем дополнительно проверить работоспособность DNSSEC на домене remoteshaman.com с помощью плагина DNSSEC/TLSA Validator для браузера Mizilla Firefox (Pale Moon or Iceweasel in Unix-like).

ПРОБЛЕМЫ?

dns_dnssec_findmatchingkeys: error reading key file .private: permission denied

Проблемы доступа к файлам ключей:

$ rndc reload
$ tail -f /var/log/messages
...
Mar 25 09:01:46 remotehelp named[13289]: received control channel command 'reloa
d'
Mar 25 09:01:46 remotehelp named[13289]: loading configuration from '/etc/named.conf'
Mar 25 09:01:46 remotehelp named[13289]: reading built-in trusted keys from file '/etc/named.iscdlv.key'
Mar 25 09:01:46 remotehelp named[13289]: using default UDP/IPv4 port range: [1024, 65535]
Mar 25 09:01:46 remotehelp named[13289]: using default UDP/IPv6 port range: [1024, 65535]
Mar 25 09:01:46 remotehelp named[13289]: sizing zone task pool based on 8 zones
Mar 25 09:01:46 remotehelp named[13289]: using built-in DLV key for view _default
Mar 25 09:01:46 remotehelp named[13289]: configuring command channel from '/etc/rndc.key'
Mar 25 09:01:46 remotehelp named[13289]: configuring command channel from '/etc/rndc.key'
Mar 25 09:01:46 remotehelp named[13289]: couldn't add command channel ::1#953: address not available
Mar 25 09:01:46 remotehelp named[13289]: the working directory is not writable
Mar 25 09:01:46 remotehelp named[13289]: reloading configuration succeeded
Mar 25 09:01:46 remotehelp named[13289]: reloading zones succeeded
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'dlv.isc.
org/DNSKEY/IN': 2001:500:60::29#53
Mar 25 09:01:46 remotehelp named[13289]: all zones loaded
Mar 25 09:01:46 remotehelp named[13289]: running
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'ns.isc.afilias-nst.info/A/IN': 2a01:8840:9::1#53
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'ns.isc.afilias-nst.info/AAAA/IN': 2a01:8840:9::1#53
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'ns2.isc.ultradns.net/A/IN': 2610:a1:1017::e8#53
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'ns2.isc.ultradns.net/AAAA/IN': 2610:a1:1017::e8#53
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'ns1.isc.ultradns.net/A/IN': 2610:a1:1017::e8#53
Mar 25 09:01:46 remotehelp named[13289]: network unreachable resolving 'ns1.isc.ultradns.net/AAAA/IN': 2610:a1:1017::e8#53
Mar 25 09:01:46 remotehelp named[13289]: zone remoteshaman.com/IN (signed): reconfiguring zone keys
Mar 25 09:01:46 remotehelp named[13289]: dns_dnssec_findmatchingkeys: error reading key file Kremoteshaman.com.+008+00756.private: permission denied
Mar 25 09:01:46 remotehelp named[13289]: dns_dnssec_findmatchingkeys: error reading key file Kremoteshaman.com.+008+46435.private: permission denied
Mar 25 09:01:46 remotehelp named[13289]: zone remoteshaman.com/IN (signed): next
 key event: 25-Mar-2016 10:01:46.894

Пользователь "named" должен иметь права на доступ к файлам ключей:

$ chown -R named:named /var/named/keys
$ chmod 0750 /var/named/keys /var/named/keys/remoteshaman.com
$ chmod 0640 /var/named/keys/remoteshaman.com/*
$ rndc reload
$ tail -f /var/log/messages
...
Mar 25 09:13:04 remotehelp named[13289]: zone remoteshaman.com/IN (signed): reconfiguring zone keys
Mar 25 09:13:04 remotehelp named[13289]: remoteshaman.com.zone.signed.jnl: create: permission denied
Mar 25 09:13:04 remotehelp named[13289]: zone remoteshaman.com/IN (signed): zone_rekey:dns_journal_open -> unexpected error
.signed.jnl: create: permission denied

Автоматическая DNSSEC подпись нашей зоны не сработала из-за запрета создания файлов или каталогов пользователем "named" в каталоге "/var/named":

$ ls -la /var
...
drwxr-x---   7 root   named  4096 Mar 25 09:18 named

Создаём отдельный каталог "/var/named/zone" и даём пользователю "named" право на запись в него, а также перемещаем в него файл нашей зоны, ну, и не забываем изменить путь к файлу в /etc/named.conf:

$ cd /var/named
$ mkdir ./zone
$ chown -R named:named ./zone
$ chmod 0750 ./zone
$ mv remoteshaman.com.zone ./zone
$ vi /etc/named.conf
$ rndc reload
 
$ tail -f /var/log/messages
...
Mar 25 09:19:44 remotehelp named[13289]: zone remoteshaman.com/IN (signed): receive_secure_serial: unchanged
Mar 25 09:19:44 remotehelp named[13289]: zone remoteshaman.com/IN (signed): reconfiguring zone keys
Mar 25 09:19:44 remotehelp named[13289]: zone remoteshaman.com/IN (signed): next key event: 25-Mar-2016 10:19:44.035
 
$ ls -la /var/named/zone
total 36
drwxr-xr-x 2 named named  4096 Mar 25 09:19 .
drwxr-x--- 7 root  named  4096 Mar 25 09:18 ..
-rw-r--r-- 1 root  named  1178 Mar 20 13:30 remoteshaman.com.zone
-rw-r--r-- 1 named named   512 Mar 25 09:19 remoteshaman.com.zone.jbk
-rw-r--r-- 1 named named  2577 Mar 25 09:19 remoteshaman.com.zone.signed
-rw-r--r-- 1 named named 12583 Mar 25 09:19 remoteshaman.com.zone.signed.jnl
 
$ dig @93.170.128.114 remoteshaman.com. DNSKEY +multiline +noall +answer
 
; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @93.170.128.114 remoteshaman.com. DNSKEY +multiline +noall +answer
; (1 server found)
;; global options: +cmd
remoteshaman.com.    259200 IN DNSKEY 256 3 8 (
                AwEAAdnGo5DvjZzhPBxTwYxq6kd+IeWONdZSCzahxR49
                bzT2y9BUVbdr1nV0mYyqG6oJ+HUR8tdlW9ayb+3qNYeR
                4T2CkpKdEZjxmJ2flhTc7LwBFVeAqa91FQSE+YRi0uEn
                +C//VWXMeZ9orCpotm3mb+KYWWt+CxgaND/Qk5xFE+y5
                ) ; ZSK; alg = RSASHA256; key id = 756
remoteshaman.com.    259200 IN DNSKEY 257 3 8 (
                AwEAAZsoe6EOeUXWfn3hnelwRVobfZzRLD3BShe5jaha
                sPshQoyhAtt8mjMQJrnsUEgDgpu3wUNA1FMQtqQ2g+s+
                1EXjm/2bao6wW06LclvypdPUYA9DTBbnnY9nv5LFSMjP
                B2cU1zmfJGalPrtbH1qy7UBZtv8uhNlr6+z8WmBnHBFR
                4u6VQs4v8kwQFsVI/VJrmn72Zw81xtFsKU988NJAV3fm
                cpIFHcs9ZnUSJJz/iTAgOaMfZ9ex9g/Q6/eIkmZxS2IY
                G+L/5ugHCuNZ+mm5pBMVQzHFdAfnJfDB9hu69d5lJ6uQ
                DGqSbyLz31c39QFUfePg8Omec/nYbc6ktIvl8Pc=
                ) ; KSK; alg = RSASHA256; key id = 46435

Подпись прошла успешно.

Рекомендуемый контент



Добавить комментарий


Защитный код
Обновить

4 megabytes