GNU/Linux >> Tutoriales Linux >  >> Debian

Bind-Chroot-Howto (Debian)

Bind-Chroot-Howto (Debian)

Versión 1.3
Autor:Falko Timme

Este documento describe cómo instalar el servidor DNS Bind en Debian para que se quede sin chrootjail por razones de seguridad.

Este tutorial pretende ser una guía práctica; no cubre los antecedentes teóricos. Se tratan en muchos otros documentos en la web.

¡Este documento viene sin garantía de ningún tipo!

Instalar Bind AndChroot It

apt-getinstall bind9

Por razones de seguridad, queremos ejecutar BIND en chroot, por lo que debemos realizar los siguientes pasos:

/etc/init.d/bind9 parada

En Debian Sarge (3.1):

Edite el archivo /etc/default/bind9 para que el demonio se ejecute como el usuario sin privilegios 'bind ', cambiado a /var/lib/named . Modifique la línea:OPTS=" -u bind " para que lea OPTS="-u bind -t /var/lib/named" :

En Debian Woody (3.0):

Edite el script de inicio /etc/init.d/bind9 para que el demonio se ejecute como el usuario sin privilegios 'nadie ', enrutado a /var/lib/named .Modifique la línea:OPTS="" para que se lea OPTS="-ubody-t /var/lib/named" :

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

Cree los directorios necesarios en /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

Luego mueva el directorio de configuración de /etc a /var/lib/named/etc :

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

Cree un enlace simbólico al nuevo directorio de configuración desde la ubicación anterior (para evitar problemas cuando se actualice bindis en el futuro):

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

Hacer dispositivos nulos y aleatorios, y arreglar los permisos de los directorios:

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

En Debian Sarge (3.1):

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

En Debian Woody (3.0):

chown -R nadie:sin grupo /var/lib/named/var/*
chown -R nadie:singrupo /var/lib/named/etc/bind

Necesitamos modificar el script de inicio /etc/init.d/ registro del sistema de sysklogd para que aún podamos obtener mensajes importantes registrados en los registros del sistema. Modifique la línea: SYSLOGD="" para que diga:SYSLOGD="-a/var/lib/named/dev/log" :

#!/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

Reiniciar el loggingdaemon:

/etc/init.d/sysklogd restart

Inicie BIND y verifique /var/log/syslog por cualquier error:

/etc/init.d/bind9 start

¡Buena suerte!


Debian
  1. Debian – ¿Forzar E2fsck en /var en cada arranque?

  2. ¿Diferencia entre /var/log/messages, /var/log/syslog y /var/log/kern.log?

  3. Instalar Selfoss en Debian Wheezy

  4. Instale el script php-login.net en Debian Wheezy

  5. Cómo systemd-tmpfiles limpia /tmp/ o /var/tmp (reemplazo de tmpwatch) en CentOS/RHEL 7

ImportError:ningún módulo llamado 'lsb_release' - Debian Linux - Solución

¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

Debian – ¿No se puede crear un usuario Sftp Debian 7?

Debian – ¿Mover /var, /home a una partición separada?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

unix:///var/run/supervisor.sock no hay tal archivo

    #! /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