GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Bind-Chroot-Howto (Debian)

Bind-Chroot-Howto (Debian)

Version 1.3
Autor:Falko Timme

Dieses Dokument beschreibt, wie man den DNS-Server Bind auf Debian installiert, sodass er aus Sicherheitsgründen aus einem Chrootjail läuft.

Diese Anleitung ist als praktischer Leitfaden gedacht; es deckt nicht die theoretischen Hintergründe ab. Sie werden in vielen anderen Dokumenten im Internet behandelt.

Dieses Dokument wird ohne jegliche Gewährleistung geliefert!

Installieren Sie Bind AndChroot It

apt-getinstall bind9

Aus Sicherheitsgründen möchten wir BIND chroot ausführen, daher müssen wir die folgenden Schritte ausführen:

/etc/init.d/bind9 stop

Auf Debian Sarge (3.1):

Bearbeiten Sie die Datei /etc/default/bind9 so dass der Daemon als nicht privilegierter Benutzer 'bind ', chrooted nach /var/lib/named . Ändern Sie die Zeile:OPTS=" -u bind " sodass es lautet:OPTS="-u bind -t /var/lib/named" :

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

Auf Debian Woody (3.0):

Startskript bearbeiten /etc/init.d/bind9 so dass der Daemon als nicht privilegierter Benutzer 'nobody ',gechrootet nach /var/lib/named .Ändern Sie die Zeile:OPTS="" sodass es lautet: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

Erstellen Sie die erforderlichen Verzeichnisse unter /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

Verschieben Sie dann das Konfigurationsverzeichnis von /etc bis /var/lib/named/etc :

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

Erstellen Sie einen symbolischen Link zum neuen Konfigurationsverzeichnis vom alten Speicherort (um Probleme zu vermeiden, wenn Bindis in Zukunft aktualisiert wird):

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

Null- und Zufallsgeräte erstellen und Berechtigungen der Verzeichnisse korrigieren:

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

Auf Debian Sarge (3.1):

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

Auf Debian Woody (3.0):

chown -R niemand:keine Gruppe /var/lib/named/var/*
chown -R niemand:keineGruppe /var/lib/named/etc/bind

Wir müssen das Startskript ändern /etc/init.d/ sysklogd von sysklogd damit wir weiterhin wichtige Meldungen in den Systemprotokollen protokollieren können. Ändern Sie die Zeile: SYSLOGD="" sodass es lautet: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

Starten Sie den Logging-Daemon neu:

/etc/init.d/sysklogd restart

Starten Sie BIND und überprüfen Sie /var/log/syslog für Fehler:

/etc/init.d/bind9 start

Viel Glück!


Debian
  1. Debian – /var, /home auf separate Partition verschieben?

  2. Unterschied zwischen /var/log/messages, /var/log/syslog und /var/log/kern.log?

  3. Installieren Sie Selfoss auf Debian Wheezy

  4. Installieren Sie das Skript php-login.net auf Debian Wheezy

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

ImportError:Kein Modul namens „lsb_release“ – Debian Linux – Lösung

Einrichten eines NFS-Servers und -Clients auf Debian Wheezy

Upgrade von GlusterFS von 3.2 (Debian) auf 3.4 für Debian Wheezy

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Debian – Kann Sftp-Benutzer nicht erstellen Debian 7?

Wie kann ich /var/lib/mysql-Dateien neu initialisieren?