Безопасность · 3 min read · Oct 27, 2025

Уязвимость BIND 9 и решение - Обновите BIND, чтобы избежать отравления кэша (Fedora/CentOS)

Уязвимость BIND 9 и решение - Обновите BIND, чтобы избежать отравления кэша (Fedora/CentOS)

Я уверен, что большинство из вас слышали об уязвимости в BIND. Дэн Каминский в начале этого месяца объявил о массовой проблеме с DNS, которая может позволить злоумышленникам скомпрометировать любой сервер имен - клиентов тоже.

Я подумал, что поделюсь с вами одним из самых быстрых решений, которое администраторы систем, работающие с BIND 9, могут использовать, чтобы помочь решить эту уязвимость, если их системы уязвимы.

После 3 дней тестирования и экспериментов с моими DNS-серверами я обнаружил что-то, что, похоже, решило мою проблему, и поэтому решил поделиться этим с вами.

Я не уверен, действительно ли это решило проблему, хотя это сработало для меня, так как результаты тестов отличные. Но ваши предложения и комментарии приветствуются.

Мое открытие, каким бы простым оно ни казалось, применимо только к тем, кто работает с BIND 9 на Centos 4 или 5 и системах Fedora core и выше… Я тестировал на всех этих машинах в своем офисе.

Давайте начнем… хорошо?

Предварительные условия и предположения

  • Ваш брандмауэр (iptables NAT/PAT или PIX) должен иметь открытый порт 53 таким образом, чтобы он позволял случайный выбор порта.
  • Вы должны использовать BIND 9 на Centos 4 или 5 или любой системе Fedora core.
  • BIND должен работать в режиме chroot, хотя это не является обязательным, но является лучшей практикой.
  • В ваших файлах /etc/named/named.conf ИЛИ /etc/named.conf…. Необходимо отключить рекурсивные запросы и также добавить acl, чтобы разрешить только своим сетям выполнять рекурсивные запросы. С этим системный администратор снизит шансы на отравление кэша до своих собственных известных сетей.
acl "mynetworks" {
         127/8;  172.16.0.0/12;  10.0.0.0/8;  192.168.0.0/16
view "internal" {
         match-clients { mynetwork; };
         allow-query { mynetwork; };
         allow-recursion { mynetwork; };
         match-recursive-only yes;
view "external" {
         match-clients { any; };
         allow-query { any; };
         allow-recursion { none; };
         match-recursive-only no;

А теперь исправим уязвимость BIND

Первый шаг - проверить, уязвима ли ваша система… выполнив команды ниже, заменив ns1.youdomain.co.tz на TLD или ccTLD вашей организации.

dig +short @ns1.youdomain.co.tz 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.
“192.168.1.3 is POOR: 26 queries in 20.0 seconds from 1 ports with std dev 0.00”

POOR —–> определенно указывает на то, что сервер имен или система, о которой идет речь, уязвима, и, конечно, программное обеспечение BIND также устарело и нуждается в обновлении…

Решение

Для тех, кто использует системы CentOS ИЛИ Fedora….. можно использовать yum для обновления систем. Разработчики CentOS 5 уже выпустили патч для программного обеспечения BIND, и текущая версия: bind-9.3.4-6.0.2.P1.el5_2. P1 указывает на то, что пакет является обновленным.

На моих системах после обновления я получил следующий результат..

rpm -q bind

bind-9.3.4-6.0.2.P1.el5_2 —-> если ваша версия bind не обновлена.. тогда обновите ее.

Необходимо сделать следующее, чтобы получить последнее программное обеспечение и патч.

yum update bind bind-chroot -y

Необходимо отредактировать файл named.conf и добавить следующее. Сохраните и перезагрузите BIND.

 vi /etc/named.conf 
options {
         directory "/var/named";
         allow-transfer {192.168.1.4 ;};
         query-source   address * port 53; ##КОММЕНТАРИЙ или УДАЛИТЕ ЭТУ СТРОКУ.

Это позволит случайный выбор порта. Делайте это только в том случае, если этот параметр включен в разделе options в вашем файле named.conf.

         dnssec-enable yes;                        ## ДОБАВЬТЕ ЭТУ ОПЦИЮ ДЛЯ ВКЛЮЧЕНИЯ DNS-SEC.

Вышеуказанная строка, когда добавлена в ваш файл named.conf, включит DNS-SEC. Продолжайте и настройте DNS-SEC, но помните, что DNS-SEC не является окончательным решением этой уязвимости. **

Перезагрузите или перезапустите BIND.

/etc/init.d/named reload

Затем протестируйте снова, чтобы увидеть, получите ли вы лучший результат.

dig +short @ns1.youdomain.co.tz 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.
“192.168.1.3 is GOOD: 26 queries in 19.6 seconds from 26 ports with std dev 16515.27”

GOOD указывает на то, что сервер имен, о котором идет речь, по адресу 192.168.1.3, кажется, безопасен, но необходимо убедиться, что указанные порты не следуют очевидному шаблону. т.е. порты со стандартным отклонением.. 16515.27… Но если ваши тесты показывают (10000.00 std dev), то ваш DNS-сервер более безопасен, и ваши клиенты или пользователи не должны беспокоиться.

Та же процедура должна быть выполнена на всех DNS-серверах вашей организации.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.