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!