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

Как запретить Bind отвечать на поддельные IP-адреса?

Все мы знаем об открытых резольверах, этот вопрос как бы для обратной ситуации. У меня есть DNS-сервер, заблокированный для определенных CIDR acl trusted {[..]

options {
[..]
allow-query {
            // Accept queries from our "trusted" ACL.  We will
            // allow anyone to query our master zones below.
            // This prevents us from becoming a free DNS server
            // to the masses.
            trusted;
};

Это работает.

Однако он не останавливает зараженные узлы в разрешенных диапазонах для отправки поддельных (чаще всего типа ЛЮБОЙ) запросов. Они разрешаются, и ответ по-прежнему отправляется на поддельный IP-адрес, который его «запросил» (который обычно является целью злоумышленников).

Как запретить DNS-серверу разрешать домены, запрошенные вне доверенных диапазонов? Это вообще что-то должно делать bind?

Это не проблема, которую вы должны пытаться решить на уровне обслуживания.

  • Не позволяйте внешнему трафику делать входящие запросы к вашим DNS-слушателям.
  • Выполните проверку исходного адреса пакетов, созданных вашими клиентами (если применимо). Это предотвращает атаки усиления, исходящие изнутри вашей сети.

Эти проблемы коренятся в дизайне сетевой топологии, стоящей перед вами. Попытка решить эти проблемы с самого сервера - проигрышная битва.

Вы можете использовать несколько подходов. Вы можете их объединить.

  • Используйте разделенный DNS, чтобы настроить внешнюю зону на отклонение рекурсии. Разделенный DNS позволит вам предоставить нерекурсивный авторитетный DNS-сервер извне и полностью функционирующий рекурсивный DNS-сервер внутри. Рассмотрите возможность регистрации неудачных запросов.
  • Заблокируйте нежелательные сети от отправки запросов на ваши серверы. (Порт 53 UDP и TCP.) Это можно сделать на внешнем брандмауэре или, в некоторых системах, включая Debian, на брандмауэре сервера. Рассмотрите возможность ограничения CIDR, которые могут запрашивать ваш сервер, теми, которые он должен поддерживать.
  • Использовать fail2ban для динамической блокировки запрашивающих сетей.

Из вашего вопроса видно, что у вас есть несколько компьютеров, зараженных программным обеспечением ботнета. Важно определить и очистить эти системы. Это выходит за рамки этого вопроса. Если ваши маршрутизаторы поддерживают это, подумайте об ограничении IP-адресов, с которых могут отправляться запросы.

Комментарии в отрывке из конфигурации в вопросе относятся к вашим серверам, авторитетно отвечающим для некоторых зон. Для сценария, когда злоумышленник злоупотребляет авторитетным сервером, имеет смысл настроить Ограничение скорости ответа чтобы смягчить это.

Однако в случае атак, злоупотребляющих сервером с включенной рекурсией, блокировка рекурсивного доступа к вашей собственной сети в сочетании с входная фильтрация лучший способ остановить это. (По предложению @ Andrew-B.)

Что касается конкретно BIND, важно понимать как разные allow-* директивы конфигурации взаимодействуют когда вы переопределяете один из нескольких из них (без этого понимания не так очевидно, как, например, переопределение allow-query влияет на другие директивы, такие как allow-recursion).