Руководство FreeBSD


Запуск named в песочнице


Для дополнительной безопасности вам может потребоваться запускать named(8) с правами непривилегированного пользователя и настроить его на выполнение chroot(8) в каталог-песочницу. Это позволит сделать недоступным для даемона named все, что расположено вне песочницы. Если named будет взломан, то это поможет уменьшить возможный ущерб. По умолчанию во FreeBSD имеются пользователь и группа с именами bind, которые предназначены именно для такого использования.

Замечание: Многие рекомендуют вместо настройки named

на использование chroot, запускать named внутри jail(8). В этом разделе такой подход не рассматривается.

Так как named не сможет обратиться ни к чему вне песочницы (например, совместно используемым библиотекам, сокетам протоколов и так далее), то нужно выполнить несколько шагов, чтобы named смог работать нормально. В следующем списке предполагается, что каталогом песочницы является /etc/namedb и что вы не делали никаких изменений в содержимом этого каталога. Выполните следующие шаги, работая как пользователь root:

  • Создайте все каталоги, которые ожидает увидеть named:

    # cd /etc/namedb

    # mkdir -p bin dev etc var/tmp var/run master slave

    # chown bind:bind slave var/*

    Программе named нужен доступ с правом записи в эти каталоги, так что это все, что мы ей предоставим.

  • Измените и создайте базовые файлы зоны и настроек:

    # cp /etc/localtime etc

    # mv named.conf etc && ln -sf etc/named.conf

    # mv named.root master

    # sh make-localhost && mv localhost.rev localhost-v6.rev master

    # cat > master/named.localhost $ORIGIN localhost. $TTL 6h @ IN SOA localhost. postmaster.localhost. ( 1 ; serial 3600 ; refresh 1800 ; retry 604800 ; expiration 3600 ) ; minimum IN NS localhost. IN A 127.0.0.1 ^D

    Это позволит программе named протоколировать правильное время в .

  • Если вы используете FreeBSD версии ранее 4.9-RELEASE, то постройте статически скомпонованную копию named-xfer и скопируйте её в песочницу:

    # cd /usr/src/lib/libisc

    # make cleandir && make cleandir && make depend && make all




    Начало  Назад  Вперед