Pseudo top level domain DNSSEC: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
 
* Zone Signing Key (ZSK): Signiert die Zone und wird häufiger gewechselt.
 
* Zone Signing Key (ZSK): Signiert die Zone und wird häufiger gewechselt.
 
* Key Signing Key (KSK): Signiert den ZSK und wird seltener gewechselt.
 
* Key Signing Key (KSK): Signiert den ZSK und wird seltener gewechselt.
 +
====int====
 +
'''ZSK erzeugen'''
 +
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
 +
'''KSK erzeugen'''
 +
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int
 +
 +
Die generierten Dateien sehen ungefähr so aus:
 +
Kint.+008+12315.key
 +
Kint.+008+12315.private
 +
Kint.+008+43144.key
 +
Kint.+008+43144.private
 +
;Integration der DNSSEC-Schlüssel in die Zone
 +
Die .key-Dateien müssen in die Zonendatei '''/var/cache/bind/int''' eingebunden werden:
 +
*for k in Kint*.key ; do echo \$INCLUDE /var/cache/bind/$k >>  /var/cache/bind/int; done
  
 +
====88.10.in-addr.arpa====
 
'''ZSK erzeugen'''
 
'''ZSK erzeugen'''
<pre>
+
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE 88.10.in-addr.arpa
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
 
</pre>
 
 
 
 
'''KSK erzeugen'''
 
'''KSK erzeugen'''
<pre>
+
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE 88.10.in-addr.arpa
dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int
 
</pre>
 
  
 
Die generierten Dateien sehen ungefähr so aus:
 
Die generierten Dateien sehen ungefähr so aus:
* Kint.+008+12315.key
+
K88.10.in-addr.arpa.+008+06136.key
* Kint.+008+12315.private
+
K88.10.in-addr.arpa.+008+06136.private
* Kint.+008+43144.key
+
K88.10.in-addr.arpa.+008+29361.key
* Kint.+008+43144.private
+
K88.10.in-addr.arpa.+008+29361.private
  
===Integration der DNSSEC-Schlüssel in die Zone ===
+
;Integration der DNSSEC-Schlüssel in die Zone
Die .key-Dateien müssen in die Zonendatei `/var/cache/bind/int` eingebunden werden:
+
Die .key-Dateien müssen in die Zonendatei '''/var/cache/bind/88.10.in-addr.arpa''' eingebunden werden:
 
+
*for k in K88*.key ; do echo \$INCLUDE /var/cache/bind/$k >>  /var/cache/bind/88.10.in-addr.arpa; done
<pre>
 
$INCLUDE /var/cache/bind/Kint.+008+12315.key
 
$INCLUDE /var/cache/bind/Kint.+008+43144.key
 
</pre>
 
  
 
===Zonensignierung mit DNSSEC ===
 
===Zonensignierung mit DNSSEC ===
 
Sobald die Schlüssel eingebunden sind, wird die Zone signiert:
 
Sobald die Schlüssel eingebunden sind, wird die Zone signiert:
<pre>
+
*dnssec-signzone -A -N INCREMENT -o int -t /var/cache/bind/int
dnssec-signzone -A -N INCREMENT -o int -t /var/cache/bind/int
+
*dnssec-signzone -A -N INCREMENT -o 88.10.in-addr.arpa  -t /var/cache/bind/88.10.in-addr.arpa
</pre>
+
Dies erzeugt  signierte Dateien mit der Endung '''.signed'''.
 +
 
 +
==Anmerkungen zum DNSSEC-Schlüsselwechsel==
 +
*[[DNSSEC-Schlüsselwechsel]]
  
Dies erzeugt eine signierte Datei `int.signed`.
 
  
 
===BIND9-Konfiguration anpassen ===
 
===BIND9-Konfiguration anpassen ===
Die Datei `/etc/bind/named.conf.local` muss angepasst werden, damit die signierte Zone verwendet wird:
+
Die Datei `/etc/bind/named.conf.local` muss angepasst werden, damit die signierten Zonen verwendet werden:
 
<pre>
 
<pre>
 
