środowisko: ESXi/OpenVZ Debian bind
DNSSEC (Domain Name System Security Extensions) stanowi rozwiązanie zwiększające bezpieczeństwo DNS. DNSSEC wprowadza do DNS kryptograficzny mechanizm kluczy asymetrycznych, które dają możliwość uwierzytelnienia danych otrzymanych w procesie rozwiązywania nazw domen internetowych na adresy IP.
warto zadbać aby pakiety systemu były w najnowszej wersji
apt-get update && apt-get dist-upgrade
doinstalować pakiet bind`a
apt-get -y install bind9
oby skrócić czas generowania kluczy opcjonalnie doinstalować pakiet haveged
apt-get -y install haveged
następnie dokonać edycji sekcji options { }
vi /etc/bind/named.conf.options
dodać / zmienić opcje
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
przejść do katalogu z plikami stref (różny w zależności od używanej dystrybucji)
cd /var/cache/bind
wygenerować klucz ZSK (Zone Signing Key) dla strefy
dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE mojadomena.pl
Generating key pair................+++ .................+++
Kmojadomena.pl.+007+41462
następnie wygenerować klucz KSK (Key Signing Key) dla strefy
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE mojadomena.pl
Generating key pair...........................................++ ............................................................................................................................................................................++
Kmojadomena.pl.+007+62374
w tym momencie katalog zawiera dwie pary prywatnego/publicznego klucza ZSK i KSK
edytujemy plik strefy
vi ./mojadomena.pl.zone
dołączamy publiczne klucze zawierające rekordy DNSKEY do pliku strefy
$INCLUDE Kmojadomena.pl.+007+41462.key
$INCLUDE Kmojadomena.pl.+007+62374.key
lub korzystając z pętli for
for key in `ls Kmojadomena.pl*.key`
do
echo "\$INCLUDE $key">> mojadomena.pl.zone
done
podpis strefy wykonywany jest poleceniem dnssec-signzone
dnssec-signzone -3
salt jest 16 znakowym ciągiem znaków, można go wygenerować np poleceniem
head -c 1000 /dev/random | sha1sum | cut -b 1-16
dokonać podpisu strefy
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o mojadomena.pl -t mojadomena.pl.zone
Verifying the zone using the following algorithms: NSEC3RSASHA1.
Zone signing complete:
Algorithm: NSEC3RSASHA1:
KSKs: 1 active, 0 stand-by, 0 revoked
ZSKs: 1 active, 0 stand-by, 0 revoked
mojadomena.pl.zone.signed
Signatures generated: 12
Signatures retained: 0
Signatures dropped: 0
Signatures successfully verified: 0
Signatures unsuccessfully verified: 0
Signing time in seconds: 0.046
Signatures per second: 298.310
Runtime in seconds: 0.056
utworzony został mowy plik mojadomena.pl.zone.signed, zawierający rekordy RRSIG dla każdego z istniejących rekordów DNS
utworzony został także plik dsset-mojadomena.pl. zawierający rekordy DS, które należy umieścić w strefie autorytatywnej dla naszej domeny
brak wpisów w strefie autorytatywnej skutkuje nieciągłościa sprawdzania kluczy i negatywną odpowiedzią przy walidacji domeny przez DNSSEC
cat dsset-mojadomena.pl.
mojadomena.pl. IN DS 41462 7 1 D407ED1AE2E1DF93C26DE050F6EFF052BA35DE36
mojadomena.pl. IN DS 41462 7 2 93554EFA829B43F1E4E5751CEE5C138E37B4251C9277CEAE9F3CA140 1A05A271
jeżeli registar udostępnia obsługę DNSSEC można tego na ogół dokonać w panelu administracyjnym domeny
teraz wystarczy podpiąć domenę do bind`a (w zależności od dystrybucji skopiować plik mojadomena.pl.zone.signded do odpowiedniego katalogu) w tym celu dokonać dodania / edycji sekcji zone { }
vi /etc/bind/named.conf.local
dodając / edytując (konfiguracja dla serwera master uwzględnia trasfer strefy do serwera slave o adresie IPv4 XXX.XXX.XXX.XXX)
zone "mojadomena.pl" IN {
type master;
file "mojadomena.pl.zone.signed";
allow-transfer { XXX.XXX.XXX.XXX; };
allow-update { none; };
};
następnie wykonać przeładować konfigurację bind`a poleceniem
service bind9 reload
lub
/etc/init.d/bind9 reload
gotowe
sprawdzanie rekordów DNSKEY oraz RRSIG poleceniem dig
dig DNSKEY mojadomena.pl. @IP_SERWERA +multiline
dig A mojadomena.pl. @IP_SERWERA +noadditional +dnssec +multiline
polecam także debugger Verisign`u dostępny pod adresem
http://dnssec-debugger.verisignlabs.com/
oraz narzędzie do wizualizacji dostępne pod adresem
http://dnsviz.net/