Bind-Chroot-Howto(Debian)
Versi 1.3
Penulis:Falko Timme
Dokumen ini menjelaskantunjukkan cara menginstal server DNS Bind pada Debian sehingga chrootjail kehabisan chrootjail untuk alasan keamanan.
Cara ini dimaksudkan sebagai panduan praktis; itu tidak mencakup latar belakang teoretis. Mereka diperlakukan di banyak dokumen lain di web.
Dokumen ini hadir tanpa jaminan apa pun!
Instal Bind DanCroot It
apt-getinstall bind9
Untuk alasan keamanan, kami ingin menjalankan BIND secara chroot, jadi kami harus melakukan langkah-langkah berikut:
/etc/init.d/bind9 stop
Di Debian Sarge (3.1):
Edit file /etc/default/bind9 sehingga daemon akan berjalan sebagai pengguna yang tidak memiliki hak 'bind ', di-chroot ke /var/lib/named . Ubah baris:OPTS=" -u bind sehingga terbaca OPTS="-u bind -t /var/lib/named" :
OPTIONS="-u bind -t /var/lib/named" |
Di Debian Woody (3.0):
Edit skrip startup /etc/init.d/bind9 sehingga daemon akan berjalan sebagai pengguna yang tidak memiliki hak 'tidak ada ', di-chroot ke /var/lib/named .Modifikasi baris:OPTS="" sehingga terbaca OPTS="-u none-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 |
Buat direktori yang diperlukan di bawah /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
Kemudian pindahkan direktori konfigurasi dari /etc ke /var/lib/named/etc
mv /etc/bind /var/lib/named/etc
Buat symlink ke direktori konfigurasi baru dari lokasi lama (untuk menghindari masalah saat bind diupgrade di masa mendatang):
ln -s /var/lib/named/etc/bind/etc/bind
Buat null dan randomdevices, dan perbaiki izin direktori:
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
Di Debian Sarge (3.1):
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind
Di Debian Woody (3.0):
chown -R none:nogroup /var/lib/named/var/*
chown -R none:nogroup /var/lib/named/etc/bind
Kita perlu memodifikasi skrip startup /etc/init.d/ sysklogd dari sysklogd sehingga kita masih bisa mendapatkan pesan penting yang masuk ke log sistem. Ubah baris: SYSLOGD="" sehingga berbunyi: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 |
Mulai ulang loggingdaemon:
/etc/init.d/sysklogd restart
Mulai BIND, dan centang /var/log/syslog untuk kesalahan apa pun:
/etc/init.d/bind9 start
Semoga berhasil!