Включение DNSSEC и внешнее разрешение

Вопрос или проблема

Я наткнулся на настройку Bind, в которой установлено только одно значение DNSSEC, как показано ниже:

dnssec-validation yes;  

и ключи в named.conf.options объявлены следующим образом:

include "/etc/bind.keys"

Однако остальная часть:

dnssec-enable yes;
dnssec-lookaside auto;

не установлена нигде.

Теперь вопрос: работает ли эта настройка вообще? Я не вижу никаких ошибок. Был бы признателен за любые комментарии / предложения / советы. Заранее большое спасибо!

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

Рассмотрим следующую конфигурацию (которую я использую в производственной среде)

options {
        listen-on port 53 { any; };
        max-cache-size 128M;
        interface-interval 0;
        notify explicit;
        allow-transfer { none; };
        allow-update { none; };
        allow-recursion { none; };
        forwarders {
            2620:119:35::35;
            2620:119:53::53;
            208.67.222.222;
            208.67.220.220;
            2001:4860:4860::8888;
            2001:4860:4860::8844;
            8.8.8.8;
            8.8.4.4;
        };
        //dig -t txt -c chaos VERSION.BIND @<dns.server.com>
        version "Microsoft Windobe 2008 DNS Server. Et je t'emmerde (-_-)";
        auth-nxdomain no;    # love RFC1035
        dnssec-enable yes;
        dnssec-validation auto;
};

acl internal {
    127.0.0.0/8;
    ::1/128;
    10.0.0.0/8;
    fd9f::/64;
};

acl external {
    any;
};

view "internal" {
    match-clients {
        internal;
    };
    allow-recursion {
        any;
    };
};

view "external" {
    match-clients {
        any;
    };
    recursion no;
    zone "127-0-0-1.fr" {
        type master;
        file "/var/lib/bind/127-0-0-1.fr.db";
        key-directory "/var/lib/bind";
        auto-dnssec maintain;
        inline-signing yes;
    };
};

Этот сервер BIND9 выполняет функции авторитетного DNS-сервера для домена 127-0-0-1.fr и рекурсивного DNS-сервера для внутренних (частных) клиентов.

Давайте попробуем разрешить домен с включенным DNSSEC (полная цепочка в порядке) в качестве внутреннего клиента с помощью dig @fd9f::10:0:0:2 www.isc.org

; <<>> DiG 9.14.4 <<>> @fd9f::10:0:0:2 isc.org
; (1 server found)
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49658
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: d1c6f836121beafdedbc5fae5d5e281dc5c58851413f4fb2 (good)
;; QUESTION SECTION:
;isc.org.                       IN      A

;; ANSWER SECTION:
isc.org.                59      IN      A       149.20.1.66

;; Время запроса: 136 мс
;; СЕРВЕР: fd9f::10:0:0:2#53(fd9f::10:0:0:2)
;; ВРЕМЯ: Чт, 22 авг. 2019 07:29:01 CEST
;; РАЗМЕР СООБЩЕНИЯ, получен: 80

Обратите внимание на флаг ad, который означает Аутентифицированные данные. Проверьте с помощью delv @fd9f::10:0:0:2 www.isc.org

;; fetch: isc.org/A
;; fetch: isc.org/DNSKEY
;; fetch: isc.org/DS
;; fetch: org/DNSKEY
;; fetch: org/DS
;; fetch: ./DNSKEY
; полностью проверено
isc.org.                59 IN A 149.20.1.66
isc.org.                59 IN RRSIG A 5 2 60 (
                                20190904145623 20190805140610 28347 isc.org.
                                ty+0um1WeOQvOIDMfA0w4spR4qNwm4Pj581KA9xXMFro
                                0+N0bKDAcDJ3O8EpdEHzjejXU0GqrJvIyml7fpvmbcN4
                                b2QWr/INjW8e+MzFz49oajGF0G1Oi6Qzp/XIljibsSig
                                FUTZsnp5yL77PF2eJEc4CDlfgJOCGsYnWTEaNuI= )
isc.org.                59 IN RRSIG A 13 2 60 (
                                20190904145623 20190805140610 27566 isc.org.
                                QiL6Al0ycqO/Fxl4OUR017ck/Y6xnRG4qt/pRvzG1H/y
                                +xyt9EU3pvNqbus5mQYF7ruH6BFyQg5w94bnnjivGg== )

Теперь тот же самый проверка для домена без включенного DNSSEC dig @fd9f::10:0:0:2 dnssec-failed.org

; <<>> DiG 9.14.4 <<>> @fd9f::10:0:0:2 dnssec-failed.org
; (1 server found)
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 21410
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 758deba64c4f30ba6ac402da5d5e28d3572fa9aa192352cd (good)
;; QUESTION SECTION:
;dnssec-failed.org.             IN      A

;; Время запроса: 4298 мс
;; СЕРВЕР: fd9f::10:0:0:2#53(fd9f::10:0:0:2)
;; ВРЕМЯ: Чт, 22 авг. 2019 07:32:03 CEST
;; РАЗМЕР СООБЩЕНИЯ, получен: 74

как вы можете видеть, разрешение не удалось с SERVFAIL и логи bind показывают

