====== 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: * https://dnssec-analyzer.verisignlabs.com/ ==== 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: * https://bind9.readthedocs.io/en/v9_18_4/dnssec-guide.html#recipes-rollovers === 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.