bind9 in ein Chroot auslagern!

Hallo! Habe hier mal ein Script erstellt welches es vereinfachen soll bind9 in ein Chroot auszulagern!
Das Script wurde anhand folgender Quelle erstellt: Bind 9 in Chroot
Ich habe es erstmal nur für Debian Wheezy eingerichtet. Für Jessie sind noch ein paar andere Dinge notwendig. Also Bitte nur unter Debian Wheezy anwenden!


#!/bin/bash

##### Bind9 ins Chroot auslagern #####
##### Für Debian Wheezy nicht für Jessie!!! #####

service bind9 stop

sed -i 's/OPTIONS="-u bind"/#OPTIONS="-u bind"/' /etc/default/bind9
if ! [ $? = 0 ] ; then
        exit 1
fi

sed -i 's!PIDFILE=/var/run/named/named.pid!''PIDFILE=/var/bind9/chroot/var/run/named/named.pid!' /etc/init.d/bind9
if ! [ $? = 0 ] ; then
        exit 1
fi
sed -i 's!#OPTIONS="-u bind"!''OPTIONS="-u bind -t /var/bind9/chroot"!' /etc/init.d/bind9
if ! [ $? = 0 ] ; then
        exit 1
fi

mkdir -p -v /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named,var/log/bind}
if ! [ $? = 0 ] ; then
        exit 1
fi

if ! [ -c /var/bind9/chroot/dev/null ] ; then
        mknod /var/bind9/chroot/dev/null c 1 3
        if ! [ $? = 0 ] ; then
        exit 1
        fi
fi
if ! [ -c /var/bind9/chroot/dev/random ] ; then
        mknod /var/bind9/chroot/dev/random c 1 8
        if ! [ $? = 0 ] ; then
        exit 1
        fi
fi

chmod 660 /var/bind9/chroot/dev/{null,random}
if ! [ $? = 0 ] ; then
        exit 1
fi

if ! [ -d /var/bind9/chroot/etc/bind ] ; then
        if [ -d /etc/bind ] ; then
                mv /etc/bind /var/bind9/chroot/etc
                echo "Bind9 Ordner ins Chroot kopiert!!!"
                if ! [ $? = 0 ] ; then
                        exit 1
                fi
        else echo "/etc/bind nicht vorhanden!!!"
        exit 1
        fi
fi

if ! [ -L /etc/bind ] ; then
        ln -s /var/bind9/chroot/etc/bind /etc/bind
        if ! [ $? = 0 ] ; then
        exit 1
        fi
        echo "Link von Chroot zu /etc/bind/ erstellt!!!"
        else echo "Link von Chroot zu /etc/bind/ schon vorhanden!!!"
fi

cp /etc/localtime /var/bind9/chroot/etc/
if ! [ $? = 0 ] ; then
        exit 1
fi

chown -R bind:bind /etc/bind/*
if ! [ $? = 0 ] ; then
        exit 1
fi
chmod 775 /var/bind9/chroot/var/{cache/bind,log/bind,run/named}
if ! [ $? = 0 ] ; then
        exit 1
fi
chgrp bind /var/bind9/chroot/var/{cache/bind,log/bind,run/named}
if ! [ $? = 0 ] ; then
        exit 1
fi

echo "$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf
if ! [ $? = 0 ] ; then
        exit 1
fi

echo "Bind9 erfolgreich ins Chroot verlagert!!!"

service bind9 start
service bind9 status

exit 0

Grundsätzlich sollte man Scripte, die man nicht selbst erstellt hat, immer zuerst auf einem Testsystem ausprobieren. Es kann vorkommen das die Ordnerpfade in der named.conf oder named.conf.option usw abweichen! Das gilt besonders dem PID File oder der log Dateien!
Das Wurzelverzeichnis für bind9 ist dann “/var/bind9/chroot/”! Der Pfad “/var/bind9/chroot/” darf in keiner conf Datei als Pfad auftauchen!

Check Also

OpenVPN im DualStack Betrieb

Wie man OpenVPN im DualStack IPv4/IPv6 parallel betreibt Mit der OpenVPN Version 2.4 und höher ...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Lars Pilawski hat 4,73 von 5 Sternen 981 Bewertungen auf ProvenExpert.com