Pseudo top level domain DNSSEC: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
==== DNSSEC-Umstellung für eine Pseudo-Top-Level-Domain ====
+
=DNSSEC für Pseudo Top Level Domain (.int)=
  
=== Einleitung ===
+
=Ziel=
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.
+
*Der Server 192.168.6.88 ist der gefakte Root für .int
 +
*Die Zone int wird kryptografisch signiert
 +
*Der Server validiert nicht – er liefert nur signierte Daten
 +
*Die Validierung erfolgt später auf einem Resolver mit Trust-Anker
  
=== Voraussetzungen ===
+
=Voraussetzungen=
* Ein laufender BIND9-Nameserver, der als autoritativer DNS-Server für die Pseudo-TLD dient.
+
*BIND9 läuft
* Installation der notwendigen Werkzeuge: `dnssec-tools` oder `bind9-utils`.
+
*bind9-utils ist installiert
* Zugriff auf das Verzeichnis `/var/cache/bind/` zur Speicherung der signierten Zonen.
+
*Zone int funktioniert ohne DNSSEC
  
===Generierung der DNSSEC-Schlüssel ===
+
=Auf dem Rechner 192.168.6.88=
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==
 
*[[DNSSEC-Schlüsselwechsel]]
 
 
 
 
 
===BIND9-Konfiguration anpassen ===
 
Die Datei `/etc/bind/named.conf.local` muss angepasst werden, damit die signierten Zonen verwendet werden:
 
<pre>
 
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" {
+
==Optionen==
    type master;
+
*cat /etc/bind/named.conf.options
    file "/var/cache/bind/88.10.in-addr.arpa.signed";
 
    allow-query { any; };
 
    dnssec-policy default;
 
    inline-signing yes;
 
};
 
 
 
</pre>
 
 
 
===DNSSEC in BIND9 aktivieren ===
 
In der Datei `/etc/bind/named.conf.options` folgende Einstellungen setzen:
 
 
<pre>
 
<pre>
 
options {
 
options {
 
         directory "/var/cache/bind";
 
         directory "/var/cache/bind";
 +
        dnssec-validation no;
 
         listen-on-v6 { none; };
 
         listen-on-v6 { none; };
 
         allow-recursion { any; };
 
         allow-recursion { any; };
         allow-query { any; };
+
         allow-query   { any; };
         dnssec-validation auto;
+
         allow-transfer { none; };
 
};
 
};
 
</pre>
 
</pre>
  
===Neustart von BIND9 ===
+
==Schlüssel für die Zone int erzeugen==
Nach den Änderungen muss der DNS-Server neu gestartet werden:
+
;ZSK erzeugen
*systemctl restart bind9
+
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
  
===Überprüfung von DNSSEC ===
+
;KSK erzeugen
Zur Kontrolle, ob DNSSEC korrekt funktioniert:
+
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int
*dig DNSKEY  @localhost +dnssec +nocomments +nostats int
 
<pre>
 
; <<>> 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>
 
  
*dig DNSKEY  @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa
+
;Beispielausgabe
 
<pre>
 
<pre>
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> DNSKEY @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa
+
Kint.+008+12345.key
; (2 servers found)
+
Kint.+008+12345.private
;; global options: +cmd
+
Kint.+008+67890.key
;88.10.in-addr.arpa. IN DNSKEY
+
Kint.+008+67890.private
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>
  
 +
==DNSKEY in die Zone einbinden==
 +
;In die Datei /var/cache/bind/int einfügen
 +
*for k in Kint*.key ; do echo "\$INCLUDE /var/cache/bind/$k" >> /var/cache/bind/int; done
  
Falls die Konfiguration korrekt ist, sollten RRSIG-Einträge sichtbar sein.
+
==Zone signieren==
 +
*dnssec-signzone -A -N INCREMENT -o int -t /var/cache/bind/int
  
=== Eintragen der Trust-Anker im Resolver ===
+
;Erzeugt
==== Beispiel zum Ermitteln der DNSKEYs ====
+
<pre>
 +
/var/cache/bind/int.signed
 +
</pre>
  
Die benötigten Schlüssel zur Einrichtung eines Trust-Ankers werden mit folgendem Befehl auf dem autoritativen DNS-Server ermittelt:
+
==BIND auf signierte Zone umstellen==
 +
*cat /etc/bind/named.conf.local
 +
<pre>
 +
zone "int" {
 +
    type master;
 +
    file "/var/cache/bind/int.signed";
 +
};
 +
</pre>
  
