DNSKEYs für .de Zone anzeigen:
dig de. DNSKEY +nocomments | tee de.dnskey
DS aus DNSKEY erstellen:
dnssec-dsfromkey -f de.dnskey de
Mit veröffentlichtem DS vergleichen:
dig de. DS +short
Ganze Kette für www.linuxhotel.de anzeigen:
dig www.linuxhotel.de +trace +dnssec
dig org. SOA +dnssec
→ flags: ad
zone "example.com" { type primary; file "example.com"; dnssec-policy default; inline-signing yes; };
Konfiguration prüfen und BIND 9 neu laden:
named-checkconf -z rndc reconfig
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
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
dig @9.9.9.9 www.example.com +dnssec
Debian:
cd /var/cache/bind mkdir keys chown bind keys
key-signing key (KSK) erzeugen: (grösserer Schlüssel und KSK-Flag) 1)
dnssec-keygen -a RSASHA256 -b 2560 -n ZONE -K keys/ -f KSK example.com ls keys/Kexample.com.*
→ Schlüssel ID-Nummer von KSK notieren (5-stellige Nummer)
zone-signing key erzeugen:
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE -K keys/ example.com ls keys/Kexample.com.* less keys/Kexample.com.*.key
→ Schlüssel ID-Nummer von ZSK notieren (5-stellige Nummer)
Rechte auf den Schlüsseldateien anpassen:
chown bind keys/*
Öffentliche Schlüssel zu Zone hinzufügen:
cat keys/Kexample.com.+008+*.key >> master/example.com
Signierte Zonendatei erzeugen: (30 Tage gültig)
dnssec-signzone -o example.com -k keys/Kexample.com.+008+${KSK-ID}.private master/example.com keys/Kexample.com.+008+${ZSK-ID}.private chown bind:bind master/example.com.signed less master/example.com.signed
Signierte Zonendatei einbinden:
zone "example.com" { … file "master/example.com.signed"; … };
Konfiguration prüfen und BIND 9 neu laden:
named-checkconf -z rndc reload
Testen:
dig @localhost example.com SOA +dnssec +mu
→ muss RRSIG enthalten
DS-Record erstellen:
dnssec-dsfromkey keys/Kexample.com.+008+${KSK-ID}.key dnssec-dsfromkey keys/Kexample.com.+008+${KSK-ID}.key > ~/ds-example.com
Eintrag bei Registry bzw. übergeordneter Domain hinterlegen
Testen:
dig @1.1.1.1 soa example.com +dnssec +mu
→ ad-Flag muss gesetzt sein
Debian:
cd /var/cache/bind
Schritte wie bei von Hand signieren, aber signierte Zonendatei nicht mehr (selbst) erzeugen, sondern ab da folgende Schritte:
Zonendatei von bind signieren lassen:
zone "example.com" { … file "master/example.com"; auto-dnssec maintain; inline-signing yes; … };
Konfiguration prüfen und BIND 9 neu laden:
named-checkconf -z rndc reconfig
Zone (erstmalig) signieren:
rndc sign example.com
Testen:
dig @localhost example.com SOA +dnssec +mu
→ muss RRSIG enthalten
rndc sync linuxhotel.de named-compilezone -f RAW -o - example.com master/example.com.signed | less
options { … }; dnssec-policy "kskzsk" { keys { ksk lifetime unlimited algorithm ecdsa256; zsk lifetime P90D algorithm ecdsa256; }; };
zone "example.com" { type primary; file "primary/example.com"; dnssec-policy "kskzsk"; update-policy local; inline-signing yes; };
Konfiguration prüfen und BIND 9 neu laden:
named-checkconf -z rndc reconfig
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
dnssec-dsfromkey Kexample.com.+008+${KSK-ID}.key | tee ~/ds.example.com
→ Ausgabe in der Zone den übergeordneten Servers einfügen