Pseudo top level domain DNSSEC: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=Schaubild=
 
=Schaubild=
 +
==Forward Zonen==
 
{{#drawio:top-level-1}}
 
{{#drawio:top-level-1}}
 +
==Reverse Zonen==
 +
{{#drawio:rev-top-level-1}}
  
 
=Script=
 
=Script=
Zeile 20: Zeile 23:
 
<pre>
 
<pre>
 
options {
 
options {
        directory "/var/cache/bind";
+
directory "/var/cache/bind";
        dnssec-validation no;
+
dnssec-validation no;
        listen-on-v6 { none; };
+
listen-on-v6 { none; };
        allow-recursion { any; };
+
allow-recursion { any; };
 
         allow-query  { any; };
 
         allow-query  { any; };
         allow-transfer { none; };
+
         allow-transfer { 127.0.0.1; };
 
};
 
};
 +
 
</pre>
 
</pre>
  
Zeile 41: Zeile 45:
 
     type master;
 
     type master;
 
     forwarders {};
 
     forwarders {};
     file "88.10.in-addr.arpa.signed";
+
     file "88.10.in-addr.arpa";
 
};
 
};
 
</pre>
 
</pre>
Zeile 54: Zeile 58:
 
dnsgw      IN A      192.168.6.88
 
dnsgw      IN A      192.168.6.88
  
$GENERATE 100-113 ns.it$ A 10.88.$.21
+
$GENERATE 201-213 ns.it$ A 10.88.$.21
$GENERATE 100-113 it$ NS ns.it$
+
$GENERATE 201-213 it$ NS ns.it$
 
</pre>
 
</pre>
  
Zeile 64: Zeile 68:
 
                 2023022010 14400 3600 3600000 86400)
 
                 2023022010 14400 3600 3600000 86400)
 
             IN NS    dnsgw.int.
 
             IN NS    dnsgw.int.
$GENERATE 100-113   $  NS ns.it$.int.
+
$GENERATE 201-213   $  NS ns.it$.int.
 
</pre>
 
</pre>
  
Zeile 72: Zeile 76:
 
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
 
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
 
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int
 
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int
 
;Für die Reverse Zone
 
*dnssec-keygen -a RSASHA256 -b 2048 -n ZONE 88.10.in-addr.arpa
 
*dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE 88.10.in-addr.arpa
 
  
 
==DNSKEY in die Zonen einbinden==
 
==DNSKEY in die Zonen einbinden==
Zeile 81: Zeile 81:
 
;int
 
;int
 
*for k in Kint*.key ; do echo "\$INCLUDE /var/cache/bind/$k" >> /var/cache/bind/int; done
 
*for k in Kint*.key ; do echo "\$INCLUDE /var/cache/bind/$k" >> /var/cache/bind/int; done
 
;reverse
 
*for k in K88*.key ; do echo "\$INCLUDE /var/cache/bind/$k" >> /var/cache/bind/88.10.in-addr.arpa; done
 
  
 
==Zonen signieren==
 
==Zonen signieren==
  
 
*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
+
 
  
 
;Erzeugt
 
;Erzeugt
 
<pre>
 
<pre>
 
/var/cache/bind/int.signed
 
/var/cache/bind/int.signed
/var/cache/bind/88.10.in-addr.arpa.signed
 
 
</pre>
 
</pre>
  
Zeile 101: Zeile 97:
 
==Überprüfung==
 
==Überprüfung==
 
*dig @192.168.6.88 int DNSKEY +dnssec
 
*dig @192.168.6.88 int DNSKEY +dnssec
*dig @192.168.6.88 88.10.in-addr.arpa DNSKEY +dnssec
 
  
 
;DNSKEY und RRSIG Einträge müssen sichtbar sein
 
;DNSKEY und RRSIG Einträge müssen sichtbar sein
Zeile 117: Zeile 112:
 
managed-keys {
 
managed-keys {
 
   int. initial-key 257 3 13 "BASE64-KSK-HIER-EINFÜGEN";
 
   int. initial-key 257 3 13 "BASE64-KSK-HIER-EINFÜGEN";
  88.10.in-addr.arpa. initial-key 257 3 13 "BASE64-KSK-HIER-EINFÜGEN";
 
 
};
 
};
 
</pre>
 
</pre>
Zeile 125: Zeile 119:
 
=Ergebnis=
 
=Ergebnis=
 
*Der Fake Root .int ist signiert
 
*Der Fake Root .int ist signiert
*Die Reverse Zone ist signiert
 
 
*Delegationen funktionieren wie zuvor
 
*Delegationen funktionieren wie zuvor
 
*DNSSEC beginnt beim Resolver durch expliziten Trust-Anker
 
*DNSSEC beginnt beim Resolver durch expliziten Trust-Anker

Aktuelle Version vom 18. März 2026, 07:11 Uhr

Schaubild

Forward Zonen

Reverse Zonen

Script

Die Idee

  • Wir faken einen Top Level Domain Nameserver.
  • Dieser hat zur Aufgabe zu wissen wer die Second Level Domains verwaltet.
  • Wir delegieren diese Domains an die Teilnehmer.
  • Durch das Einstellen des gefakten Top Level Domain Servers als Forwarder wird jeder Anfragende an den richtigen Nameserver geleitet.
  • Die Zone .int wird zusätzlich mit DNSSEC signiert.
  • Der Trust-Anker wird später auf validierenden Resolvern gesetzt.

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 { 127.0.0.1; };
};

Die Zonenfestlegung

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

zone "88.10.in-addr.arpa" {
    type master;
    forwarders {};
    file "88.10.in-addr.arpa";
};

Die Zonen selbst (unsigniert)

  • cat /var/cache/bind/int
$TTL 300
@         IN SOA  dnsgw.int. technik.kit.lab. (
                2023022010 14400 3600 3600000 86400)
             IN NS     dnsgw
dnsgw       IN A      192.168.6.88

$GENERATE 201-213 ns.it$ A 10.88.$.21
$GENERATE 201-213 it$ NS ns.it$
  • cat /var/cache/bind/88.10.in-addr.arpa
$TTL 300
@         IN SOA  dnsgw.int. technik.kit.lab. (
                2023022010 14400 3600 3600000 86400)
             IN NS     dnsgw.int.
$GENERATE 201-213   $  NS ns.it$.int.

DNSSEC Schlüssel erzeugen

Für die Zone int
  • dnssec-keygen -a RSASHA256 -b 2048 -n ZONE int
  • dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE int

DNSKEY in die Zonen einbinden

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

Zonen signieren

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


Erzeugt
/var/cache/bind/int.signed

Dienst neu starten

  • systemctl restart bind9

Überprüfung

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

Trust-Anker auf einem validierenden Resolver

KSK ermitteln
  • dig DNSKEY int @192.168.6.88 +short
Nur der Key mit Kennung 257 3 13 wird verwendet
Auf dem 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
  • Delegationen funktionieren wie zuvor
  • DNSSEC beginnt beim Resolver durch expliziten Trust-Anker