Pseudo top level domain DNSSEC: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | ==== | + | =Schaubild= |
| + | ==Forward Zonen== | ||
| + | {{#drawio:top-level-1}} | ||
| + | ==Reverse Zonen== | ||
| + | {{#drawio:rev-top-level-1}} | ||
| − | = | + | =Script= |
| − | + | *[[Einrichtungs Script PSEUDO Top level]] | |
| + | *[[Media:Pseudeo-dns.sh]] | ||
| − | = | + | =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 | |
| − | + | <pre> | |
| − | + | options { | |
| − | + | directory "/var/cache/bind"; | |
| − | + | dnssec-validation no; | |
| − | + | listen-on-v6 { none; }; | |
| − | + | allow-recursion { any; }; | |
| − | + | allow-query { any; }; | |
| − | + | allow-transfer { 127.0.0.1; }; | |
| − | + | }; | |
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | </pre> | ||
| − | == | + | ==Die Zonenfestlegung== |
| − | + | *cat /etc/bind/named.conf.local | |
<pre> | <pre> | ||
zone "int" { | zone "int" { | ||
type master; | type master; | ||
| − | file " | + | forwarders {}; |
| − | + | file "int.signed"; | |
| − | |||
| − | |||
}; | }; | ||
zone "88.10.in-addr.arpa" { | zone "88.10.in-addr.arpa" { | ||
type master; | type master; | ||
| − | file " | + | forwarders {}; |
| − | + | file "88.10.in-addr.arpa"; | |
| − | |||
| − | |||
}; | }; | ||
| + | </pre> | ||
| + | |||
| + | ==Die Zonen selbst (unsigniert)== | ||
| + | *cat /var/cache/bind/int | ||
| + | <pre> | ||
| + | $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$ | ||
</pre> | </pre> | ||
| − | + | *cat /var/cache/bind/88.10.in-addr.arpa | |
| − | |||
<pre> | <pre> | ||
| − | + | $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. | |
| − | |||
| − | |||
</pre> | </pre> | ||
| − | === | + | ==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 |
| − | + | <pre> | |
| + | /var/cache/bind/int.signed | ||
| + | </pre> | ||
| − | + | ==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 | |
| − | <pre> managed-keys { | + | ;Auf dem Resolver eintragen |
| − | int. initial-key 257 3 13 " | + | *cat /etc/bind/named.conf.options |
| − | + | <pre> | |
| + | managed-keys { | ||
| + | int. initial-key 257 3 13 "BASE64-KSK-HIER-EINFÜGEN"; | ||
| + | }; | ||
</pre> | </pre> | ||
| − | + | *systemctl restart bind9 | |
| − | |||
| − | |||
| − | |||
| − | = | + | =Ergebnis= |
| − | + | *Der Fake Root .int ist signiert | |
| + | *Delegationen funktionieren wie zuvor | ||
| + | *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