bind             | 22-Aug-2019 04:17:09.845 client @0x55b0a804ea80 fd9f::1#49348 (www.dnssec-failed.org): view internal: query: www.dnssec-failed.org IN A +E(0)K (fd9f::10:0:0:2)
bind             | 22-Aug-2019 04:17:09.938 view internal: validating www.dnssec-failed.org/A: bad cache hit (dnssec-failed.org/DNSKEY)
bind             | 22-Aug-2019 04:17:09.938 broken trust chain resolving 'www.dnssec-failed.org/A/IN': 2001:4860:4860::8888#53
bind             | 22-Aug-2019 04:17:09.938 client @0x55b0a804ea80 fd9f::1#49348 (www.dnssec-failed.org): view internal: query failed (broken trust chain) for www.dnssec-failed.org/IN/A at query.c:6786

Но если я принудительно разрешу с помощью dig @fd9f::10:0:0:2 dnssec-failed.org +cd, я смогу получить ответ, но без флага do ответ не подписан.

Теперь давайте проведем некоторую проверку на моем домене 127-0-0-1.fr снаружи с помощью delv @2001:4860:4860::8888 www.127-0-0-1.fr +rtrace +multiline

;; fetch: www.127-0-0-1.fr/A
;; fetch: 127-0-0-1.fr/DNSKEY
;; fetch: 127-0-0-1.fr/DS
;; fetch: fr/DNSKEY
;; fetch: fr/DS
;; fetch: ./DNSKEY
; полностью проверено
www.127-0-0-1.fr.       3599 IN A 164.132.222.187
www.127-0-0-1.fr.       3599 IN RRSIG A 7 2 3600 (
                                20190914021052 20190815015938 64469 127-0-0-1.fr.
                                aaQN/x+ZEfV1Vgp78QGdCEByau22cmt61pQ+7c+VdiUh
                                gmOy0+sPHcJZT6aq6FKRLMc+I76R/ZrzAnCK7mr96vXb
                                SCyiIVYGMva9lsl95zi4DK5FxacekonBkwB/l/upBhxb
                                Iiw+l3AZ4J19I7nQgGCSxj7vWqtQD1sb8jue/fw= )

И последняя проверка с dig @2001:4860:4860::8888 www.127-0-0-1.fr

; <<>> DiG 9.14.4 <<>> @2001:4860:4860::8888 www.127-0-0-1.fr
; (1 server found)
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45032
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.127-0-0-1.fr.              IN      A

;; ANSWER SECTION:
www.127-0-0-1.fr.       3536    IN      A       164.132.222.187

;; AUTHORITY SECTION:
127-0-0-1.fr.           3536    IN      NS      brown-sugar.127-0-0-1.fr.
127-0-0-1.fr.           3536    IN      NS      black-pearl.127-0-0-1.fr.

;; Время запроса: 10 мс
;; СЕРВЕР: 2001:4860:4860::8888#53(2001:4860:4860::8888)
;; ВРЕМЯ: Чт, 22 авг. 2019 06:23:52 CEST
;; РАЗМЕР СООБЩЕНИЯ, получен: 113

Показывая флаг ad, который означает Аутентифицированные данные. Вы можете проверить то же самое с помощью веб-инструмента, такого как dnssec-analyzer

Ответ или решение

Включение DNSSEC и использование Lookaside

DNSSEC (Domain Name System Security Extensions) — это набор расширений к протоколу DNS, который обеспечивает способ аутентификации данных и защиту от атак типа "человек посередине". Ваша конфигурация BIND, как было описано, вызывает определенные вопросы, особенно в отношении параметров dnssec-validation, dnssec-enable и dnssec-lookaside. Давайте подробно рассмотрим их.

Текущая Конфигурация

Вы предоставили следующее значение в конфигурационном файле BIND:

dnssec-validation yes;  
include "/etc/bind.keys"

При этом значения dnssec-enable и dnssec-lookaside отсутствуют.

  1. dnssec-validation yes; – этот параметр активирует проверку DNSSEC для ответов, которые поступают на ваш сервер. Это значит, что если ваш сервер получает ответ с поддержкой DNSSEC, он будет проверять подписи и кешировать только те ответы, которые прошли проверку.

  2. include "/etc/bind.keys"; – этот параметр включает файл с ключами DNSSEC, который может быть использован для валидации DNS-записей.

Работоспособность Конфигурации

Ваша конфигурация не является полным методом для поддержки DNSSEC на всех уровнях. Установка только dnssec-validation без явного указания dnssec-enable и dnssec-lookaside может привести к неполной функциональности при работе с доменами, которые используют DNSSEC.

Рекомендации по настройке

Чтобы ваша конфигурация работала по всем правилам:

  • Добавьте dnssec-enable yes; в конфигурацию. Этот параметр активирует полное использование функций, связанных с DNSSEC, на вашем сервере.

  • Установите dnssec-lookaside auto;. Это разрешит вашему серверу использовать внешние службы для проверки данных, если они недоступны для авторитетных DNS-серверов. Это особенно полезно в случаях, когда ваш сервер работает как рекурсивный DNS-сервер.

Пример Полной Настройки

Вот пример корректной настройки, которая включает все необходимые параметры:

options {
    listen-on port 53 { any; };
    dnssec-enable yes;
    dnssec-validation auto;
    dnssec-lookaside auto;
    // другие настройки...
    include "/etc/bind.keys";
};

Тестирование и Результаты

На основании предоставленного вами тестирования с использованием dig и delv, видно, что ваш сервер может обрабатывать DNS-запросы, но только для тех, которые включают аутентификацию DNSSEC. Например, сообщения с флагом ad (Authenticated Data) показывают успешную валидацию, в то время как запросы к недоступным DNSSEC доменам приводят к ошибкам с SERVFAIL.

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

Заключение

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

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

Капча загружается...