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

Обеспечение перенаправления DNS на сервер приманки для известных плохих доменов

В настоящее время выполняется BIND на RHEL 5.4, и я ищу более эффективный способ перенаправления DNS на сервер приманки для большого (30 000+) списка запрещенных доменов.

Нашим текущим решением для этого требования является включение файла, содержащего главную декларацию зоны для каждого заблокированного домена, в named.conf. Впоследствии каждое из этих объявлений зон указывает на один и тот же файл зоны, который разрешает все хосты в этом домене на наши серверы-приманки. ... в основном это позволяет нам перехватывать любые попытки «звонков домой» вредоносного ПО, которое может проникнуть во внутренние системы.

Проблема с этой конфигурацией заключается в большом количестве времени, необходимом для загрузки всех 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.

IN A 192.168.0.99
* В А 192.168.0.99

Не удалось найти хороший способ избавиться от необходимости загружать каждый домен в его собственную зону, но использование следующей команды 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; }; };

Мне не нужно определять его в файле зоны, он общий.