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

Настройте BIND9 в качестве брандмауэра DNS

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

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

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

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

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

Это устарело для современных технологий. В мире 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. До этой версии были проблемы с производительностью с несколькими зонами.
  • РПЗ нельзя использовать для остановки NS атаки на основе записей, которые стали популярными в 2014 году, так как по умолчанию RPZ предназначен для попыток авторитетного поиска, а не для «выдачи» перехвата ваших записей исходному серверу имен.
    • qname-wait-recurse no был добавлен в BIND 9.10 и может позволить вам использовать для этой цели RPZ. Я собирался это испытать.
    • Даже если qname-wait-recurse no работает, по-прежнему существует потребность в типе записи, который можно использовать для автономной атаки доменов без дополнительной настройки. Я говорил об этом с Полом Викси, и мы можем увидеть это в будущей версии спецификации формата RPZ.
  • NXDOMAIN и NODATA действия будут выдавать название вашей зоны RPZ в AUTHORITY раздел ответа. Предположим, что люди узнают его название.

Ссылки на главу 6 BIND ARM: