Seite anzeigenLinks hierherZu Buch hinzufügenNach oben Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. ===== DNSsec mit Bind9 ===== Standards für die "Domain Name System Security Extensions (DNSSEC)": RFC 4033, RFC 4034, RFC 4035, RFC 5011 und RFC 5155. \\ \\ === Entropie zur Schlüsselgenerierung === Um genügend Entropie für die Erzeugung der Schlüssel zur Verfügung zu haben, sollte z.B. "haveged" installiert werden. Bei aktuellen Distributionen sollte dies allerdings nicht mehr unbedingt notwendig sein: <code bash> root@noc:~# apt install haveged root@noc:~# haveged </code> === Einstellungen für Bind === dnssec-validation ist seit BIND Version 9.8 default auf yes, sollte aber für das Management des root-key (/var/cache/bind/managed-keys.bind) in /etc/bind/named.conf auf dnssec-validation auto gestellt werden. Ferner sollte mit der Option key-directory für die Schlüssel ein eigenes Verzeichnis angegeben werden, in denen BIND beim Signierten nach gültigen DNSKEYs sucht. <code bash> root@noc:~# less /etc/bind/named.conf options { .... key-directory "/var/chache/bind/keys"; dnssec-validation auto; dnssec-lookaside auto; ... }; root@noc:~# mkdir -p /var/cache/bind/keys/ root@noc:~# chown -R bind:bind /var/chache/bind/keys/ </code> Danach BIND mit <code bash> root@noc:~# systemctl restart bind9 </code> neu starten. === Zone-signing Keys erstellen === Mit dnssec-keygen wird ein Zone-signing-key-Paar aus öffentlichem (.key) und privatem (.private) Schlüssel erzeugt Der "haveged"-Daemon erzeugt eine große Entropy in /dev/random. Alternativ kann auch das "non-blocking" pseudo-random device /dev/urandom verwendet werden. Hierbei sinkt jedoch die Sicherheit etwas. === Zone Signing Key (ZSK) generieren === <code bash> root@noc:/var/cache/bind/keys# dnssec-keygen -3 -a RSASHA512 -b 2048 -n ZONE -r /dev/random hackerbruecke.net Generating key pair.......+++++ ...............................................+++++ Khackerbruecke.net.+010+09558 * "-3" aktiviert NSEC3 * "-a RSASHA512" bestimmt den Typ der Signatur (muss wegen "-3" kompatibel sein! RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 und ED448 stehen zur Auswahl) * "-b" gibt die gewünschte Blockgröße an * "-n" spezifiziert den Nametyp wie ZONE, HOST, USER * "-r" wählt das Random-Device aus </code> === Key Signing Key (KSK) generieren === <code bash> root@noc:/var/cache/bind/keys# dnssec-keygen -3 -a RSASHA512 -b 4096 -n ZONE -r /dev/random -f KSK hackerbruecke.net Generating key pair........................................................++++ .................................................................................................++++ Khackerbruecke.net.+010+48817 * "-3" aktiviert NSEC3 * "-a RSASHA512" bestimmt den Typ der Signatur (muss wegen "-3" kompatibel sein! RSASHA256, RSASHA512, ECCGOST, ECDSAP256SHA256, ECDSAP384SHA384, ED25519 und ED448 stehen zur Auswahl) * "-b" gibt die gewünschte Blockgröße an * "-n" spezifiziert den Nametyp wie ZONE, HOST, USER * "-r" wählt das Random-Device aus * "-f KSK" setzt das Flag im KEY/DNSKEY record </code> === Owner und Rechte auf Schlüssel setzen === <code bash> root@noc:/var/cache/bind/keys# chown -R bind:bind /var/cache/bind/keys/ </code> === Zone signieren === Im praktischen Betrieb werden Zonen nicht per Hand auf der Kommandozeile signiert. Zum einmaligen Signieren per Hand verwenden, kann aber dnssec-signzone verwendet werde: <code bash> root@noc:/var/cache/bind/keys# dnssec-signzone -S -o hackerbruecke.net /var/cache/bind/hackerbruecke.zone * "-S" aktiviert "smart signing", d.h. es wird im in /etc/bind/named.conf angegebenen key directory nach Schlüsseln gesucht, die zum Signieren verwendet werden * "-o hackerbruecke.net" gibt die Zone mit dem Namen "hackerbruecke.net" als Origin an, nach der in der Datei /var/cache/bind/hackerbruecke.zone gesucht wird </code> === DS Resource Record im Parent veröffentlichen === Wenn die Zone online geht, muss noch der DS RR im Parent eingetragen werden. Dank "smart signing" hat dnssec-signzone für uns diesen schon für den verwendeten KSK erstellt. <code bash> root@noc:/var/cache/bind/keys# ls -lthr total 16K -rw------- 1 root root 3.3K Apr 7 16:35 Khackerbruecke.net.+010+48817.private -rw-r--r-- 1 root root 964 Apr 7 16:35 Khackerbruecke.net.+010+48817.key -rw------- 1 root root 1.8K Apr 7 16:36 Khackerbruecke.net.+010+09558.private -rw-r--r-- 1 root root 618 Apr 7 16:36 Khackerbruecke.net.+010+09558.key </code> === Signieren der Zone === <code bash> for key in `ls Khackerbruecke.net.*.key` do echo "\$INCLUDE /var/cache/bind/keys/$key">> /var/cache/bind/hackerbruecke.zone done dnssec-signzone -3 `head -c 512 /dev/random | sha1sum | cut -b 1-16` -z -H 330 -K /var/cache/bind/keys -t -o hackerbruecke.net /var/cache/bind/hackerbruecke.net </code> Durch das Signieren wird eine neue Zonendatei mit dem Suffix ".signed" erzeugt. === Owner und Rechte der Zonefiles setzen === <code bash> root@noc:/var/cache/bind/keys# chown -R bind:bind /var/cache/bind/ </code> === Zone veröffentlichen === <code bash> root@noc:/var/cache/bind/keys# vim /etc/bind/named.conf zone hackerbruecke.net { type master; file "/var/cache/bind/hackerbruecke.net.zone.signed"; allow-transfer { "slaves"; }; notify yes; }; </code> BIND neu starten: <code bash> root@noc:/var/cache/bind/keys# systemctl restart bind9 </code> === DNSsec-Schlüssel beim Registrar bekanntgeben === Für die Aktivierung ist die Angabe des richtigen KSK von großer Bedeutung. Die Zone höher muss die Delegation Signer Ressource Records (DS-RR) für die darunterliegende Zone eintragen. Sind die DS-RR eine Zone höher eingetragen, kann die Zone nun verifiziert werden. === Testen === <code bash> root@noc:/var/cache/bind/keys# dig hackerbruecke.net dnskey +noall +answer +multiline root@noc:/var/cache/bind/keys# dig A www.hackerbruecke.net +dnssec </code> https://dnssec-analyzer.verisignlabs.com/ http://dnsviz.net/ === Wichtig === Nach jeder Änderung in der Zonendatei, muss diese neu signiert werden! \\ \\ <- [[linux:linux|zurück]] linux/dnssec.txt Zuletzt geändert: 2024-04-16 03:00von dokuwikiadmin