DNS-Server BIND9 als Slave einrichten

Letzte Aktualisierung am 15.12.2023, 16:12:38 Uhr

In den meisten IT-Umgebungen findet man ein Microsoft Active Directory vor. Damit verbunden wird meistens auch der Microsoft DNS-Server auf dem Domain Controller mit installiert. Das liegt zum Einem an der einfachen Administration aber auch das quasi bei der Installation des Active Directory nur ein „Haken“ zu setzen ist. Nach der Grundeinrichtung des DNS-Servers (weitere Forward Zonen, Reverse Zonen für jeden IP-Adressenbereich) ist nicht mehr viel zu tun.

Bei heutigen Planungen wird als Active Directory Namen gerne eine offizielle Domain als Fully-Qualified Host Name (FQDN) gegeben. In meinen Fall wäre es z.B. der Name wydler.eu. Das entspricht inzwischen auch den Best Practice seitens Microsofts, was früher nicht der Fall war.

Sobald Anwendungen, welche im lokalen, geschützten Netzwerk (LAN) installiert sind über das Internet erreichbar sein müssen, muss man sich zwangsweise mit dem Thema Split-DNS auseinandersetzen. Denn die obengenannte Domain wydler.eu ist über einen Anbieter wie z.B. Core Networks registriert. D.h. dessen DNS-Server verwaltet die Domain autoritativ. Damit muss man automatisch die Zone auf zwei DNS-Server pflegen.

Mit den zunehmenden Sicherheitsvorfällen steigt inzwischen auch das Sicherheitsbewusstsein. Damit verbunden werden immer häufiger vorhandene Strukturen um eine DMZ erweitert. Die Kommunikation zwischen Internet und DMZ bzw. DMZ < -> LAN wird jeweils mit einer Firewall geschützt und kontrolliert. In der DMZ werden Applikationen platziert, welche a) sowohl aus dem LAN als auch Internet erreichbar sein müssen b) Proxysysteme welche Anwendungen im LAN veröffentlichen.

Für die Kommunikation vom LAN die DMZ über den jeweiligen FQDN wird einfach im DNS-Server im LAN ein entsprechender A bzw. PTR-Eintrag angelegt. Somit wird bei Anwendungen, welche ein offizielles, gültiges Zertifikat verwenden keinerlei Fehlermeldungen ausgegeben. Andersherum sieht es schon anders aus. Meist wird der Einfachheit halber die jeweilige HOST-Datei des betroffenen Servers in der DMZ modifiziert. Was bei einer geringen Anzahl von Systemen den administrativen Aufwand im Grenzen hält. Gibt es viele Sever in der DMZ, so ist die Verwaltung über die HOSTS-Datei mit hohem Aufwand verbunden und die Übersicht geht schnell verloren.

Hier empfiehlt sich der Einsatz eines DNS-Servers in der DMZ. Dieser wird als Slave konfiguriert und erhält die notwendigen Zonen (Forward & Reserve) automatisch aus dem DNS-Server im LAN (Master). Damit kommt das klassische Design Master-Slave zum Einsatz.

Umgebung

LAN:
– Subnetz: 192.168.199.0/24
– 1x virtuelle Maschine, Windows Server 2019R2 Standard (Active Directory und DNS-Server), 192.168.199.2/24
– Active Directory FQDN: lab03.daniel.wydler.eu
– Active Directory NetBios: lab03

DMZ:
– Subnetz: 192.168.200.0/28
– 1x virtuelle Maschine, Ubuntu Server 22.04.1 LTS (BIND9), 192.168.200.3

Installation und Konfiguration von BIND9

Installation vin BIND9 + Tools:

apt install bind9 bind9utils

Kopien der originalen Konfigurationsdateien anlegen:

cp /etc/bind/named.conf.options /etc/bind/named.conf.options.original
cp /etc/bind/named.conf /etc/bind/named.conf.orignal

/etc/bind/named.conf.options:

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
                192.168.200.1;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        listen-on-v6 { any; };

        allow-query {
                net199dns;
                net200;
        };
};


// IP Adressen der DNS Server im net199, welche DNS Zonen replizieren dürfen
acl net199dns {
        192.168.199.2;
};

// IP-Adressen der DNS Server im net199, welche als Master agieren
masters net199dns {
        192.168.199.2;
};

// IP-Adressen bzw. Subnetze, welche diesen DNS-Server abfragen dürfen
acl net200 {
        127.0.0.1;
        192.168.200.0/28;
};

/etc/bind/named.conf.lab03.daniel.wydler.eu

zone "lab03.daniel.wydler.eu." in {
        type slave;
        file "/var/cache/bind/db.lab03.daniel.wydler.eu";
        allow-query {
                net200;
        };
        allow-transfer {
                net199dns;
        };
        masters {
                net199dns;
        };
};


