Konfiguration für dedizierten Protokolldateien

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. 🙂

 

 

Abonnieren
Benachrichtige mich bei
0 Comments
Inline Feedbacks
View all comments