Pseudo top level domain DNSSEC: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „==== DNSSEC-Umstellung für eine Pseudo-Top-Level-Domain ==== === Einleitung === Dieser Artikel beschreibt die Aktivierung von **DNSSEC** für eine Pseudo-Top…“) |
|||
| (28 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
=== Einleitung === | === Einleitung === | ||
| − | Dieser Artikel beschreibt die Aktivierung von | + | 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 === | === Voraussetzungen === | ||
| − | * Ein laufender | + | * Ein laufender BIND9-Nameserver, der als autoritativer DNS-Server für die Pseudo-TLD dient. |
* Installation der notwendigen Werkzeuge: `dnssec-tools` oder `bind9-utils`. | * Installation der notwendigen Werkzeuge: `dnssec-tools` oder `bind9-utils`. | ||
* Zugriff auf das Verzeichnis `/var/cache/bind/` zur Speicherung der signierten Zonen. | * 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: | 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''' | '''ZSK erzeugen''' | ||
| − | + | *dnssec-keygen -a RSASHA256 -b 2048 -n ZONE 88.10.in-addr.arpa | |
| − | dnssec-keygen -a RSASHA256 -b 2048 -n ZONE | ||
| − | |||
| − | |||
'''KSK erzeugen''' | '''KSK erzeugen''' | ||
| − | + | *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 | ||
| − | |||
Die generierten Dateien sehen ungefähr so aus: | 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 | + | 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 | + | Die Datei `/etc/bind/named.conf.local` muss angepasst werden, damit die signierten Zonen verwendet werden: |
<pre> | <pre> | ||
zone "int" { | zone "int" { | ||
| Zeile 54: | Zeile 62: | ||
allow-query { any; }; | allow-query { any; }; | ||
dnssec-policy default; | 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; | ||
}; | }; | ||
| + | |||
</pre> | </pre> | ||
| − | === | + | ===DNSSEC in BIND9 aktivieren === |
In der Datei `/etc/bind/named.conf.options` folgende Einstellungen setzen: | In der Datei `/etc/bind/named.conf.options` folgende Einstellungen setzen: | ||
<pre> | <pre> | ||
options { | options { | ||
| − | + | directory "/var/cache/bind"; | |
| − | + | listen-on-v6 { none; }; | |
| − | + | allow-recursion { any; }; | |
| + | allow-query { any; }; | ||
| + | dnssec-validation auto; | ||
}; | }; | ||
</pre> | </pre> | ||
| − | === | + | ===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> | ||
| − | + | ; <<>> 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> | ||
| − | + | *dig DNSKEY @localhost +dnssec +nocomments +nostats 88.10.in-addr.arpa | |
| − | |||
<pre> | <pre> | ||
| − | + | ; <<>> 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== | ||
</pre> | </pre> | ||
| − | Falls die Konfiguration korrekt ist, sollten | + | |
| + | 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 | + | 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.