DNS, als eine der Säulen des Internets ist häufig Ziel von Angriffen. Neben der Ausnutzung von Programmfehlern kann u.U. aber auch der Server Ziel einer Attacke sein. Mit dem Ziel diesen zu kompromittieren. Abhilfe kann das Einsperren des BIND9-Server-Prozesses sein: chroot().
Nachfolgende Hilfe zielt auf die schnelle Installation eines BIND9 in chroot() ab, als Nachschlagewerk! Erhebt allerdings keinerlei Anspruch Fallstricke und Hintergründe zu beleuchten, sowie die tiefere Konfiguration des DNS Daemons anzugehen.
Basis
Ubunutu 10.04 LTS. In leichter Abwandlung sollte diese Anleitung aber auch auf vielen anderen Distributionen umsetzbar sein.
Installation und Vorbereitungen
apt-get install bind9 bind9utils
Server stoppen und Anpassungen für die Laufzeit unter chroot() vornehmen
service bind9 stop
Laufzeit-Umgebung anpassen. Dazu /etc/defaults/bind9 in Editor öffnen und die Zeile mit OPTIONS=“ “ anpassen
OPTIONS="-u bind -t /var/lib/named"
Dabei definiert die -t-Option mit dem Wert /var/lib/named das Gefängnis.
BIND9 wird vom Rest der (System-)Welt abgekoppelt, braucht dazu aber einige Systemressourcen in seiner spezifischen Umgebung. Diese werden nachfolgend angelegt:
mkdir -p /var/lib/named/{etc.dev}
mkdir -p /var/lib/named/var/{cache,run}
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
Bestehende Konfigurationsdateien verschieben und an den Ausgangspunkt zurück verlinken
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
Devices erstellen, Berechtigungen setzen
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/{null,random}
chown -R bind.bind /var/lib/named/var/*
chown -R bind.bind /var/lib/named/etc/bind
Anpassungen des Log-Daemon
Je nach System ist entweder (noch) syslogd oder schon rsyslogd installiert. Deshalb hier die Einstellungen zu beiden gängigen Daemons.
syslogd
Editieren der Datei /etc/default/syslogd und ändern oder hinzufügen folgender Anweisung
SYSLOGD="-a /var/lib/named/dev/log"
Neustarten des Daemon mit
/etc/init.d/sysklogd restart
/etc/init.d/bind9 start
(alternativ mit dem ’service‘ Befehl neu- bzw erstmalig starten: service sysklogd restart)
Rsyslogd
Ab Ubuntu 9.04 ist auf dem System rsyslogd installiert, der anders modifiziert wird. Die Änderungen finden in der Datei /etc/rsyslog.d/bind9-chroot.conf statt. Diese Datei wird entweder editiert, oder neu angelegt. Hinzugefügt wird dann (inkl. ‚$‘)
$AddUnixListenSocket /var/lib/named/dev/log
Neustarten des Daemon mit
service rsyslog restart
Logging einschalten
In der Datei named.conf.options, die unter /var/lib/named/etc/bind zu finden ist, wird abschließend das Logging konfiguriert.
logging {
channel simple_log {
// 'file' relativ zu chroot()-Umgebung
file "/var/log/bind.log" versions 3 size 5m;
severity warning;
print-time yes;
print-severity yes;
print-category yes;
};
category default {
simple_log;
};
};
Ein wichtiger Schritt ist noch, die Log-Datei manuell anzulegen und dem Benutzer ‚bind‘ als Owner anzugeben.
touch /var/lib/named/var/log/bind.log
chown bind.bind /var/lib/named/var/log/bind.log
service bind9 restart
Achtung Sicherheit
Ist ‚AppArmor‘ installiert kann das Starten des BIND9 Daemon fehlschlagen. Und das auch ohne nachhaltige Fehlermeldung. Weiterführende Hilfe findet man hier [1] und [2] hier.
aa-complain /etc/apparmor.d/usr.sbin.named
Damit nutzt AppArmor für BIND9 (Prozessname named) den complain-Modus.
Hilfe
[1] https://help.ubuntu.com/community/AppArmor
[2] https://help.ubuntu.com/community/BIND9ServerHowto
[3] https://wiki.ubuntu.com/DebuggingApparmor
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.