Предоставление перенаправления DNS на сервер honeypot для известных плохих доменов
В настоящее время работает BIND на RHEL 5.4 и ищет более эффективный способ перенаправления DNS на сервер honeypot для большого (более 30000) списка запрещенных доменов.
Наше текущее решение для этого требования состоит в том, чтобы включить файл, содержащий главное объявление зоны для каждого заблокированного домена в named.conf. Впоследствии каждое из этих объявлений зон указывает на один и тот же файл зоны, который разрешает все узлы в этом домене для наших серверов honeypot.... в основном это позволяет нам фиксировать любые попытки "телефонного домика" со стороны вредоносных программ, которые могут проникнуть во внутренние системы.
Проблема с этой конфигурацией заключается в большом количестве времени, необходимом для загрузки всех более 30000 доменов, а также на управление самим файлом конфигурации списка доменов... если в этот файл попадут какие-либо ошибки, сервер BIND не запустится, что приведет к Автоматизация процесса немного пугает. Поэтому я ищу что-то более эффективное и потенциально менее подверженное ошибкам.
Запись named.conf:
include "blackholes.conf";
Пример записи blackholes.conf:
zone "bad-domain.com" IN { type master; file "/var/named/blackhole.zone"; allow-query { any; }; notify no; };
Записи blackhole.zone:
$ INCLUDE std.soa
@ NS ns1.ourdomain.com.
@ NS ns2.ourdomain.com.
@ NS ns3.ourdomain.com.В 192.168.0.99
* В 192.168.0.99
4 ответа
Не удалось найти хороший способ избавиться от необходимости загружать каждый домен в его собственной зоне, но использование следующей команды rndc устраняет проблему сбоя сервера в случае некорректной записи.
rndc reconfig
Полный перезапуск / перезагрузка сервера все равно приведет к невозможности запуска.
Рассматривали ли вы альтернативу BIND? Я еще не использовал, но есть MySQL-управляемые альтернативы с веб-интерфейсами, такие как PowerDNS с Poweradmin. Это может сделать обновления менее подверженными ошибкам и рискованным. PowerDNS даже имеет инструмент для преобразования файла зоны BIND в SQL для миграции.
Кроме того, я могу спросить, является ли этот список общедоступным? Я очень заинтересован в этом сам.
Теоретически вы можете избежать медленной загрузки, сделав свой список чёрных дыр частью корневого файла подсказок (например, с помощью $INCLUDE
), а затем изменить этот файл из hint
к master
, Этот последний бит необходим для предотвращения загрузки вашим сервером настоящих корневых ссылок из Интернета.
например, в named.ca
:
a.root-servers.net. IN A ....
m.root-servers.net. IN A ....
$INCLUDE blackhole.zone
а затем в blackhole.zone
:
$ORIGIN example.com.
@ IN 192.168.0.99
* IN 192.168.0.99
$ORIGIN example.net.
@ IN 192.168.0.99
* IN 192.168.0.99
; ad-infinitum
Там нет реальной необходимости для записей NS или отдельных zone
операторы для каждой черной зоны - вы фактически вставляете поддельные авторитетные данные в локальную копию корневой зоны. Просто убедитесь, что вы время от времени загружаете настоящую корневую зону!
Тогда просто следуйте предложению @syn о запуске named-checkzone
перед каждой перезагрузкой и / или перезагрузкой.
NB: я не проверял это.
Изменить: Извините, я не очень хорошо прочитал ваш вопрос. Я предлагаю то же самое, что и вы. Может быть, вы можете включить файл, сгенерированный из базы данных?
У меня есть файл dropDomain с:
$TTL 3600 ; 1 hour
@ IN SOA xxxxxxxx.fr. dnsmaster.xxxxxxxx.fr. (
2009112001 ; serial 20yymmdd+nn
900 ; refresh (15 minutes)
600 ; retry (10 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS dns1.xxxxxxxx.fr.
NS dns2.xxxxxxxx.fr.
MX 0 smtp.xxxxxxx.fr.
* A 127.0.0.1
; vim:filetype=bindzone
Затем я просто добавляю домены из моего списка в named.conf.local:
# Master pour les zones que l'on ne veut plus resoudre (pirates, virus, prise en main a distance...)
zone "zzzzzzz.com" { type master; file "/etc/bind/dropDomain.tld"; allow-query { any; }; };
zone "yyyyyyy.com" { type master; file "/etc/bind/dropDomain.tld"; allow-query { any; }; };
zone "ttttttt.com" { type master; file "/etc/bind/dropDomain.tld"; allow-query { any; }; };
Мне не нужно определять его в файле зоны, он является общим.