BIND9 im Gefängnis…

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


Beitrag veröffentlicht

in

, , , ,

von

Schlagwörter:

Kommentare

Eine Antwort zu „BIND9 im Gefängnis…“

  1. […] Leitfaden für die BIND-Konfiguration. Höchst offiziell ist auch die Doku unter tldp.org . Unter AdminWerk.de finden sich Hinweise zum sicheren Betrieb des BINDs. Eine englischsprachige Anleitung findet sich […]

Schreibe einen Kommentar