zone "int" {
 
zone "int" {
 
     type master;
 
     type master;
 
     file "/var/cache/bind/int.signed";
 
     file "/var/cache/bind/int.signed";
 +
    allow-query { any; };
 +
    dnssec-policy default;
 +
    inline-signing yes;
 +
};
 +
 +
zone "88.10.in-addr.arpa" {
 +
    type master;
 +
    file "/var/cache/bind/88.10.in-addr.arpa.signed";
 
     allow-query { any; };
 
     allow-query { any; };
 
     dnssec-policy default;
 
     dnssec-policy default;
Zeile 64: Zeile 80:
 
options {
 
options {
 
         directory "/var/cache/bind";
 
         directory "/var/cache/bind";
         listen-on-v6 { any; };
+
         listen-on-v6 { none; };
 +
        allow-recursion { any; };
 +
        allow-query { any; };
 
         dnssec-validation auto;
 
         dnssec-validation auto;
 
};
 
};
Zeile 71: Zeile 89:
 
===Neustart von BIND9 ===
 
===Neustart von BIND9 ===
 
Nach den Änderungen muss der DNS-Server neu gestartet werden:
 
Nach den Änderungen muss der DNS-Server neu gestartet werden:
 +
*systemctl restart bind9
 +
 +
===Überprüfung von DNSSEC ===
 +
Zur Kontrolle, ob DNSSEC korrekt funktioniert:
 +
*dig DNSKEY  @localhost +dnssec +nocomments +nostats int
 
<pre>
 
<pre>
systemctl restart bind9
+
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> DNSKEY @localhost +dnssec +nocomments +nostats int
 +
; (2 servers found)
 +
;; global options: +cmd
 +
;int. IN DNSKEY
 +
int. 3600 IN DNSKEY 257 3 13 T9/K08SYQ/7ZglXeagB72j7N9Y5jPVj5Y0qF2thquvpB2Go1M4A43qQw JYqRhuzomoezctxzL6G/VsP9oXxNLQ==
 +
int. 3600 IN RRSIG DNSKEY 13 1 3600 20250327161304 20250313151304 54869 int. qb0Hilp7DnpOQkfDp6GhiX3kJ16pw4ItAe/u+k6Q+9kZbLiRwAaiigGO 5YLwuSKgSGbBcAiUZhpnhBdWgflVhg==
 
</pre>
 
</pre>
  
===Überprüfung von DNSSEC ===
+
*dig DNSKEY  @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa
Zur Kontrolle, ob DNSSEC korrekt funktioniert:
 
 
<pre>
 
<pre>
dig DNSKEY int @localhost +dnssec
+
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> DNSKEY @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa
dig A www.it100.int @localhost +dnssec
+
; (2 servers found)
 +
;; global options: +cmd
 +
;88.10.in-addr.arpa. IN DNSKEY
 +
88.10.in-addr.arpa. 3600 IN DNSKEY 257 3 13 bRxcMus3OaNS63VwfNedkyso5Oui+v9gVbM3eg7sN3G43nJqgeCtr5E3 725nyKX30EYZQGiAovYM3rXWi1QS0w==
 +
88.10.in-addr.arpa. 3600 IN RRSIG DNSKEY 13 4 3600 20250327161117 20250313151117 39443 88.10.in-addr.arpa. uzTWdjuEy8OlU2u6oex7WWEPb1vJtI7T1MbJy0Smz6ODKdWzYySjT1qU AcZ+aZS/qANqFaUhxFmzugupDzDLrg==
 
</pre>
 
</pre>
 +
  
 
Falls die Konfiguration korrekt ist, sollten RRSIG-Einträge sichtbar sein.
 
Falls die Konfiguration korrekt ist, sollten RRSIG-Einträge sichtbar sein.
 +
 +
=== Eintragen der Trust-Anker im Resolver ===
 +
==== Beispiel zum Ermitteln der DNSKEYs ====
 +
 +
Die benötigten Schlüssel zur Einrichtung eines Trust-Ankers werden mit folgendem Befehl auf dem autoritativen DNS-Server ermittelt:
 +
 +
;'''DNSKEY für int:''' 
 +
*dig DNSKEY int @127.0.0.1 +short
 +
 +
;'''DNSKEY für 88.10.in-addr.arpa:''' 
 +
*dig DNSKEY 88.10.in-addr.arpa @127.0.0.1 +short
 +
 +
Ausgabeformat des benötigten Schlüssels (Beispiel):
 +
 +
257 3 13 ABCDEFG1234567......
 +
 +
Nur der DNSKEY mit der Kennung '''257 3 13''' wird als Trust-Anker verwendet.
 +
 +
==== DNSSEC-Trust-Anker auf dem Resolver ====
 +
 +
Um DNSSEC-Validierung für die eigene Pseudo-TLD zu ermöglichen, müssen die Trust-Anker manuell auf jedem DNS-Resolver eingetragen werden, der die Signaturen prüfen soll.
 +
 +
Der autoritative DNS-Server (z. B. dnsgw.int) stellt nur die signierten Zonen bereit, nimmt jedoch selbst keine Validierung vor.
 +
 +
Die folgenden Zeilen werden auf dem jeweiligen Resolver in der Datei '''/etc/bind/named.conf.options''' oder '''named.conf''' eingetragen:
 +
 +
managed-keys {
 +
  int. initial-key 257 3 13 "<hier-den-Key-der-int-Zone-einfügen>";
 +
  88.10.in-addr.arpa. initial-key 257 3 13 "<hier-den-Key-der-Reverse-Zone-einfügen>";
 +
};
 +
 +
==== Abschluss ====
 +
 +
Nach dem Eintragen der Trust-Anker muss der DNS-Dienst auf jedem Resolver neu gestartet werden:
 +
 +
*systemctl restart bind9
 +
 +
Ab jetzt validieren die Resolver die DNSSEC-Signaturen für die angegebenen Zonen korrekt.
  
 
=== Fazit ===
 
=== Fazit ===
 
Mit diesen Schritten ist die Pseudo-Top-Level-Domain mit DNSSEC abgesichert. Falls ein Slave-Server existiert, muss auch dort DNSSEC aktiviert und die signierte Zone übernommen werden.
 
Mit diesen Schritten ist die Pseudo-Top-Level-Domain mit DNSSEC abgesichert. Falls ein Slave-Server existiert, muss auch dort DNSSEC aktiviert und die signierte Zone übernommen werden.

Aktuelle Version vom 22. März 2025, 08:29 Uhr

DNSSEC-Umstellung für eine Pseudo-Top-Level-Domain

Einleitung

Dieser Artikel beschreibt die Aktivierung von DNSSEC für eine Pseudo-Top-Level-Domain (TLD), die mit BIND9 verwaltet wird. DNSSEC stellt sicher, dass die Antworten des DNS-Servers authentifiziert und vor Manipulation geschützt sind.

Voraussetzungen

  • Ein laufender BIND9-Nameserver, der als autoritativer DNS-Server für die Pseudo-TLD dient.
  • Installation der notwendigen Werkzeuge: `dnssec-tools` oder `bind9-utils`.
  • Zugriff auf das Verzeichnis `/var/cache/bind/` zur Speicherung der signierten Zonen.

Generierung der DNSSEC-Schlüssel

DNSSEC benötigt zwei Arten von Schlüsseln:

  • Zone Signing Key (ZSK): Signiert die Zone und wird häufiger gewechselt.
  • Key Signing Key (KSK): Signiert den ZSK und wird seltener gewechselt.

int

ZSK erzeugen

  • dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int

KSK erzeugen

  • dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int

Die generierten Dateien sehen ungefähr so aus:

Kint.+008+12315.key
Kint.+008+12315.private
Kint.+008+43144.key
Kint.+008+43144.private
Integration der DNSSEC-Schlüssel in die Zone

Die .key-Dateien müssen in die Zonendatei /var/cache/bind/int eingebunden werden:

  • for k in Kint*.key ; do echo \$INCLUDE /var/cache/bind/$k >> /var/cache/bind/int; done

88.10.in-addr.arpa

ZSK erzeugen

  • dnssec-keygen -a RSASHA256 -b 2048 -n ZONE 88.10.in-addr.arpa

KSK erzeugen

  • dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE 88.10.in-addr.arpa

Die generierten Dateien sehen ungefähr so aus:

K88.10.in-addr.arpa.+008+06136.key
K88.10.in-addr.arpa.+008+06136.private
K88.10.in-addr.arpa.+008+29361.key
K88.10.in-addr.arpa.+008+29361.private
Integration der DNSSEC-Schlüssel in die Zone

Die .key-Dateien müssen in die Zonendatei /var/cache/bind/88.10.in-addr.arpa eingebunden werden:

  • for k in K88*.key ; do echo \$INCLUDE /var/cache/bind/$k >> /var/cache/bind/88.10.in-addr.arpa; done

Zonensignierung mit DNSSEC

Sobald die Schlüssel eingebunden sind, wird die Zone signiert:

  • dnssec-signzone -A -N INCREMENT -o int -t /var/cache/bind/int
  • dnssec-signzone -A -N INCREMENT -o 88.10.in-addr.arpa -t /var/cache/bind/88.10.in-addr.arpa

Dies erzeugt signierte Dateien mit der Endung .signed.

Anmerkungen zum DNSSEC-Schlüsselwechsel


BIND9-Konfiguration anpassen

Die Datei `/etc/bind/named.conf.local` muss angepasst werden, damit die signierten Zonen verwendet werden:

zone "int" {
    type master;
    file "/var/cache/bind/int.signed";
    allow-query { any; };
    dnssec-policy default;
    inline-signing yes;
};

zone "88.10.in-addr.arpa" {
    type master;
    file "/var/cache/bind/88.10.in-addr.arpa.signed";
    allow-query { any; };
    dnssec-policy default;
    inline-signing yes;
};

DNSSEC in BIND9 aktivieren

In der Datei `/etc/bind/named.conf.options` folgende Einstellungen setzen:

options {
        directory "/var/cache/bind";
        listen-on-v6 { none; };
        allow-recursion { any; };
        allow-query { any; };
        dnssec-validation auto;
};

Neustart von BIND9

Nach den Änderungen muss der DNS-Server neu gestartet werden:

  • systemctl restart bind9

Überprüfung von DNSSEC

Zur Kontrolle, ob DNSSEC korrekt funktioniert:

  • dig DNSKEY @localhost +dnssec +nocomments +nostats int
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> DNSKEY @localhost +dnssec +nocomments +nostats int
; (2 servers found)
;; global options: +cmd
;int.				IN	DNSKEY
int.			3600	IN	DNSKEY	257 3 13 T9/K08SYQ/7ZglXeagB72j7N9Y5jPVj5Y0qF2thquvpB2Go1M4A43qQw JYqRhuzomoezctxzL6G/VsP9oXxNLQ==
int.			3600	IN	RRSIG	DNSKEY 13 1 3600 20250327161304 20250313151304 54869 int. qb0Hilp7DnpOQkfDp6GhiX3kJ16pw4ItAe/u+k6Q+9kZbLiRwAaiigGO 5YLwuSKgSGbBcAiUZhpnhBdWgflVhg==
  • dig DNSKEY @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> DNSKEY @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa
; (2 servers found)
;; global options: +cmd
;88.10.in-addr.arpa.		IN	DNSKEY
88.10.in-addr.arpa.	3600	IN	DNSKEY	257 3 13 bRxcMus3OaNS63VwfNedkyso5Oui+v9gVbM3eg7sN3G43nJqgeCtr5E3 725nyKX30EYZQGiAovYM3rXWi1QS0w==
88.10.in-addr.arpa.	3600	IN	RRSIG	DNSKEY 13 4 3600 20250327161117 20250313151117 39443 88.10.in-addr.arpa. uzTWdjuEy8OlU2u6oex7WWEPb1vJtI7T1MbJy0Smz6ODKdWzYySjT1qU AcZ+aZS/qANqFaUhxFmzugupDzDLrg==


Falls die Konfiguration korrekt ist, sollten RRSIG-Einträge sichtbar sein.

Eintragen der Trust-Anker im Resolver

Beispiel zum Ermitteln der DNSKEYs

Die benötigten Schlüssel zur Einrichtung eines Trust-Ankers werden mit folgendem Befehl auf dem autoritativen DNS-Server ermittelt:

DNSKEY für int:
  • dig DNSKEY int @127.0.0.1 +short
DNSKEY für 88.10.in-addr.arpa:
  • dig DNSKEY 88.10.in-addr.arpa @127.0.0.1 +short

Ausgabeformat des benötigten Schlüssels (Beispiel):

257 3 13 ABCDEFG1234567......

Nur der DNSKEY mit der Kennung 257 3 13 wird als Trust-Anker verwendet.

DNSSEC-Trust-Anker auf dem Resolver

Um DNSSEC-Validierung für die eigene Pseudo-TLD zu ermöglichen, müssen die Trust-Anker manuell auf jedem DNS-Resolver eingetragen werden, der die Signaturen prüfen soll.

Der autoritative DNS-Server (z. B. dnsgw.int) stellt nur die signierten Zonen bereit, nimmt jedoch selbst keine Validierung vor.

Die folgenden Zeilen werden auf dem jeweiligen Resolver in der Datei /etc/bind/named.conf.options oder named.conf eingetragen:

managed-keys {

  int. initial-key 257 3 13 "<hier-den-Key-der-int-Zone-einfügen>";
  88.10.in-addr.arpa. initial-key 257 3 13 "<hier-den-Key-der-Reverse-Zone-einfügen>";

};

Abschluss

Nach dem Eintragen der Trust-Anker muss der DNS-Dienst auf jedem Resolver neu gestartet werden:

  • systemctl restart bind9

Ab jetzt validieren die Resolver die DNSSEC-Signaturen für die angegebenen Zonen korrekt.

Fazit

Mit diesen Schritten ist die Pseudo-Top-Level-Domain mit DNSSEC abgesichert. Falls ein Slave-Server existiert, muss auch dort DNSSEC aktiviert und die signierte Zone übernommen werden.