Linux - Netzwerk und Serveradminstration DNS DNSEC: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 208: Zeile 208:
 
  OK
 
  OK
  
=Finaler Check=
+
==Verzeichnis wechseln==
Asynchronous Full Zone Transfer
+
*cd /var/cache/bind/
;Zone
 
*dig @127.0.0.1 it213.int -t axfr
 
;Reverse Zone
 
*dig @127.0.0.1  213.88.10.in-addr.arpa  -t axfr
 
  
 
=DNSSEC Schlüssel erzeugen=
 
=DNSSEC Schlüssel erzeugen=
*cd /var/cache/bind/
+
 
 
;Forward Zone
 
;Forward Zone
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE it2XX.int
+
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE it213.int
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE it2XX.int
+
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE it213.int
  
 
=DNSKEY einbinden=
 
=DNSKEY einbinden=
 +
 
;Forward
 
;Forward
*for k in Kit2XX.int.+*.key ; do echo "\$INCLUDE $k" >> /var/cache/bind/it2XX.int; done
+
*for k in Kit213.int.+*.key ; do echo "\$INCLUDE $k" >> /var/cache/bind/it213.int; done
  
 
=Zonen signieren=
 
=Zonen signieren=
*dnssec-signzone -A -N INCREMENT -o it2XX.int -t /var/cache/bind/it2XX.int
+
 
 +
*dnssec-signzone -A -N INCREMENT -o it213.int -t /var/cache/bind/it213.int
 +
 
 
;Erzeugt
 
;Erzeugt
 
<pre>
 
<pre>
/var/cache/bind/it2XX.int.signed
+
/var/cache/bind/it213.int.signed
 
</pre>
 
</pre>
 +
 
*systemctl restart named
 
*systemctl restart named
  
 
=DS Record für Fake Root erzeugen=
 
=DS Record für Fake Root erzeugen=
 +
 
;DS aus signierter Zone erzeugen
 
;DS aus signierter Zone erzeugen
*dnssec-dsfromkey -f /var/cache/bind/it2XX.int.signed it2XX.int
+
*dnssec-dsfromkey -f /var/cache/bind/it213.int.signed it213.int
 +
 
 
;DS Eintrag an Fake Root weitergeben
 
;DS Eintrag an Fake Root weitergeben
 
;Im Fake Root in Zone int einfügen
 
;Im Fake Root in Zone int einfügen
 +
 
;Beispiel:
 
;Beispiel:
;it2XX     IN NS ns.it2XX.int.
+
;it213     IN NS ns.it213.int.
;ns.it2XX.int. IN A 10.88.2XX.21
+
;ns.it213.int. IN A 10.88.213.21
;it2XX.int. IN DS 12345 8 2 ABCDEF123456....
+
;it213.int. IN DS 12345 8 2 ABCDEF123456....
 +
 
 
;Danach Fake Root neu signieren
 
;Danach Fake Root neu signieren
 
*cd /var/cache/bind
 
*cd /var/cache/bind
 
*dnssec-signzone -A -N INCREMENT -o int int
 
*dnssec-signzone -A -N INCREMENT -o int int
 
*rndc reload
 
*rndc reload
 
=ändern der /etc/network/interfaces=
 
dns-nameserver '''127.0.0.1'''
 
;Danach aktivieren
 
*ifdown enp0s3 && ifup enp0s3
 
;Kontrolle
 
*cat /etc/resolv.conf
 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
 
#    DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
 
nameserver 127.0.0.1
 
search it213.int
 
  
 
=Handling und Logging=
 
=Handling und Logging=
 
*systemctl restart bind9
 
*systemctl restart bind9
 
*journalctl -fu bind9
 
*journalctl -fu bind9
*journalctl -u bind9 -g it2XX.int
+
*journalctl -u bind9 -g it213.int
  
 
=Validierungstest=
 
=Validierungstest=
 +
 
;Forward Validierung
 
;Forward Validierung
*dig www.it2XX.int +dnssec
+
*dig www.it213.int +dnssec
 +
 
 
;Antwort muss AD-Flag enthalten
 
;Antwort muss AD-Flag enthalten
  

Version vom 24. April 2026, 14:12 Uhr

Vorab Theorie


Pseudo Top-Level-Domain

Pseudo-Top-Level Domäne

  • Um die Domänen der anderen Labore aufzulösen ist ein Forwarder nötig
  • Dieser zeigt auf den entsprechenden DNS-Server der Domäne, sodass die Zonen nur einmal definiert werden müssen

