|
Мой DNS - моя крепость
Xakep, номер #049, стр. 049-074-3 }; //кому явно запретить доступ acl "fakenets" { 0.0.0/8; 1.0.0/8; 2.0.0/8; 169.254.0/16; 224.0.0/3; 10.0.0/8; 172.16.0/8; }; И теперь для всех случаев, т.е. для глобального определения поведения нашего сервера описываем: options { ... allow-transfer { none; }; //кому мы можем передавать нашу зону allow-query { trusted; }; //кому мы отвечаем на запросы allow-recursion { trusted; }; //кто нам может посылать рекурсивные запросы blackhole { fakenets; }; //кого игнорируем ... }; Присутствует возможность ограничения передачи конкретно для каждой зоны, например: zone "myexample.net" { type master; file "db.myexample.net"; allow-transfer { IP-адрес_вспомогательного_DNS_сервера; }; }; и в named.conf вспомогательного DNS-сервера прописываем: zone "myexample.net" { type slave; file "backup.myexample.net"; masters { IP-адрес_основного_DNS_сервера; }; allow-transfer { none; }; }; К другим элементам подсистемы безопасности можно отнести секции и директивы: а) allow-update – определяем, кто может делать динамические обновления. По умолчанию динамические обновления запрещены. Директива используется в связке DNS и DHCP серверов, например: zone "myexample.net" { type master; file "db.myexample.net"; allow-update { IP-адрес_DHCP_сервера; }; }; б) allow-notify – определяем, от кого помимо мастер-сервера будем получать уведомления об изменениях зоны: options { allow-notify { IP-адрес; }; }; в) listen-on - на какие сетевые интерфейсы и на какой порт подвешиваем нашего демона (по умолчанию используются все доступные интерфейсы и 53 порт): options { listen-on { 192.168.1.1 port 53; 192.168.5.1 port 53; }; }; г) version - меняем отклик на запрос версии BIND options { version "Secure by custom"; }; д) bogus - задаем с помощью этой директивы, какие серверы никогда нельзя опрашивать: server 192.168.6.1 { bogus yes; }; е) кто может удаленно админить наш DNS-сервер: controls { inet * allow { any; } keys { "id_rndc_key" }; } Истина где-то в логах Без сомнения, особое внимание необходимо уделить подсистеме журнальной регистрации демона named, которая конфигурируется в секции logging файла named.conf. Сначала мы определим каналы - места назначений посланных сообщений, затем категории журналирования и имена каналов, куда будут приходить эти сообщения. logging { channel chroot_logfile { file "/var/log/named.log" versions 3 size 300k; //задаем лог-файл, количество ротаций и его размер severity debug 3; //указываем серьезность (можно выставить info) print-category yes; //добавляем метку с категорией print-severity yes; //добавляем метку с уровнем серьезности print-time yes; //добавляем метку с временем }; category default { default_syslog; chroot_logfile; }; //записываем в syslog-поток и в лог-файл все сообщения, для которых не был назначен канал category security { chroot_logfile; }; //записываем разрешение и запрещение запросов в лог-файл category queries { chroot_logfile; }; //регистрируем запросы в лог-файл category lame-servers { null; }; //не регистрируем сообщения о серверах, которые якобы обслуживают зону |