Narzędzia użytkownika

Narzędzia witryny


software:bind:dnssec

DNSSEC

Do konfiguracji bind-a, w sekcji „options” dodajemy:

options {
  dnssec-enable yes;         // Dla bind-a 9.16 i nowszego DNSSEC jest zawsze wlaczony i nie dajemy tej linii 
                             // Od bind-a 9.18 opcja "dnssec-enable" nie jest akceptowana
  dnssec-validation auto;
}

Strefę konfigurujemy następująco (będzie automatycznie podpisywana przez bind-a):

zone "example.com"          { type master; file "/usr/local/etc/namedb/example.com";
                              key-directory "/usr/local/etc/namedb/keys";
                              auto-dnssec maintain; inline-signing yes; };

Potrzebujemy dwóch kluczy: ZSK i KSK. Generowanie:

mkdir -p /usr/local/etc/namedb/keys
chown bind:bind /usr/local/etc/namedb/keys
cd /usr/local/namedb/keys
dnssec-keygen -a RSASHA256 -3 -b 1536 -n ZONE example.com
dnssec-keygen -f KSK -a RSASHA256 -b 2048 -3 -n ZONE example.com
chown bind:bind *

Jak już mamy utworzone klucze, rekonfigurujemy bind-a:

rndc reload
rndc reconfig

I wczytujemy klucze oraz podpisujemy je:

rndc loadkeys example.com
rndc signing -NSEC3PARAM 1 0 10 auto example.com

Rekordy DS

Jeśli mamy poprawną konfigurację, bind powinien zwrócić nam rekordy DNSKEY:

dig @localhost dnskey example.com
;; ANSWER SECTION:
example.com.		86400	IN	DNSKEY	257 3 8 AwEAAbmua8F5rlG/z2vgzrYfqH/xp1q6TqHIAbidNZ8O/CNNiR5Gg1R3 qg0zkKwX9e2lQ7XPtfhlzzDvtfYxOFAslFQaW7Bb8Dh1Er74QueX70zY HUP+2miGzOnxtWNV34QRYkEl3vCforUrbYrlrFiie2yOJuxM9pGjG1YQ fVlsmzIH2BvgX9Mf7I7o2sCtUWe/xS0hDn8zEkUSSw3Gbc36an+hvuR8 oQRM4t47QXk78Gr0nE7GiS2ojYBEjMfHx4q4gBVlrWX3s07snzEDOj3H JLlNFnShM5QnhKbKMGnjR947w1+m5FmFqaQizTY2A+BYfMaabYcN/UWF DlkGAqEQUIk=
example.com.		86400	IN	DNSKEY	256 3 8 AwEAAammYGhih6yLnd22wmmKs+5CsfLhfX1z/R5ywIm17cuM92RMWZfk RApTRTAGY2QbYKGWNMxypQZlIAB5JCwzlYD8r08MkDfLRuh2Hevq54lM z9xKtVbZV/qzP/8Mk9LZHpRPq6maT9On95LyjaDfTFzbrppjGJsP4BgY pbxPIQmutgqQdUdxm2STqgVT5fn9OlLkAGlfdikuNY5eBRFRksUYtybq eelIiwdqrQ9jCyYMCYl/28hDAvXaylG9F2X0DQ==
  • DNSKEY 256 - to nasz klucz publiczny ZSK (tym podpisujemy strefę DNS)
  • DNSKEY 257 - to nasz klucz publiczny KSK (tym podpisujemy klucz ZSK - weryfikacja autentyczności w/w klucza)

Dla klucza KSK trzeba utworzyć rekord DS i wpisać go do domeny u rejestratora:

dig @localhost dnskey example.com | dnssec-dsfromkey -f - example.com
example.com. IN DS 64517 8 2 79A10CF14E48325CF5547342ED680BB47A61DA5E870F4B6D1442F2F73563249B

Wpis ten ma na celu weryfikację naszego klucza KSK, który podpisuje nasz ZSK.

Weryfikacja

Sprawdzenie z CLI czy nasza domena działa prawidłowo:

delv example.com
; fully validated
example.com.           85845   IN      A       1.2.3.4
example.com.           85845   IN      RRSIG   A 8 3 86400 20220808230247 20220714173719 45093 example.com. hz26agJUMjqy3RaSQtboem4LsLnH9UpCbWHTSlxYNo7zXRYqA1xDQl72 l2CypW/yCRWhRzcQymre6Zd6NHI6OiA1lUKNFZpUK+k8JgXG+mHOK3io 23mViZhNnBTfrp3YeFuwLbSIeag7pXBbYnpR75mZUeBpKdrPeBUyJjGz ktduhASqHAVbZBhFyeCZPkwqZWYovtgy61WdkR9lHb1TU8z3wTSzJ+6C AXOT+myCinKkwQ9J1NFFoXim2RI0tvKN

Sprawdzenie online:

Wymiana kluczy

Według aktualnej (14.07.2022) dokumentacji bind-a, zalecana jest wymiana kluczy:

  • ZSK - co rok
  • KSK - co 5 lat

Procedury wymiany przedstawione są w dokumentacji:

Wymiana ZSK (co 1 rok)

Wyszukujemy aktualny klucz ZSK dla domeny:

cd /usr/local/etc/namedb/keys
grep 256 Kexample.com*.key

Ustawiamy datę wygaśnięcia (-I) obecnego klucza na 1 miesiąc do przodu oraz jego skasowania (-D) na 2 miesiące do przodu:

dnssec-settime -I 20230921 -D 20231021 Kexample.com.+008+53115

Generujemy nowy klucz, który zostanie użyty po wygaśnięciu obecnego klucza (jako parametr podajemy obecny klucz, który będzie zastąpiony):

dnssec-keygen -S Kexample.com.+008+53115

Wymiana KSK (co 5 lat)

Wyszukujemy aktualny klucz KSK dla domeny:

cd /usr/local/etc/namedb/keys
grep 257 Kexample.com*.key

Ustawiamy datę wygaśnięcia (-I) obecnego klucza na 1 miesiąc do przodu oraz jego skasowania (-D) na 2 miesiące do przodu:

dnssec-settime -I 20230921 -D 20231021 Kexample.com.+008+59507

Generujemy nowy klucz, który zostanie użyty po wygaśnięciu obecnego klucza (jako parametr podajemy obecny klucz, który będzie zastąpiony):

dnssec-keygen -S Kexample.com.+008+59507

Odczytujemy nowy rekord DS z nowego klucza i wpisujemy go do WHOIS-a:

dnssec-dsfromkey -a SHA-256 Kexample.com.+008+01435.key

Miesiąc po tym jak nowy klucz zacznie działać, można wywalić stary z WHOIS-a.

software/bind/dnssec.txt · ostatnio zmienione: 2023/08/21 12:30 przez mky