Vorbereitungen

  • VirtualBox Server-Vorlage klonen
  • Der Host soll im DMZ-Netzwerk liegen
  • statische IP-Adresse nach dem Netzwerkplan setzen (/etc/network/interfaces)
  • SSH-Schlüssel des Kit Hosts für User kit hinterlegen

Netzkonfiguration DNS-Server (DMZ)

Parameter Wert Erläuterung
Netzwerk (NIC) DMZ Interface-Zuweisung in VirtualBox
IP 10.88.2XX.21 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 10.88.2XX.1 GATEWAY
NS 192.168.HS.88 Resolver
FQDN ns.it2XX.int Fully Qualified Domain Name
SHORT ns Short Name
DOM it2XX.int Domain Name
Anpassen des Templates

DNS Umsetzung

Installation

  • apt install bind9

Stop

  • systemctl stop named

Start

  • systemctl start named

Restart

  • systemctl restart named

Status

  • systemctl status named


Hauptkonfiguration

Standardmäßig ist die Konfiguration von bind9 auf mehrere Dateien aufgeteilt:

/etc/bind/named.conf

#Diese Datei inkludiert einfach nur die anderen 3 Dateien

Allgemeine Option zum Nameserver

include "/etc/bind/named.conf.options";

Hier kommen die eignen Zonen rein

include "/etc/bind/named.conf.local";

Hier werden die Root Nameserver konfigurtiert

include "/etc/bind/named.conf.root-hints";

Trust Anker einfügen

/etc/bind/named.conf.options

Berechtigungen und Einschränkungen

options {
  directory "/var/cache/bind";
  forwarders { <DNSGW>; };
  empty-zones-enable no;
  allow-query { 0.0.0.0/0; };
  allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 127.0.0.1; };
  allow-transfer {127.0.0.1; };
  dnssec-validation yes;
  listen-on-v6 { none; };
  listen-on { any; };
};

Erklärungen

directory "/var/cache/bind";
  • Das ist das Basisverzeichnis der Zonen-Datein
forwarders { <DNSGW>; };
  • Wir richten alle Anfragen die wir nicht selbst beantworten können and er Forwarder
empty-zones-enable no;
  • Deaktiviert die eingebauten leeren Zonen für private IP-Bereiche (RFC 1918), damit PTR-Anfragen an den Forwarder weitergeleitet werden anstatt lokal mit NXDOMAIN beantwortet zu werden.
allow-query { 0.0.0.0/0; };
  • Diese Rechner dürfen den Nameserver nach dem von ihm verwalteten Zonen befragen.
allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 127.0.0.1; };
  • Diese Rechner dürfen den Nameserver nach Einträgen befragen die er nicht selbst beantworten kann.
allow-transfer {127.0.0.1; };
  • Diese Rechner dürfen einen axfr Abfrage durchführen.
listen-on-v6 { none; };
  • Wir schalten IPv6 ab
listen-on { any; };
  • Wir lauschen an allen Schnittstellen
dnssec-validation yes;
  • DNSSEC Validierung ist aktiviert

Restart

  • systemctl restart named

Konfigurations

/etc/bind/named.conf.root-hints

// prime the server with knowledge of the root servers
zone "." {
	type hint;
	file "/usr/share/dns/root.hints";
};

/etc/bind/named.conf.local

 //Standardmässig leer
 //Hier werden die sogenanten Zonen angelegt.
 zone "it2xx.int" {
        type master;
        file "it2xx.int.signed";
        };
  zone "2xx.88.10.in-addr.arpa" {
        type master;
        file "2xx.88.10.in-addr.arpa";
      };

Erklärungen

zone "it2xx.int" {
  • Die beschreibt den authoritiven Bereich den ihr verwaltet
type master;
  • Wir befinden uns auf primären Nameserver
file "it2xx.int.signed";
  • In dieser Datei werden die signierten Zonendaten konfiguriert. Der Pfad ist relativ zur directory Direktive.
};
  • Abschluss des authoritiven Bereich.

Konfigurationsverzeichnis

/var/cache/bind

Forward Zonen Datei ohne Secundary DNS

  • Die Zonendatei enthält die Informationen zu den Adressen, und sieht folgendermaßen aus:
  • vi /var/cache/bind/it2xx.int