zone "199.168.192.in-addr.arpa" in {
        type slave;
        file "/var/cache/bind/db.199.168.192.in-addr.arpa";
        allow-query {
                net200;
        };
        allow-transfer {
                net199dns;
        };
        masters {
                net199dns;
        };
};


zone "200.168.192.in-addr.arpa" in {
        type slave;
        file "/var/cache/bind/db.200.168.192.in-addr.arpa";
        allow-query {
                net200;
        };
        allow-transfer {
                net199dns;
        };
        masters {
                net199dns;
        };
};

cat /etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";


// Benutzerdefinierte Konfigurationen
include "/etc/bind/named.conf.lab03.daniel.wydler.eu";

Konfiguration des Windows DNS Servers

Auf dem Domain Controller die Verwaltungsoberfläche des DNS-Server öffnen.

Wenn es mehrere DNS-Server in der DMZ gibt, welche als Slave agieren sollen, sind hier alle IP-Adressen einzutragen. Die Meldung „Auflösung nicht möglich“ kommt daher, wenn in der Forward-Lookupzone der A-Eintrag für den DNS-Server fehlt.

Diese Schritte sind für jede Zone (egal welches Typs) zu wiederholen.

Anmerkungen

  • Regelwerk der Firewalls auf beiden Servern erweitern (Port 53/tcp, Port 53/udp).
  • Die Kommunikation zwischen beiden DNS-Servern erfolgt bidirektional.
  • Reverse-Lookupzone für den IP-Adressbereich der DMZ im Windows DNS-Server anlegen und pflegen.
  • Gibt es mehrere Windows DNS-Server im LAN, sind die obigen Schritte (Konfiguration des Windows DNS Servers) pro Server und Zone zu wiederholen. Die Benachrichtigung wird immer auf dem Server ausgelöst, auf dem die Änderung durchgeführt wurde.

Testlauf

Zuerst den Dienst BIND9 neu starten, damit die geänderte Konfiguration geladen und aktiv wird.

service bind9 restart

Anschließend kann die Funktionalität geprüft werden.

service bind9 status
bind9.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-12-26 16:23:02 CET; 3 days ago
Docs: man:named(8)
Main PID: 733 (named)
Tasks: 4 (limit: 453)
CGroup: /system.slice/bind9.service
└─733 /usr/sbin/named -f -u bind
 
Dez 30 13:54:49 ns01 named[733]: zone lab03.daniel.wydler.eu/IN: transferred serial 18548
Dez 30 13:54:49 ns01 named[733]: transfer of 'lab03.daniel.wydler.eu/IN' from 192.168.122.2#53: Transfer status: success
Dez 30 13:54:49 ns01 named[733]: transfer of 'lab03.daniel.wydler.eu/IN' from 192.168.122.2#53: Transfer completed: 3 messages, 1012 records, 39516 bytes, 0.007 secs (5645142 bytes/sec)
Dez 30 13:54:49 ns01 named[733]: zone lab03.daniel.wydler.eu/IN: sending notifies (serial 18548)
Dez 30 14:06:58 ns01 named[733]: zone lab03.daniel.wydler.eu/IN: Transfer started.
Dez 30 14:06:58 ns01 named[733]: transfer of 'lab03.daniel.wydler.eu/IN' from 192.168.122.2#53: connected using 192.168.123.12#41409
Dez 30 14:06:58 ns01 named[733]: zone lab03.daniel.wydler.eu/IN: transferred serial 18549
Dez 30 14:06:58 ns01 named[733]: transfer of 'lab03.daniel.wydler.eu/IN' from 192.168.122.2#53: Transfer status: success
Dez 30 14:06:58 ns01 named[733]: transfer of 'lab03.daniel.wydler.eu/IN' from 192.168.122.2#53: Transfer completed: 1 messages, 24 records, 591 bytes, 0.005 secs (118200 bytes/sec)
Dez 30 14:06:58 ns01 named[733]: zone lab03.daniel.wydler.eu/IN: sending notifies (serial 18549)

Nun kann der Slave DNS-Server in der DMZ von dortigem Server genutzt werden. Damit er seinen Zweck auch erfüllt, müssen die Einträge der HOSTS-Datei noch entfernt werden. Anderenfalls fällt die fehlerhafte Konfiguration erst auf, wenn es einen DNS-Namen nicht mehr gibt oder unter einer anderen IP-Adresse erreichbar ist.

Viel Spaß beim Ausprobieren. 🙂

Abonnieren
Benachrichtige mich bei
0 Comments
Inline Feedbacks
View all comments