Letzte Aktualisierung am 15.12.2022, 11:12:16 Uhr
Wer den DNS-Server bind9 unter Debian und Ubuntu Server intalliert, wird feststellen dass es standardmäßig keine eigenständige Logfiles gibt. Stattdessen werden alle Ausgaben in die Datei /var/log/syslog geschrieben.
Je nachdem welche Dienste noch auf dem Server laufen, kann man ganz schnell in /var/log/syslog den Überblick verlieren bzw. die Suche ist aufwendiger. Daher ist es heute auch üblich für jeden Dienste dedizierte Logfiles zu haben. Des Weiteren werden oft Server durch verschiedene Personen administriert, so dass duch dedizierte Protokolldateien über Berechtigungen granular gesteuert werden kann, wer auf was Zugriff hat. Gerade bei größeren Installation ist das unabbdingbar.
Nachstehend eine Referenz Konfiguration auf Basis von Ubuntu Server 20.04 LTS. Voraussetzung ist., dass bind9 auf dem Server bereits installiert ist. Die Ergänzungen könnnen auch poblemlos in bestehenden Installationen und Anpassungen übernommen werden.
Neue Datei anlegen:
touch /etc/bind/named.conf.logging
Folgende Zeilen in die Datei /etc/bind/named.conf.logging einfügen:
logging { channel dnssec { file "/var/log/named/dnssec.log" versions 5 size 10M; print-category yes; print-severity yes; print-time yes; severity info; }; channel general { file "/var/log/named/general.log" versions 5 size 10M; print-category yes; print-severity yes; print-time yes; severity info; }; channel notify { file "/var/log/named/notify.log" versions 5 size 10M; print-category yes; print-severity yes; print-time yes; severity info; }; channel query { file "/var/log/named/query.log" versions 5 size 10M; print-category yes; print-severity yes; print-time yes; severity info; }; channel slog { syslog security; severity info; }; channel transfers { file "/var/log/named/transfers.log" versions 5 size 10M; print-category yes; print-severity yes; print-time yes; severity info; }; category config { general; }; category dnssec { dnssec; }; category default { general; }; category lame-servers { general; }; category notify { notify; }; category queries { query; }; category xfer-in { slog; transfers; }; category xfer-out { slog; transfers; }; category security { general; slog; }; };
Ein Überblick aller verfügbaren Kanäle und Kategorien findet man Online Handbuch.
Verzeichnis anlegen:
mkdir -p /var/log/named
Berechtigungen anpassen:
chown bind /var/log/named
Prüfen, ob die Konfigurationsdatei korrekt ist:
named-checkconf /etc/bind/named.conf.logging
Wird kein Fehler ausgeben, ist die Konfiguration in Ordnung.
Die neue Konfigurationsdatei für das Logging muss natürlich auch noch eingebunden werden. Dazu die Datei /etc/bind/named.conf in Editor des Vertrauens zum Bearbeiten öffnen.
Folgende Zeile hinzufügen:
// Enable dedicate Logfiles include "/etc/bind/named.conf.logging";
AppArmor ist ein Kernel Sicherheitsmodul, das Mandatory Access Control (MAC) mit anwendungsspezifischen Profilen in Debian-basierten Systemen implementiert. Damit verbunden werden die Protokolldateien erst einmal nicht erstellt bis die Konfiguration für Bind angepasst wurde.
Überprüfen, ob AppArmor aktiviert ist:
aa-status apparmor module is loaded. 12 profiles are loaded. 12 profiles are in enforce mode.
Wenn dem so ist, sind folgende Schritte noch zu konfigurieren, damit Bind die Protokolldateien erstellen und auch beschreiben kann.
Die Datei /etc/apparmor.d/usr.sbin.named im Editor des Vertrauens öffnen. Dort nach folgenden Abschnitt suchen:
# /etc/bind should be read-only for bind # /var/lib/bind is for dynamically updated zone (and journal) files. # /var/cache/bind is for slave/stub data, since we're not the origin of it. # See /usr/share/doc/bind9/README.Debian.gz /etc/bind/** r, /var/lib/bind/** rw, /var/lib/bind/ rw, /var/cache/bind/** lrw, /var/cache/bind/ rw,
Am Ende des Abschnitts folgende Zeilen ohne Absatz direkt einfügen:
/var/log/named/** rw, /var/log/named/ rw,
Abschließend den DNS Server neu starten:
systemctl restart apparmor systemctl restart bind9.service
Kontrolle, ob der DNS Server läuft:
systemctl status bind9.service ● named.service - BIND Domain Name Server Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-07-19 12:11:29 UTC; 2s ago Docs: man:named(8) Main PID: 2246 (named) Tasks: 5 (limit: 2275) Memory: 12.7M CGroup: /system.slice/named.service └─2246 /usr/sbin/named -f -u bind
Kontrolle ob die Protokolldateien erstellt worden sind:
ll /var/log/named/ total 16 drwxr-xr-x 2 bind root 4096 Jul 19 12:11 ./ drwxrwxr-x 9 root syslog 4096 Jul 19 11:51 ../ -rw-r--r-- 1 bind bind 122 Jul 19 12:11 dnssec.log -rw-r--r-- 1 bind bind 581 Jul 19 12:11 general.log -rw-r--r-- 1 bind bind 0 Jul 19 12:11 notify.log -rw-r--r-- 1 bind bind 0 Jul 19 12:11 query.log -rw-r--r-- 1 bind bind 0 Jul 19 12:11 transfers.log
Viel Spaß beim Ausprobieren. 🙂