Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi2:bind-dnssec

DNSSEC RRs: DNSKEY, DS, RRSIG

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

validiert mein Resolver?

dig org. SOA +dnssec

→ flags: ad

Eigene Zone signieren

Voraussetzung

  • öffentliche (unsignierte) Zone erstellt, wie in bind beschrieben

automatisch signieren mit dnssec-policy default

Zone signieren

/etc/bind/named.conf.local
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

ü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

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:

/etc/bind/named.conf.local
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 hinterlegen

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

automatisch ZSK signieren mit auto-dnssec maintain

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:

/etc/bind/named.conf.local
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

automatisch signieren mit dnssec-policy, ZSK und KSK

Voraussetzung

  • öffentliche (unsignierte) Zone vorhanden

Zone signieren

/etc/bind/named.conf.options
options {
…
};
dnssec-policy "kskzsk" {
  keys {
    ksk lifetime unlimited algorithm ecdsa256;
    zsk lifetime P90D algorithm ecdsa256;
  };
};
/etc/bind/named.conf.local
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

ü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

1)
Kann auf einer virtuellen Maschine recht lange dauern. Stichwort: Entropie. Tip: haveged
lpi2/bind-dnssec.txt · Zuletzt geändert: 2024/08/09 15:18 von ingo_wichmann