The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Bind-Chroot-Howto (Debian) (bind dns named chroot linux debian)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: bind, dns, named, chroot, linux, debian,  (найти похожие документы)
From: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-09 13:06:41 Subject: Bind-Chroot-Howto (Debian)
Version 1.0
Author: Falko Timme
Last edited 02/03/2005


Перевод: Сгибнев Михаил

В этом документе описывается установка DNS сервера Bind на системе Debian и запуск его в chroot jail для увеличения безопасности системы.

Никаких гарантий не предоставляется.

Установка Bind и помещение в Chroot

Устнанавливаем bind9:
    
    apt-get install bind9
    
    
Для помещения BIND в chroot выполняем следущие шаги:
    
    /etc/init.d/bind9 stop
    
    
Редактируем скрипт запуска /etc/init.d/bind9 stop для запуска его от имени непривилегированного пользователя 'bind' и работы в /etc/default/bind. Модифицируем строку OPTS="" в OPTS="-u bind -t /etc/default/bind":
    
    #!/bin/sh
    
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    
    # for a chrooted server: "-u bind -t /etc/default/bind"
    OPTS="-u nobody -t /etc/default/bind"
    
    test -x /usr/sbin/named || exit 0
    
    case "$1" in
        start)
            echo -n "Starting domain name service: named"
            start-stop-daemon --start --quiet \
                --pidfile /var/run/named.pid --exec /usr/sbin/named -- $OPTS
            echo "."
        ;;
    
        stop)
            echo -n "Stopping domain name service: named"
            /usr/sbin/rndc stop
            echo "."
        ;;
    
        reload)
            /usr/sbin/rndc reload
        ;;
    
        restart|force-reload)
            $0 stop
            sleep 2
            $0 start
        ;;
    
        *)
            echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload}" >&2
            exit 1
        ;;
    esac
    
    exit 0
    
    
Открываем необходимые каталоги в /var/lib:
    
    mkdir -p /etc/default/bind/etc
    mkdir /etc/default/bind/dev
    mkdir -p /etc/default/bind/var/cache/bind
    mkdir /etc/default/bind/var/run
    
    
Затем перемещаем файл конфигурации из /etc в /etc/default/bind/etc:
    
    mv /etc/bind /etc/default/bind/etc
    
    
Создаем символическую ссылку файла конфигурации на каталог /etc, для устранения возможных проблем при обновлении системы:
    
    ln -s /etc/default/bind/etc/bind /etc/bind
    
    
Создаем устройства null и random и устанавливаем права доступа к каталогам:
    
    mknod /etc/default/bind/dev/null c 1 3
    mknod /etc/default/bind/dev/random c 1 8
    chmod 666 /etc/default/bind/dev/null /etc/default/bind/dev/random
    chown -R nobody:nogroup /etc/default/bind/var/*
    chown -R nobody:nogroup /etc/default/bind/etc/bind
    
    
Затем нам необходимо модифицировать стартовый сценарий /etc/init.d/sysklogd для возможности регистрации системных событий. Изменяем строку SYSLOGD="" на SYSLOGD="-a /etc/default/bind/dev/log":
    
    #! /bin/sh
    # /etc/init.d/sysklogd: start the system log daemon.
    
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    
    pidfile=/var/run/syslogd.pid
    binpath=/sbin/syslogd
    
    test -x $binpath || exit 0
    
    # Options for start/restart the daemons
    #   For remote UDP logging use SYSLOGD="-r"
    #
    SYSLOGD="-a /etc/default/bind/dev/log"
    
    create_xconsole()
    {
        if [ ! -e /dev/xconsole ]; then
            mknod -m 640 /dev/xconsole p
        else
            chmod 0640 /dev/xconsole
        fi
        chown root.adm /dev/xconsole
    }
    
    running()
    {
        # No pidfile, probably no daemon present
        #
        if [ ! -f $pidfile ]
        then
            return 1
        fi
    
        pid=`cat $pidfile`
    
        # No pid, probably no daemon present
        #
        if [ -z "$pid" ]
        then
            return 1
        fi
    
        cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -1`
    
        # No syslogd?
        #
        if [ "$cmd" != "$binpath" ]
        then
            return 1
        fi
    
        return 0
    }
    
    case "$1" in
      start)
        echo -n "Starting system log daemon: syslogd"
        create_xconsole
        start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
        echo "."
        ;;
      stop)
        echo -n "Stopping system log daemon: syslogd"
        start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile
        echo "."
        ;;
      reload|force-reload)
        start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile
        ;;
      restart)
        echo -n "Stopping system log daemon: syslogd"
        start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile
        echo "."
        sleep 1
        echo -n "Starting system log daemon: syslogd"
        start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
        echo "."
        ;;
      reload-or-restart)
        if running
        then
            start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile
        else
            start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
        fi
        ;;
      *)
        echo "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart}"
        exit 1
    esac
    
    exit 0
    
    
Перезапускаем демон sysklogd:
    
    /etc/init.d/sysklogd restart
    
    
Запускаем BIND и проверяем /var/log/syslog на наличие ошибок:
    
    /etc/init.d/bind9 start
    
    
Все готово.

От меня лично:

Проверено на:
    
    root@hpux:~# uname -a
    Linux hpux 2.4.17-32 #1 Sat Mar 16 17:09:00 MST 2002 parisc unknown
    
    
Работает.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Roman (??), 16:14, 25/10/2009 [ответить]  
  • +/
    Не большое дополнение.
    Вместо syslogd и klogd в Debian Lenny используется служба rsyslog.
    И в /etc/init.d/bind9
    теперь пишут OPTIONS="-u bind -t /var/chroot/bind"
    Возможно это кому то сэкономит лишнюю минуту ;-)
     
  • 2, Roman (??), 16:16, 25/10/2009 [ответить]  
  • +/
    Поторопился и скопировал свой путь к песочнице ))
    Модераторы поправят.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру