GNU/Linux >> Linux の 問題 >  >> Debian

Bind-Chroot-Howto(Debian)

Bind-Chroot-Howto(Debian)

バージョン1.3
作成者:Falko Timme

このドキュメントでは、セキュリティ上の理由から、DNSサーバーBindをDebianにインストールしてchrootjailが不足するようにする方法について説明します。

このハウツーは、実用的なガイドとして意図されています。理論的背景については説明していません。それらは、Webの他の多くのドキュメントで扱われています。

このドキュメントには、いかなる種類の保証もありません!

BindAndChrootItをインストール

apt-getinstall bind9

セキュリティ上の理由から、BINDをchrootして実行したいので、次の手順を実行する必要があります。

/etc/init.d/bind9 stop

Debian Sarge(3.1)の場合:

ファイルを編集 / etc / default / bind9 デーモンが非特権ユーザーとして実行されるように、' バインド '、 / var / lib / namedにchrootされました 。次の行を変更します: OPTS =" -u bind " OPTS ="-u bind -t / var / lib / named"と表示されます。

OPTIONS="-u bind -t /var/lib/named"

Debian Woody(3.0)の場合:

スタートアップスクリプトを編集 /etc/init.d/bind9 デーモンが非特権ユーザーとして実行されるように、' 誰も '、chrooted to / var / lib / named 。行を変更します: OPTS ="" OPTS ="-u nobody-t / var / lib / named"と表示されます。

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# for a chrooted server: "-u nobody -t /var/lib/named"
OPTS="-u nobody -t /var/lib/named"

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 / var / lib / named / etc
mkdir / var / lib / named / dev
mkdir -p / var / lib / named / var / cache / bind
mkdir -p / var / lib / named / var / run / bind / run

次に、configdirectoryをから移動します / etc から / var / lib / named / etc

mv / etc / bind / var / lib / named / etc

古い場所から新しい構成ディレクトリへのシンボリックリンクを作成します(将来、bindisがアップグレードされる際の問題を回避するため):

ln -s / var / lib / named / etc / bind / etc / bind

nullおよびrandomdevicesを作成し、ディレクトリの権限を修正します:

mknod / var / lib / named / dev / nullc 1 3
mknod / var / lib / named / dev / random c 1 8
chmod 666 / var / lib / named / dev / null / var / lib / named / dev / random

Debian Sarge(3.1)の場合:

chown -R bind:bind / var / lib / named / var / *
chown -R bind:bind / var / lib / named / etc / bind

Debian Woody(3.0)の場合:

chown -R nobody:nogroup / var / lib / named / var / *
chown -R nobody:nogroup / var / lib / named / etc / bind

起動スクリプトを変更する必要があります /etc/init.d/ sysklogd sysklogd 重要なメッセージをシステムログに記録できるようにします。次の行を変更します: SYSLOGD ="" SYSLOGD ="-a / var / lib / named / 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 /var/lib/named/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

ロギングデーモンを再起動します:

/etc/init.d/sysklogd再起動

BINDを起動し、 / var / log /syslog<を確認します。 / font> エラーの場合:

/etc/init.d/bind9 start

頑張ってください!


Debian
  1. Debian –起動するたびにE2fsckを/ varに強制しますか?

  2. /var/log/messages、/var/log/syslog、および/var/log/kern.logの違いは?

  3. DebianWheezyにSelfossをインストールする

  1. DebianWheezyにphp-login.netスクリプトをインストールします

  2. /var/www/html/ で git リポジトリを使用する

  3. find:ファイル システムのループが検出されました

  1. ImportError:「lsb_release」という名前のモジュールがありません– Debian Linux –ソリューション

  2. /var/lib/mysql ファイルを再初期化する方法は?

  3. 推奨される使用方法に従って、Web サイトは /var/ または /usr/ に配置する必要がありますか?