Установите BIND9 в качестве DNS Firewall

Сейчас, когда OpenDNS нужен тот, кто включен в профессиональный пакет, чтобы включить фильтрацию, а бюджет ограничен, нам нужна бесплатная фильтрация DNS.

Прочитав эту ссылку о том, как заблокировать домены с помощью bind, я собрал черные списки SquidGuard и объединенные домены в нужных мне категориях в один большой список. Затем я добавил его в этот скрипт на python, создав файл, содержащий около 2 миллионов зон.

named-checkconf разбирает его просто отлично, но перезагрузка named занимает почти 10 минут, затем ничего не решается, и сервер замедляется до сканирования. Удаление включаемых результатов в named снова работает правильно.

Как правильно настроить BIND9 для эффективной работы в качестве брандмауэра DNS? Если возможно также заблокировать любой домен, который разрешает к определенным IP-адресам, который решил бы всю проблему.

Я запускаю bind как неавторизованный, просто сервер кеширования.

1 ответ

Решение

Это устарело для современных технологий. В мире BIND зоны политик ответа (RPZ) в наши дни являются синонимами DNS-серверов.

Зона RPZ является обычной зоной DNS, но используется для определения действий политики сервером. Зона "суффикс" не имеет значения, так как это не настоящий домен DNS. Это просто файл зоны, который содержит список специально отформатированных инструкций.

options {
          ...
          response-policy { zone "whatever.anytld";} };
};

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

$ORIGIN whatever.anytld.

; destination IP rewrite
baddomain1.example.com       A     198.51.100.1
*.baddomain1.example.com     A     198.51.100.1

; send them to an existing A record
baddomain2.example.com       CNAME mywebserver.example.org.
*.baddoman2.example.com      CNAME mywebserver.example.org.

; NXDOMAIN it
baddomain3.example.com       CNAME .
*.baddomain3.example.com     CNAME .

; reply with NODATA
baddomain4.example.com       CNAME *.
*.baddomain4.example.com     CNAME *.

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

RPZ многое сделает, и это не является исчерпывающей документацией. Рекомендуемое чтение включает главу 6 BIND ARM (внизу этого ответа) для вашей версии BIND и главу 9 онлайн-книги Zytrax.

Клифф отмечает из моего личного опыта, чтобы сэкономить ваше время:

  • Используйте перемещения зон для перемещения зон RPZ сIXFR, включить ixfr-from-differences на вашего хозяина, чтобы облегчить это. Используйте передачу зон на основе ключей, если используется BIND 9.9 или более поздней версии для защиты от попыток DoS на основе NOTIFY.
  • Разрешить только IP-адреса администратора запрашивать зону RPZ.
  • Не используйте более одного файла RPZ, если вы не используете BIND 9.10. До этой версии были проблемы с производительностью в нескольких зонах.
  • RPZ не может быть использован, чтобы остановить NS Атаки на основе записей, которые стали популярными в 2014 году, так как по умолчанию RPZ предназначен для попыток авторитетных поисков, а не для "предательства" перехвата ваших записей в исходный источник имен.
    • qname-wait-recurse no был добавлен в BIND 9.10 и может позволить вам использовать RPZ для этой цели. Я хотел выяснить это.
    • Даже если qname-wait-recurse no работает, все еще существует потребность в типе записи, который можно использовать для автономной атаки доменов без дополнительной настройки. Я говорил об этом с Полом Викси, и мы можем увидеть это в следующей версии спецификации формата RPZ.
  • NXDOMAIN а также NODATA действия будут выдавать название вашей зоны RPZ в AUTHORITY раздел ответа. Предположим, что люди узнают его имя.

BIND ARM Глава 6 ссылки:

Другие вопросы по тегам