;'''DNSKEY für int:''' 
+
==Dienst neu starten==
*dig DNSKEY int @127.0.0.1 +short
+
*systemctl restart bind9
  
;'''DNSKEY für 88.10.in-addr.arpa:''' 
+
==Überprüfung==
*dig DNSKEY 88.10.in-addr.arpa @127.0.0.1 +short
+
*dig @192.168.6.88 int DNSKEY +dnssec
  
Ausgabeformat des benötigten Schlüssels (Beispiel):
+
;Es müssen DNSKEY und RRSIG Einträge erscheinen
  
257 3 13 ABCDEFG1234567......
+
=Trust-Anker auf dem Resolver=
  
Nur der DNSKEY mit der Kennung '''257 3 13''' wird als Trust-Anker verwendet.
+
;DNSKEY ermitteln
 +
*dig DNSKEY int @192.168.6.88 +short
  
==== DNSSEC-Trust-Anker auf dem Resolver ====
+
;Nur der Key mit Kennung 257 3 13 wird verwendet
 
 
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:
 
  
 +
;Auf dem validierenden Resolver eintragen
 +
*cat /etc/bind/named.conf.options
 +
<pre>
 
managed-keys {
 
managed-keys {
   int. initial-key 257 3 13 "<hier-den-Key-der-int-Zone-einfügen>";
+
   int. initial-key 257 3 13 "BASE64-KSK-HIER-EINFÜGEN";
  88.10.in-addr.arpa. initial-key 257 3 13 "<hier-den-Key-der-Reverse-Zone-einfügen>";
 
 
};
 
};
 
+
</pre>
==== Abschluss ====
 
 
 
Nach dem Eintragen der Trust-Anker muss der DNS-Dienst auf jedem Resolver neu gestartet werden:
 
  
 
*systemctl restart bind9
 
*systemctl restart bind9
  
Ab jetzt validieren die Resolver die DNSSEC-Signaturen für die angegebenen Zonen korrekt.
+
=Ergebnis=
 
+
*Der Fake Root .int ist signiert
=== Fazit ===
+
*Der Resolver vertraut dem KSK von int
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.
+
*Die Vertrauenskette beginnt im Resolver
 +
*Der Fake Root arbeitet wie eine echte TLD mit eigenem Trust-Anker

Version vom 24. Februar 2026, 14:40 Uhr

DNSSEC für Pseudo Top Level Domain (.int)

Ziel

  • Der Server 192.168.6.88 ist der gefakte Root für .int
  • Die Zone int wird kryptografisch signiert
  • Der Server validiert nicht – er liefert nur signierte Daten
  • Die Validierung erfolgt später auf einem Resolver mit Trust-Anker

Voraussetzungen

  • BIND9 läuft
  • bind9-utils ist installiert
  • Zone int funktioniert ohne DNSSEC

Auf dem Rechner 192.168.6.88

Optionen

  • cat /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
        dnssec-validation no;
        listen-on-v6 { none; };
        allow-recursion { any; };
        allow-query   { any; };
        allow-transfer { none; };
};

Schlüssel für die Zone int erzeugen

ZSK erzeugen
  • dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
KSK erzeugen
  • dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int
Beispielausgabe
Kint.+008+12345.key
Kint.+008+12345.private
Kint.+008+67890.key
Kint.+008+67890.private

DNSKEY in die Zone einbinden

In die Datei /var/cache/bind/int einfügen
  • for k in Kint*.key ; do echo "\$INCLUDE /var/cache/bind/$k" >> /var/cache/bind/int; done

Zone signieren

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

BIND auf signierte Zone umstellen

  • cat /etc/bind/named.conf.local
zone "int" {
    type master;
    file "/var/cache/bind/int.signed";
};

Dienst neu starten

  • systemctl restart bind9

Überprüfung

  • dig @192.168.6.88 int DNSKEY +dnssec
Es müssen DNSKEY und RRSIG Einträge erscheinen

Trust-Anker auf dem Resolver

DNSKEY ermitteln
  • dig DNSKEY int @192.168.6.88 +short
Nur der Key mit Kennung 257 3 13 wird verwendet
Auf dem validierenden Resolver eintragen
  • cat /etc/bind/named.conf.options
managed-keys {
   int. initial-key 257 3 13 "BASE64-KSK-HIER-EINFÜGEN";
};
  • systemctl restart bind9

Ergebnis

  • Der Fake Root .int ist signiert
  • Der Resolver vertraut dem KSK von int
  • Die Vertrauenskette beginnt im Resolver
  • Der Fake Root arbeitet wie eine echte TLD mit eigenem Trust-Anker