$TTL 1        ; 1 Sekunde
@                       IN SOA  ns.it2XX.int. technik.it2XX.int. (
                               2025062501 ; serial
                               14400      ; refresh (4 hours)
                               3600       ; retry (1 hour)
                               3600000    ; expire (5 weeks 6 days 16 hours)
                               300      ; minimum (5 min)
                               )
                       NS      ns.it2xx.int.
                       MX 10   mail.it2xx.int.     
fw                     IN      A       10.88.2XX.1
ns                     IN      A       10.88.2XX.21
sftp                   IN      A       10.88.2XX.15
proxy                  IN      A       10.88.2XX.4
mail                   IN      A       10.88.2XX.3
www                    IN      A       10.88.2XX.11
revproxy               IN      A       10.88.2XX.41
checkmk                IN      A       10.88.2XX.5 
ntp                    IN      A       10.88.2XX.17
nextcloud              IN      A       10.88.2XX.8
docker                 IN      A       10.88.2XX.9
dhcp		       IN      A       172.26.2XX.2  
smb		       IN      A       10.2XX.1.2  
ldap		       IN      A       10.2XX.1.3  

Check

  • named-checkzone it213.int /var/cache/bind/it213.int
zone it213.int/IN: loaded serial 2011090204
OK

Reverse Zonen Datei

  • vi /var/cache/bind/2XX.88.10.in-addr.arpa
$TTL 1       
@                       IN SOA  ns.it2XX.int. technik.it2XX.int. (
                               2025062501 ; serial
                               14400      ; refresh (4 hours)
                               3600       ; retry (1 hour)
                               3600000    ; expire (5 weeks 6 days 16 hours)
                               300        ; minimum (5 min)
                               )
                       IN      NS      ns.it2XX.int.
1                      IN      PTR     fw.it2XX.int.
21                     IN      PTR     ns.it2XX.int.
3                      IN      PTR     mail.it2XX.int.
4                      IN      PTR     proxy.it2XX.int.
17                     IN      PTR     ntp.it2XX.int.
11                     IN      PTR     www.it2XX.int.
15                     IN      PTR     sftp.it2XX.int.
41                     IN      PTR     revproxy.it2XX.int.
5                      IN      PTR     checkmk.it2XX.int.
8                      IN      PTR     docker.it2XX.int.
9                      IN      PTR     nexcloud.it2XX.int.

Check

  • named-checkzone 213.88.10.in-addr.arpa /var/cache/bind/213.88.10.in-addr.arpa
zone 213.88.10.in-addr.arpa/IN: loaded serial 2011090204
OK

Verzeichnis wechseln

  • cd /var/cache/bind/

DNSSEC Schlüssel erzeugen

Forward Zone
  • dnssec-keygen -a RSASHA256 -b 2048 -n ZONE it213.int
  • dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE it213.int

DNSKEY einbinden

Forward
  • for k in Kit213.int.+*.key ; do echo "\$INCLUDE $k" >> /var/cache/bind/it213.int; done

Zonen signieren

  • dnssec-signzone -A -N INCREMENT -o it213.int -t /var/cache/bind/it213.int
Erzeugt
/var/cache/bind/it213.int.signed
  • systemctl restart named

DS Record für Fake Root erzeugen

DS aus signierter Zone erzeugen
  • dnssec-dsfromkey -f /var/cache/bind/it213.int.signed it213.int
DS Eintrag an Fake Root weitergeben
Im Fake Root in Zone int einfügen
Beispiel
it213 IN NS ns.it213.int.
ns.it213.int. IN A 10.88.213.21
it213.int. IN DS 12345 8 2 ABCDEF123456....
Danach Fake Root neu signieren
  • cd /var/cache/bind
  • dnssec-signzone -A -N INCREMENT -o int int
  • rndc reload

Handling und Logging

  • systemctl restart bind9
  • journalctl -fu bind9
  • journalctl -u bind9 -g it213.int

Validierungstest

Forward Validierung
  • dig www.it213.int +dnssec
Antwort muss AD-Flag enthalten

Status

  • systemctl status named

Logs

Aktualisierte Log von named
  • journalctl -fu named
Die letzten 20 Log Zeilen vom named
  • journalctl -n 20 -u named
Aktualisierte Log von named plus grepen nach it213
  • journalctl -fu named -g it213

Sind die Ports geöffnet

  • ss -lntpu | grep named

Tests