Created: 2022-03-08 Tue 10:15
Seit BIND 9.6 können Zonen mit den BIND 9 Tools manuell signiert werden
DNSSEC in der BIND 9 Konfigurationsdatei named.conf anschalten
options {
directory "/var/named";
dnssec-enable yes;
};
% dnssec-keygen -a RSASHA256 -b 1536 -n ZONE zone0x.dnslab.org Generating key pair.........++++ ............................ Kzone0x.dnslab.org.+008+16239 % more Kzone0x.dnslab.org.+008+16239.key ; This is a zone-signing key, keyid 16239, for zone0x.dnslab.org. ; Created: 20160202121320 (Tue Feb 2 13:13:20 2016) ; Publish: 20160202121320 (Tue Feb 2 13:13:20 2016) ; Activate: 20160202121320 (Tue Feb 2 13:13:20 2016) zone0x.dnslab.org. IN DNSKEY 256 3 8 AwEAAc1xFtt40wPEx4TVB7h8Ac7HvMZuF1LIqESU/0HUUzDT2rkujMdL z0fgJJQVStYIbb1fXN0/PmKayEpj5ScbT7WU9Bef6b49uG1PwhsaftRr /udr3DEA6MTEdRqkl8K+E3P9hFj4XKxus45MYVSPaXZg3TcIQK3xpXC8 sKISny43cQaJpm12oBtKsANlA25KRJC8soP1s/GqLSnArWDMN/YGqvs0 QECulpm2Nh1uULZfzwga8515xizyx5yAl/sgWQ==
Erstellen des Key-Signing-Keys (KSK)
% dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE zone0x.dnslab.org Generating key pair................................................... Kzone0x.dnslab.org.+008+04351 % more Kzone0x.dnslab.org.+008+04351.key ; This is a key-signing key, keyid 4351, for zone0x.dnslab.org. ; Created: 20160202121714 (Tue Feb 2 13:17:14 2016) ; Publish: 20160202121714 (Tue Feb 2 13:17:14 2016) ; Activate: 20160202121714 (Tue Feb 2 13:17:14 2016) zone0x.dnslab.org. IN DNSKEY 257 3 8 AwEAAcmn/QkiCne922gBBBuJJOnq9jnG2yYbB10zBS2SgUCUxlZfM2ja PAyubB2V+QhFsKf0VKUsVGl28JWAMcG1NGitj+nna4sGwvmeumj70DbG ZzynwcFknEZG1Swn2bM/OFmlMS2WV3luzDYKnLeZgvN5geB6ZetONlpP H9am3MRmExNIxoFb5NEcUlCzxSUI5GzjPZtGmCtDoNKrGE5nsssCgrjw ec6hbeXLOjP9JiQ3egF3+PJHLUOjuqXKwSofHw4jV4Rqc3eP+uAHk5Wp iH/BNW7c7lJ9IP+jZYZ3dp3SkO2qU8BOVV4fcm1L+IVcA9jwuuPaOV53 j9L8fCTL/Uk=
Die unsignierte Zone
$TTL 3600
$ORIGIN zone0x.dnslab.org.
@ IN SOA server0x.dnslab.org. hostmaster.zone0x.dnslab.org. (
1001 ; serial
1d ; refreh
2h ; retry
4w ; expire
30m ; negTTL
)
IN NS server0x.dnslab.org.
IN MX 10 mail.zone0x.dnslab.org.
www IN A 192.168.53.199
mail IN A 192.168.53.199
Die öffentlichen Schlüssel (ZSK und KSK) der Zone hinzufügen
% cat Kzone0x.dnslab.org.+008+*.key >> zone0x.dnslab.org
Die Zonen-Datei signieren
% dnssec-signzone -o zone0x.dnslab.org -k Kzone0x.dnslab.org.+008+04351.private \
zone0x.dnslab.org Kzone0x.dnslab.org.+008+16239.private
Verifying the zone using the following algorithms: RSASHA256.
Zone fully signed:
Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked
ZSKs: 1 active, 0 stand-by, 0 revoked
zone0x.dnslab.org.signed
Syntax:
dnssec-signzone -o <origin> -k <KSK-privat> <Zonendatei> <ZSK-privat>
-j sec Jitter, Variation in Sekunden der Signatur-Gültigkeit-M maxttl - die maximale TTL in der Zone festlegen. Höhere
TTL-Werte werden auf diesem Wert gesetzt.-s starttime - Gültigkeits-Beginn der Signaturen-e endtime - Gültigkeits-Ende der Signaturen-N SOA-format - Format der SOA-Seriennummer
increment SOA-Serial um eins erhöhenunixtime Unixtime (Sekunden seit dem 1.1.1970) als SOA-Serial
benutzen-x DNSKEY Record-Set nur mit dem KSK signieren (keine Signatur mit
dem ZSK)-n numcpus Anzahl CPU-Kerne für die Signierung-t Ausgabe von Statistiken zur Geschwindigkeitsmessung
more zone0x.dnslab.org.signed
zone0x.dnslab.org. 3600 IN SOA server0x.dnslab.org. hostmaster.zone0x.dnslab.org. (
1001 ; serial
86400 ; refresh (1 day)
7200 ; retry (2 hours)
2419200 ; expire (4 weeks)
1800 ; minimum (30 minutes)
)
3600 RRSIG SOA 8 3 3600 (
20160303114542 20160202114542 16239 zone0x.dnslab.org.
jT+M9IhjViHkoLnC5/y+MaHYoxpcoyHvif7H
sFESQfk7JBx654zb7OZ2LVxsmMnGtiqxkLlD
l5nJtBJuWXMufPLks+qQb42YjdGgU6vf5WOI
GkTyTMf0ZcNc3ULZZCMG/Vkf3Pak4O6He+cB
xvdbDzOOaLcQqlKH8xY/ylmHawJTm8Mmcbb/
1tL3B/Iv0SI9Lv+F/g+ajaA7fd3bcr0Vueol
gOTJ3OZkIEoQFROrn5UMQ/fvbY7Go2TjDT7I
GYMu )
3600 NS server0x.dnslab.org.
3600 RRSIG NS 8 3 3600 (
20160303114542 20160202114542 16239 zone0x.dnslab.org.
ColPExa9EdSA1Nt1DsEtX5qjYzNWA8vUl8ef
oJG409V6BX4JJsK7RJGCGlmqDIA7HO1IQKug
64N+fD/IuVjqHsPxc/YtP1sdnnLjYK0rHgG7
kMMkoqU7Ta/l/laKKd3jcI/kh66dOsTwYrEC
aykvfzYCnVj/rxwEomu2aTbPh/Nt7V2OEXDT
EqlmpS34yQ3LvYfnSTTipLYZNS/2kL7NRuEo
1gId5PD/IMAKSpTqfilW1bQUf+CYJF/CGgF5
KRIx )
Dateigröße vergleichen
% wc zone0x.dnslab.org*
23 133 1554 zone0x.dnslab.org
130 314 5178 zone0x.dnslab.org.signed
153 447 6732 total
BIND 9 Zonen-Konfiguration anpassen, so dass nun die signierte Zone geladen wird
zone "zone0x.dnslab.org" IN {
type master;
file "zone0x.dnslab.org.signed";
};
Konfiguration prüfen
% named-checkconf -z zone zone0x.dnslab.org/IN: loaded serial 1001 (DNSSEC signed)
BIND 9 Zone neu laden
% rndc reload zone0x.dnslab.org
% dig zone0x.dnslab.org SOA +dnssec +m ; <<>> DiG 9.10.3-P3 <<>> zone0x.dnslab.org soa +dnssec +m ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20294 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1
Seit BIND 9.7.4 können dynamische DNS-Zonen mit DNSSEC signiert werden
Seit BIND 9.7.4 können dynamische DNS-Zonen mit DNSSEC signiert werden Nachteile:
DNSSEC in der BIND 9 Konfiguration anschalten und das Verzeichnis für DNSSEC-Schlüssel angeben
options {
directory "/var/named";
key-directory "/var/named/keys";
dnssec-enable yes;
};
Konfiguration testen und BIND 9 neu laden
% named-checkconf -z % rndc reconfig
ZSK und KSK für die Zone erstellen.
-k gibt an, in welchem Verzeichnis die Schlüssel
abgelegt werden% dnssec-keygen -a RSASHA256 -b 1536 -K /var/named/keys -n ZONE dynamic0x.dnslab.org % dnssec-keygen -a RSASHA256 -b 2048 -K /var/named/keys -f KSK -n ZONE dynamic0x.dnslab.org
Bei der Erstellung der Schlüssel können die Schlüssel-Ereignisse für den Lebenszyklus des Schlüssels angegeben werden.
Zeitpunkte können entweder im Format YYYYMMDD oder YYYYMMDDHHMMSS, oder als Offset von der aktuellen Uhrzeit (now) angegeben werden. Das Offset wird mit +/-, einer Zahl und den Einheiten y (Jahr), mo (Monat), d (Tage), h (Stunde) und mi (Minute) angegeben
Diese Daten können mit dnssec-settime angezeigt und auch nachträglich
geändert werden.
-P Zeitpunkt, wann der Schlüssel in der Zone sichtbar werden soll (Publish)-A Zeitpunkt, an dem der Schlüssel zum Erstellen von Signaturen verwendet wird (Active)-I Zeitpunkt, von dem an der Schlüssel nicht mehr zum Signieren verwendet wird (Inactive)-D Zeitpunkt, an dem der Schlüssel aus der Zone gelöscht werden soll (Delete)-R Zeitpunkt, an dem der Schlüssel widerrufen wurde (Revoke)
Publizierte Schlüssel können mit dem Befehl dnssec-revoke widerrufen
werden.
% dnssec-revoke Kzone0x.dnslab.org.+008+23689.private Kzone0x.dnslab.org.+008+23817 % more Kzone0x.dnslab.org.+008+23817.key ; This is a revoked key-signing key, keyid 23817, for zone0x.dnslab.org. ; Revoke: 20160202164447 (Tue Feb 2 17:44:47 2016) zone0x.dnslab.org. IN DNSKEY 385 3 8 AwEAAeHhGKk8bOlK2sI8dysod64WOBpkudNx/SNNsAcy8PWddOGau8Iq F7a+YZH2JAOPFshfF9GLR3yt0kWTDjUOs0TCkyFoB4uYJftkeP5o/VO1 BeDapl5O87Qij3sq+DC8AmPfxYIIT/Kl0BSl0bEhR0AxnGoEpPzsaoNH MSgkYp3wUZjNxZrXfOslekfN2VcCdwtzXfjW9FJxw61tg4bc2HydDUKw 6YS8YntWcdkbDdTWHImcaBk2UqBcfzluL9BShedDZ7psnIqh9EmNu+BR jaMuE64xAbuk5py2cKKY3sg9LEpT5CLEuN0HSoH+iNY/E1QV1AHMGWlj pdnw9il5Wq0=
Anpassen der Zonen-Definition in der Datei named.conf
update-policy local; erlaubt Updates mit dem BIND 9 Sitzung-Schlüssel
aus /var/run/named/session.key. Dieser Schlüssel wird von nsupdate
benutzt, wenn nsupdate mit dem Parameter -l gestartet wirdauto-dnssec maintain sorgt für das automatische Laden der Schlüssel
in die Zone und das aktualisieren der DNSSEC-Signaturen
zone "dynamic0x.dnslab.org" IN {
type master;
file "dynamic0x.dnslab.org";
update-policy local;
auto-dnssec maintain;
};
Konfiguration prüfen und BIND 9 neu laden
% named-checkconf -z % rndc reconfig
rndc sign angestoßen werden. Der
Befehl rndc sign liefert keine Fehlermeldung, wenn die Zone nicht
signiert werden kann (weil z.B. Schlüssel fehlen). Daher immer die
Log-Dateien prüfen!% rndc sign dynamic0x.dnslab.org % dig axfr @localhost dynamic0x.dnslab.org
Einen neuen DNS-Record hinzufügen. Die neuen Daten werden sofort per DNSSEC signiert:
# nsupdate -l
> update add test.dynamic0x.dnssec.example. 3600 IN TXT "Ein neuer DNS-Record"
> send
# dig txt test.dynamic0x.dnssec.example. @localhost +dnssec
[..]
;; ANSWER SECTION:
test.dynamic0x.dnssec.example. 3600 IN TXT "Ein neuer DNS-Record"
test.dynamic0x.dnssec.example. 3600 IN RRSIG TXT 5 4 3600 20160230114919 (
20160131104919 25032 dynamic0x.dnssec.example.
YliG936cphhDO2nAp1V5pXVMUH8/+9ODEyRMqv0YCBVWR7Tz8tqqxjmr
5sj0hxNJSfHJlMXa81gwx33X0D6nl3JeAQ48ivDAKDHYOKd/ogo8GxjB
L4OlyxZ9O0NWcWQaCW0Ly9lKHgoD8PV4t50qb0/lqpZ/AK0m0TsMWpi/ IeA=
Einen DNS-Record löschen. Die Daten und die Signatur wird entfernt, die SOA-Serial wird hochgezählt:
# nsupdate -l > update del test.dynamic0x.dnssec.example. IN TXT > send
Die DS-Records für die Eltern-Zone werden mit dem Befehl
dnssec-dsfromkey erstellt. Als Eingabeparameter erwartet
dnssec-dsfromkey die Datei mit dem öffentlichen KSK-Schlüssel:
% dnssec-dsfromkey Kdynamic0x.dnslab.org.+008.+12345.key
dynamic0x.dnssec.example. IN DS 12345 8 1 B7BE432A2C4A25A0C9F1DA6DD4C289C99C25B2CC
dynamic0x.dnssec.example. IN DS 12345 8 2 DCA5AFBD131982707B55A19CD33048674ADE5FDD9FFCB008A2F54744
B378B689
Es werden die DS-Records mit SHA1-Hash und SHA256-Hash am Terminal ausgegeben.
Seit BIND 9.9 kann der BIND 9 DNS-Server eine Zone beim Laden der Zone DNSSEC-signieren:
Die DNSSEC-Signaturen werden automatisch aktualisiert
Vorteile von 'inline-signing'
Nachteile von 'inline-signing'
DNSSEC in der BIND 9 Konfiguration anschalten und das Verzeichnis für DNSSEC-Schlüssel angeben
options {
directory "/var/named";
key-directory "/var/named/keys";
dnssec-enable yes;
};
Konfiguration testen und BIND 9 neu laden
% named-checkconf -z % rndc reconfig
ZSK und KSK für die Zone erstellen.
-k gibt an, in welchem Verzeichnis die Schlüssel
abgelegt werden% dnssec-keygen -a RSASHA256 -b 1536 -K /var/named/keys -n ZONE inline0x.dnslab.org % dnssec-keygen -a RSASHA256 -b 2048 -K /var/named/keys -f KSK -n ZONE inline0x.dnslab.org
Inline-Signing in der Zone aktivieren
zone "inline0x.dnslab.org" IN {
type master;
file "inline0x.dnslab.org";
inline-signing yes;
auto-dnssec maintain;
};
Konfiguration prüfen, BIND 9 neu laden, Zone signieren
% named-checkconf -z % rndc reload % rndc sign inline0x.dnslab.org
In den Log-Dateien das Ergebnis prüfen (rndc sign liefert keinen
Fehler zurück!):
% tail /var/log/named.log 31-Jan-2016 21:58:37.945 zone inline0x.dnslab.org/IN (unsigned): loaded serial 1002 31-Jan-2016 21:58:37.946 zone inline0x.dnslab.org/IN (signed): loaded serial 1003 (DNSSEC signed)
rndc sync kann die Datei sofort aktualisiert werdennamed-compilezone kann eine Zone-Datei vom Format "RAW" in
das RFC 1035 Text-Format umwandeln
# rndc sync inline0x.dnslab.org
# named-compilezone -f RAW \
-o inline0x.dnslab.org.txt \
inline0x.dnslab.org inline0x.dnslab.org.signed
Änderungen in den Zonen-Daten werden wie gewohnt in der Zonen-Datei durchgeführt. Die SOA-Serial muss dabei erhöht werden. Die SOA-Serial kann, muss dabei nicht höher als die SOA-Serial der Zone auf den DNS-Servern werden
BIND 9.16 ist die aktuelle Version des BIND 9 DNS-Servers. DNSSEC Verbesserungen in BIND 9.16:
DNSSEC Konfiguration in einer (zusätzlichen) Zeile:
zone "example.com" {
type master;
file "example.com";
dnssec-policy default; # <-- DNSSEC anschalten
};
In BIND 9.18 (01/2022) sind weitere DNSSEC und DNS-Sicherheit-Verbesserungen implementiert: