|
Мой 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; |