Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
lpi2:bind-dnssec [2021/06/05 05:28] ingo_wichmann [DS-Record hinterlegen] |
lpi2:bind-dnssec [2024/08/09 15:18] (aktuell) ingo_wichmann |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== dig ====== | + | ====== DNSSEC RRs: DNSKEY, DS, RRSIG ====== |
- | Aktuelle root-keys herunterladen: | + | DNSKEYs für .de Zone anzeigen: |
- | dig . DNSKEY | egrep -v '^($|;)' > root.keys | + | dig de. DNSKEY +nocomments | tee de.dnskey |
- | Nameserver abfragen: | + | DS aus DNSKEY erstellen: |
- | dig +sigchase +trusted-key=./root.keys www.isc.org A @127.0.0.1 | + | dnssec-dsfromkey -f de.dnskey de |
- | ====== Eigenen Resolver testen ====== | + | Mit veröffentlichtem DS vergleichen: |
+ | dig de. DS +short | ||
+ | |||
+ | {{:lpi2:ds-dnskey.png?400|}} | ||
+ | |||
+ | Ganze Kette für www.linuxhotel.de anzeigen: | ||
+ | dig www.linuxhotel.de +trace +dnssec | ||
+ | |||
+ | ====== validiert mein Resolver? ====== | ||
dig org. SOA +dnssec | dig org. SOA +dnssec | ||
-> flags: ad | -> flags: ad | ||
- | |||
- | dig test.dnssec-or-not.net TXT @localhost | ||
- | -> "Yes, you are using DNSSEC" | ||
====== Eigene Zone signieren ====== | ====== Eigene Zone signieren ====== | ||
+ | ===== Voraussetzung ===== | ||
+ | * öffentliche (unsignierte) Zone erstellt, wie in [[bind]] beschrieben | ||
+ | |||
+ | ===== automatisch signieren mit dnssec-policy default ===== | ||
+ | ==== Zone signieren ==== | ||
+ | <file txt /etc/bind/named.conf.local> | ||
+ | zone "example.com" { | ||
+ | type primary; | ||
+ | file "example.com"; | ||
+ | dnssec-policy default; | ||
+ | inline-signing yes; | ||
+ | }; | ||
+ | </file> | ||
+ | |||
+ | Konfiguration prüfen und BIND 9 neu laden: | ||
+ | named-checkconf -z | ||
+ | rndc reconfig | ||
+ | |||
+ | === überprüfen === | ||
+ | journalctl -fu named.service | ||
+ | -> zeigt ''DNSKEY example.com/ECDSAP256SHA256/${CSK-ID} (CSK) is now active'', wobei ${CSK-ID} die ID des neuen Keys ist. | ||
+ | cd /var/cache/bind | ||
+ | ls | ||
+ | -> zeigt die Key-Dateien | ||
+ | rndc dnssec -status example.com | ||
+ | -> dnskey: rumoured | ||
+ | named-checkzone -D -f raw -j example.com ./example.com.signed | ||
+ | -> zeigt die signierte Zone | ||
+ | dig @localhost example.com SOA +dnssec +mu | ||
+ | -> muss RRSIG enthalten | ||
+ | |||
+ | ==== DS hinterlegen ==== | ||
+ | |||
+ | named-checkzone -D -f raw -j example.com ./example.com.signed | tee ~/example.com.signed.export | ||
+ | dnssec-dsfromkey -f ~/example.com.signed.export example.com | tee ~/ds.example.com | ||
+ | oder | ||
+ | dnssec-dsfromkey Kexample.com.+008+${CSK-ID}.key | tee ~/ds.example.com | ||
+ | -> Ausgabe in der Zone des übergeordneten Servers einfügen | ||
+ | |||
+ | === prüfen === | ||
+ | dig @9.9.9.9 www.example.com +dnssec | ||
+ | |||
===== von Hand signieren ===== | ===== von Hand signieren ===== | ||
Debian: | Debian: | ||
Zeile 25: | Zeile 72: | ||
ls keys/Kexample.com.* | ls keys/Kexample.com.* | ||
- | -> Schlüssel ID-Nummer von KSK ZSK notieren (5-stellige Nummer) | + | -> Schlüssel ID-Nummer von KSK notieren (5-stellige Nummer) |
zone-signing key erzeugen: | zone-signing key erzeugen: | ||
Zeile 62: | Zeile 109: | ||
-> muss RRSIG enthalten | -> muss RRSIG enthalten | ||
- | ===== DS-Record hinterlegen ===== | + | ==== DS-Record hinterlegen ==== |
- | + | ||
- | {{:lpi2:ds-dnskey.png?400|}} | + | |
DS-Record erstellen: | DS-Record erstellen: | ||
Zeile 77: | Zeile 121: | ||
-> ad-Flag muss gesetzt sein | -> ad-Flag muss gesetzt sein | ||
- | ===== bind automatisch ZSK signieren lassen ===== | + | ===== automatisch ZSK signieren mit auto-dnssec maintain ===== |
Debian: | Debian: | ||
cd /var/cache/bind | cd /var/cache/bind | ||
Zeile 109: | Zeile 153: | ||
named-compilezone -f RAW -o - example.com master/example.com.signed | less | named-compilezone -f RAW -o - example.com master/example.com.signed | less | ||
+ | ===== automatisch signieren mit dnssec-policy, ZSK und KSK ===== | ||
+ | ==== Voraussetzung ==== | ||
+ | * öffentliche (unsignierte) Zone vorhanden | ||
+ | |||
+ | ==== Zone signieren ==== | ||
+ | <file txt /etc/bind/named.conf.options> | ||
+ | options { | ||
+ | … | ||
+ | }; | ||
+ | dnssec-policy "kskzsk" { | ||
+ | keys { | ||
+ | ksk lifetime unlimited algorithm ecdsa256; | ||
+ | zsk lifetime P90D algorithm ecdsa256; | ||
+ | }; | ||
+ | }; | ||
+ | </file> | ||
+ | |||
+ | <file txt /etc/bind/named.conf.local> | ||
+ | zone "example.com" { | ||
+ | type primary; | ||
+ | file "primary/example.com"; | ||
+ | dnssec-policy "kskzsk"; | ||
+ | update-policy local; | ||
+ | inline-signing yes; | ||
+ | }; | ||
+ | </file> | ||
+ | |||
+ | Konfiguration prüfen und BIND 9 neu laden: | ||
+ | named-checkconf -z | ||
+ | rndc reconfig | ||
+ | |||
+ | === überprüfen === | ||
+ | journalctl -fu named.service | ||
+ | -> zeigt ''DNSKEY example.com/ECDSAP256SHA256/${KSK-ID} (KSK) is now active'', wobei ${KSK-ID} die ID des neuen KSK ist. | ||
+ | ls /var/cache/bind | ||
+ | -> zeigt die Key-Dateien | ||
+ | named-checkzone -D -f raw -j example.com example.com.signed | ||
+ | -> zeigt die signierte Zone | ||
+ | dig @localhost example.com SOA +dnssec +mu | ||
+ | -> muss RRSIG enthalten | ||
+ | |||
+ | ==== DS hinterlegen ==== | ||
+ | |||
+ | dnssec-dsfromkey Kexample.com.+008+${KSK-ID}.key | tee ~/ds.example.com | ||
+ | -> Ausgabe in der Zone den übergeordneten Servers einfügen | ||
====== Doku und Links ====== | ====== Doku und Links ====== | ||
- | * http://dnssectest.sidnlabs.nl/ | + | * https://bind9.readthedocs.io/en/latest/dnssec-guide.html |
- | * http://test.dnssec-or-not.org/ | + | * https://internet.nl/ |
* file:///usr/share/doc/bind9-doc/arm/Bv9ARM.ch04.html#DNSSEC | * file:///usr/share/doc/bind9-doc/arm/Bv9ARM.ch04.html#DNSSEC | ||