Вопрос или проблема
Я наткнулся на настройку 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
отсутствуют.
-
dnssec-validation yes; – этот параметр активирует проверку DNSSEC для ответов, которые поступают на ваш сервер. Это значит, что если ваш сервер получает ответ с поддержкой DNSSEC, он будет проверять подписи и кешировать только те ответы, которые прошли проверку.
-
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-сервера. Если будут какие-то вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться за поддержкой.