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

Назад на стр. 049-074-2  Содержание  Вперед на стр. 049-074-4