RuCable
Настройка bind-named в песочние (chroot)
Задачи:                            Выстроить BIND8 (NAMED) в песочнице - (в ограниченном(закрытом) собственным окружением).
Возможности: Операционная Система FreeBsd v.4 - v.5., BIND8,
Требования: Минимальные знания систем UNIX, OS FreeBSD.
Авторство: Все что здесь написано, может быть использовано всеми, кто найдет эту статью.
Я являюсь автором только по содержанию и смыслу.
В этой статье были использованы материалы с сайтов:
http://freebsd.org
http://www.isc.org

Использование: Понимание данной статьи, как приложение к страничке помощи по настройке.
Любые возможные потери или утраты в связи с использованием этой статьи, не возмещаются.
Установка происходит используя:
или Дистрибутив BIND8

или Port для FreeBsd /usr/ports/dns/bind8
или Статически скомпонованная готовая сборка BIND8 в системе.

Вступление: Любое программное обеспечение, требует собственные ресурсы на сервере,
а так же в целом любое ПО не может считаться идеальным в практическом смысле.
Тем самым используя общие ресурсы и имея доступ хотябы для чтения в каталог корня ОС
от имени какого либо даемона(сервиса), запущенного на сервере,
мы рискуем поставить под угрозу другие сервисы, запущенные рядом,
к которым может получить доступ недоброжелатель или взломщик.
Этим мы подверждаем, что чем больше будет сделано администратором системы
барьеров для попытки взлома ПО, тем менее опаснее станет использование самой ОС в целом.

В данной статье мы рассмотрим запуск сервиса named, в папке, из которой сам сервис
не может получить доступ к корню самой системы.
"Запуск в песочнице" или chroot, как мы называем это, дает на возможность безопасно
для остальных сервисов полноценно запускать даемон named-а, в собственном окружении.

Изначально это статья рекомендована для использования в частных или не частных целях,
для администраторов с плохой памятью, как у меня, для быстрого поднятия BIND8 в песочнице.

-----------------------------------------------------------------------------------------------------
помощью Дистрибутива BIND8:
Распакуйте архив или выберите иной

dns-pro# cd /home/chroot
dns-pro# mkdir bind8
dns-pro# cd bind8

dns-pro# fetch ftp://ftp.isc.org/isc/bind/src/8.3.7/bind-src.tar.gz
или
dns-pro# fetch ftp://ftp.isc.org/isc/bind/src/8.4.6/bind-src.tar.gz

bind-src.tar.gz 100% of 1383 kB 32 kBps 00m00s
dns-pro# tar xfz bind-src.tar.gz
dns-pro# cd src

Теперь надо подправить строку в файле port/freebsd/Makefile.set, для этого:
dns-pro# ee port/freebsd/Makefile.set
dns-pro# make clean

Теперь дописываем в строку 'CDEBUG=-O2 -g -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat'
опцию -static
полуится так:
'CDEBUG=-O2 -g -static -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat'

Теперь Продолжим...
dns-pro# make depend
dns-pro# make all
dns-pro# rm .settings
dns-pro# make install

Все, программа установленна на сервер.
Приступаем к запуску в песочнице(chroot)
По умолчанию, в системе FreeBSD , named распологается в папке /etc/namedb.
Не будем ничего менять в этом, пусть будет так.

Создаем директории в этой папке и нужные изменения.

dns-pro# cd /etc/namedb
dns-pro# mkdir -p bin dev etc var/tmp var/run var/run/named master slave usr usr/sbin
dns-pro# chown bind:bind slave var/*
dns-pro# cp /etc/localtime etc/
dns-pro# mv named.conf etc && ln -sf etc/named.conf
dns-pro# cp -f /usr/libexec/named-xfer bin/named-xfer
dns-pro# cp -f /usr/sbin/named usr/sbin/named
dns-pro# cd dev && mknod null c 2 2
dns-pro# chmod 666 null

Теперь нужно создать линк на консоль управления намеда, при каждом старте системы.
Линк нужен для управления намедом из коммандной строки(#ndc start|restart|stop|etc)
Она будет создаваться с помощью cron.
dns-pro# crontab -e
впишем:
@reboot /bin/ln -sf /etc/namedb/var/run/ndc /var/run/ndc

Далее для того чтобы в syslog named смог писать сообщения, дописываем дополнительную опцию в /etc/rc.conf
А так же впишем дополнительные опции для разрещения старта.
dns-pro# ee /etc/rc.conf
named_enable="YES"
named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"
named_pidfile="/var/run/named/pid"
named_chrootdir="" #Для систем с автоматической установкой chroot(FreeBSD_5.*_STABLE)
named_chroot_autoupdate="NO" #Для систем с автоматической установкой chroot(FreeBSD_5.*_STABLE)
syslogd_flags="-l /etc/namedb/dev/log"

Далее мы редактируем сам named.conf
dns-pro# ee /etc/namedb/named.conf
// управляющий сокет ndc
controls {
unix "/var/run/ndc" perm 0600 owner 0 group 0;
};
options {
directory "/";
named-xfer "/bin/named-xfer";
notify yes;
fake-iquery yes;
fetch-glue no;
use-id-pool yes;
allow-recursion { 192.168.0.0/24; localhost; };
allow-query { any; };
version "DNS server";
allow-transfer { 80.78.179.175; 193.219.141.235; };
query-source address * port 53;
dump-file "s/named_dump.db";
pid-file "/var/run/named/pid";
};

Пробуем перезапустить систему и надеемся на успешное выполнение задачи.
dns-pro# shutdown -r now
проверяем после загрузки

----------------------------------------------------------------------------------------------------------