BIND9, DNS · 3 min read · Oct 28, 2025
Как исправить BIND9 от отравления кэша DNS на Debian Etch
Как исправить BIND9 от отравления кэша DNS на Debian Etch
Версия 1.0
Автор: Фалко Тимме
Эта статья объясняет, как вы можете исправить сервер имен BIND9 на системе Debian Etch, чтобы он больше не был уязвим к отравлению кэша DNS.
Этот документ предоставляется без каких-либо гарантий! Я не даю никаких гарантий, что это сработает для вас!
1 Проверка уязвимости BIND
Запустите следующую команду против вашего сервера имен, чтобы узнать, уязвим ли он (замените ns1.example.com на адрес вашего сервера имен):
dig +short @ns1.example.com porttest.dns-oarc.net TXT mh1:~# dig +short @ns1.example.com porttest.dns-oarc.net TXT
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
“1.2.3.4 is POOR: 26 запросов за 4.4 секунды с 1 порта со стандартным отклонением 0.00”
mh1:~#
POOR указывает на то, что BIND уязвим. В этом случае вы должны исправить BIND.
Если вы вообще не получаете ответа, это означает, что ваш DNS-сервер не является рекурсивным разрешателем, что означает, что он не отвечает на запросы для доменов, для которых он не является авторитетным. В этом случае вы не уязвимы к отравлению кэша, но я все же настоятельно советую обновить BIND!
2 Исправление BIND
Это не столько исправление, сколько обновление. Просто выполните
apt-get install bind9 bind9-hostЭто установит обновленные пакеты BIND из репозиториев Debian.
После этого откройте /etc/bind/named.conf и измените раздел options. Если вам не нужен рекурсивный разрешатель (т.е. если ваш сервер имен должен отвечать только на запросы для доменов, за которые он отвечает), добавьте allow-recursion { none; };. Таким образом, вы отключите кэширование для других доменов. Вторую строку, которую вы должны добавить, это dnssec-enable yes; - это заставляет BIND отвечать на запросы на случайных портах, которые труднее угадать хакерам (помните ответ на нашу команду dig в главе 1: […]26 запросов за 4.4 секунды с 1 порта[…] - BIND отвечал только на одном порту…).
Исправление: Я только что получил следующее письмо от Алана Клегга:
Добрый день! Я только что прочитал вашу статью на: https://www.howtoforge.com/how-to-patch-bind-to-avoid-cache-poisoning-debian-etch и у меня есть несколько комментариев. Во-первых, спасибо за написание этого. Нам нужно, чтобы как можно больше людей исправили эту проблему. Во-вторых, есть небольшая ошибка, которую следует исправить. Вы утверждаете: “Вторую строку, которую вы должны добавить, это dnssec-enable yes; - это заставляет BIND отвечать на запросы на случайных портах, которые труднее угадать хакерам” На самом деле, эта строка включает сервер для ответа с записями DNSSEC, когда бит “DO” (DNSSEC OK) установлен в задаваемом вопросе. То, что вы хотите, чтобы люди искали, это утверждение вроде: query-source […] port XX; Где XX - это фиксированный номер порта, на который должны отправляться запросы с этой системы. Это отменяет все, что новые версии BIND делают для рандомизации порта источника UDP. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь отправить электронное письмо. Алан Клегг
Консорциум интернет-систем (ISC)
Обучение и поддержка
vi /etc/bind/named.conf| [...] options { pid-file "/var/run/bind/run/named.pid"; directory "/etc/bind"; auth-nxdomain no; allow-recursion { none; }; dnssec-enable yes; /* * Если между вами и серверами имен, с которыми вы хотите * общаться, есть брандмауэр, вам может потребоваться раскомментировать директиву query-source * ниже. Предыдущие версии BIND всегда задавали * вопросы, используя порт 53, но BIND 8.1 по умолчанию использует непривилегированный * порт. */ // query-source address * port 53; }; [...] |
Перезапустите BIND после этого:
/etc/init.d/bind9 restart(Если вы используете ISPConfig, ваши изменения будут перезаписаны ISPConfig. Чтобы предотвратить это, мы берем файл шаблона named.conf /root/ispconfig/isp/conf/named.conf.master, изменяем его, как показано выше, и сохраняем измененный шаблон в каталоге /root/ispconfig/isp/conf/customized_templates => /root/ispconfig/isp/conf/customized_templates/named.conf.master. Пожалуйста, также измените /etc/bind/named.conf, как показано выше, в дополнение к этому.)
3 Повторная проверка BIND
Теперь мы снова запускаем запрос из главы 1:
dig +short @ns1.example.com porttest.dns-oarc.net TXTЕсли все прошло хорошо, теперь должно отображаться GOOD вместо POOR, и должно использоваться более чем один порт:
mh1:~# dig +short @ns1.example.com porttest.dns-oarc.net TXT
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
“1.2.3.4 is GOOD: 26 запросов за 4.4 секунды с 26 портов со стандартным отклонением 20195.32”
mh1:~#
Поздравляю, вы только что исправили BIND!
Вы также можете запустить команду dig против серверов имен вашего провайдера, чтобы узнать, уязвимы ли их серверы имен. Если да, вы должны настоятельно призвать вашего провайдера обновить их серверы имен!
Get new posts in your inbox
No spam. Unsubscribe anytime.