Назад | Перейти на главную страницу

Как ограничить доменное имя для обратных обновлений DNS с помощью bind и nsupdate?

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

named.conf

options {
    listen-on port 53 { 127.0.0.1; 10.9.10.10; };
    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     { localhost; 10.0.0.0/8; };
    recursion yes;
    allow-recursion { 10.0.0.0/8; };

    dnssec-enable yes;
    dnssec-validation no;
    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 "mydomain.com.keys";
zone "mydomain.com" IN {
    type master;
    file "dynamic/forward.mydomain.com.zone";
    update-policy {
            grant *.mydomain.com self *.mydomain.com A TXT;
    };
};

zone "9.10.in-addr.arpa" IN {
    type master;
    file "dynamic/reverse.mydomain.com.zone";
    update-policy {
            grant * tcp-self * PTR;
    };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

mydomain.com.keys

key myserver1.mydomain.com. {
    algorithm HMAC-SHA512;
    secret "blahblahblah";
};
key myserver2.mydomain.com. {
    algorithm HMAC-SHA512;
    secret "blahblahblah";
};

Что работает правильно

В mydomain.com Правильная конфигурация зоны не позволяет серверам обновлять записи DNS, которые им не принадлежат:

[root@myserver1 ~]# nsupdate -v -k Kmyserver1.mydomain.com.+165+55228.key
> server dns1.mydomain.com
> zone mydomain.com
> update add myserver2.mydomain.com 86400 A 10.9.10.50
> show
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;mydomain.com.                        IN      SOA

;; UPDATE SECTION:
myserver2.mydomain.com. 86400   IN      A       10.9.10.50

> send
update failed: REFUSED

Это исполнение достигается с помощью ключа, указанного в nsupdate команда. Nsupdate извлекает секрет из Kmyserver1.mydomain.com.+165+55228.key файл и отправляет его в Bind. Bind находит соответствующий секрет в mydomain.com.keys и проверяет имя ключа на соответствие имени домена, которое вы пытаетесь обновить.

Что не работает правильно

А вот настройки обратной зоны (9.10.in-addr.arpa), похоже, не ограничивают обновления на основе имени ключа, которое использовалось для выполнения обратного обновления DNS.

[root@myserver1 ~]# nsupdate -v -k Kmyserver1.mydomain.com.+165+55228.key
> server dns1.mydomain.com
> zone 9.10.in-addr.arpa
> update add 50.10.9.10.in-addr.arpa 86400 IN PTR myserver2.mydomain.com
> show
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;9.10.in-addr.arpa.             IN      SOA

;; UPDATE SECTION:
50.10.9.10.in-addr.arpa. 86400 IN     PTR     myserver2.mydomain.com.

> send
> ^C
[root@myserver1 ~]# nslookup 10.9.10.50
Server:         10.9.10.10
Address:        10.9.10.10#53

50.10.9.10.in-addr.arpa       name = myserver1.mydomain.com.
50.10.9.10.in-addr.arpa       name = myserver2.mydomain.com.

Кроме того, я попытался настроить политику обновления обратной зоны, чтобы разрешать обновления только с определенных адресов (а не *), но это не повлияло на проблему.

Что я пытаюсь сделать

Я хотел бы настроить политику обновления для 9.10.in-addr.arpa зона, так что приведенный выше пример будет отклонен. Я хочу, чтобы серверы могли обновлять обратный DNS для своего собственного IP-адреса и доменного имени. Я просмотрел различные сайты и, похоже, не нашел никакой информации о том, как или если это вообще возможно, настроить политику обновления для достижения этого.

Я использую версию Bind BIND 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6