Мой DNS - моя крепость

Xakep, номер #049, стр. 049-074-2


Далее в поддиректории dev создаем необходимые для работы демона файлы устройств null и random:

mknod --mode=666 null c 1 3

mknod --mode=644 random c 1 8

Для *BSD следует использовать другие старшие и младшие версии устройств:

mknod -m 666 null c 2 2

mknod -m 644 random c 2 3

И передадим syslogd в скрипте /etc/rc.d/init.d/syslog ключ для создания дополнительного сокета в chroot()'ной среде (таких сокетов в системе может быть не более 19, в OpenBSD не более 20):

SYSLOGD_OPTIONS="-a /var/named/dev/log -m 0"

FreeBSD'шные пользователи прописывают в /etc/defaults/rc.conf и вместо ключа "-a" используют "-l", OpenBSD'шные ищут в /etc/rc.conf секцию syslogd_flags и используют, как и Linux-юзеры, параметр "-a".

Так, теперь нам для корректной работы демона необходимо изменить расположение некоторых системных файлов в главном конфигурационном файле named.conf в разделе options:

directory "/var/named"; //указываем рабочий каталог named с файлами зон

pid-file "/var/run/named.pid"; //путь к pid-файлу

dump-file "/var/stat/named_dump.db"; //путь к файлу с дампом базы данных

statistics-file "/var/stat/named.stats"; //путь к файлу со статистикой DNS-сервера

Обрати внимание, что в этих директивах мы уже указываем абсолютный путь относительно chroot()'ного каталога /var/named. На этом мы временно остановимся и перейдем к рассмотрению средств защиты в файле named.conf.

И снится нам не зона Майкрософта

По своей сути DNS - это иерархическая база данных с IP-адресами, именами хостов и некоторым их описанием. Любой пользователь, сделав специальные запросы, используя утилиты dig, host и nslookup, может получить от по умолчанию настроенного DNS-сервера файл зонной пересылки, с помощью которого без особого труда сможет составить топологию внутренней сети, узнать IP-адреса, имена узлов, определить серверы зон (NS записи), почтовые ретрансляторы (MX записи), географическое месторасположение (LOC записи), информацию об узлах (TXT записи) и т.д. Для того чтобы ограничить запросы, посылаемые нашему DNS-серверу, противодействовать атакам с целью имитации доменного имени и отказа в обслуживании, необходимо воспользоваться списками управления доступом (Access Control List, ACL) или криптографической аутентификацией.

Для того чтобы узнать версию BIND, можно воспользоваться утилитой dig, сделав соответствующий запрос:

/opt/bind9/bin/dig @victim.com chaos txt version.bind.

В ответ получим что-то типа:

;; ANSWER SECTION:

version.bind. 0 CH TXT "9.2.1"

А для получения полного дампа базы данных DNS-сервера заюзаем nslookup:

nslookup

> server victim.com

Default Server: victim.com

Address: ip_addr_of_victim.com

? ls -d victim.com

?

Обычно для каждого сервера задаются как минимум два списка в самом начале файла named.conf: один с IP-адресами хостов из так называемой "доверенной" сети, второй с недопустимыми IP-адресами.

//доверенные подсети

acl "trusted" {

127.0.0.1;

192.168.1/24;

192.168.5/24;

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