HowtoBind: document DNSSEC

This commit is contained in:
David Prevot 2023-12-11 15:27:58 +01:00
parent 8d1ffd81a2
commit c418e315ea

View file

@ -412,6 +412,105 @@ named-checkconf /etc/bind/named.conf && rndc reload
rndc tsig-list
~~~
## DNSSEC
### Ajouter la gestion DNSSEC
Créer le répertoire `/etc/bind/dnssec/db.$domain` (qui servira aussi à conserver les clefs et fichiers de zones dynamiques) et y déplacer le fichier de zone (un lien symbolique depuis son emplacement précédent permet de continuer à pouvoir léditer comme avant). Prendre garde à ce que tous les fichiers et répertoires appartiennent bien à bind.
~~~
# sudo -u bind mkdir -p /etc/bind/dnssec/$domain
# mv /etc/bind/db.$domain /etc/bind/dnssec/$domain/
# ln -s dnssec/$domain/db.$domain /etc/bind/
~~~
Mettre en place une paire de clefs de zone (ZSK) et de signature (KSK)
~~~
# cd /etc/bind/dnssec/$domain
# sudo -u bind dnssec-keygen -a ECDSAP256SHA256 -n ZONE $domain
# sudo -u bind dnssec-keygen -a ECDSAP256SHA256 -n ZONE -f KSK $domain
~~~
Modifier le fichier de zone dans `/etc/bind/named.conf.local` pour ajouter les trois dernières options suivantes (et modifier le chemin vers le fichier de zone).
~~~
zone "$domain" {
type master;
file "/etc/bind/dnssec/$domain/db.$domain";
allow-query { any; };
allow-transfer { "foo"; };
inline-signing yes;
auto-dnssec maintain;
key-directory "/etc/bind/dnssec/$domain";
};
~~~
Puis recharger la configuration de bind et la zone sera automatiquement signé.
~~~
# systemctl reload bind9
~~~
NSEC3 peut être ajouté à la zone signée.
~~~
# rndc signing -nsec3param 1 0 10 `cat /dev/urandom | tr -dc 'A-F0-9' | fold -w 8 | head -n 1` $domain
~~~
### Modification de la zone
Attention le serial de la zone signée et du fichier original non signé peuvent différer (mise à jour dynamique).
Deux commandes pour savoir où en est le serial :
~~~
$ host -t soa $domain 127.0.0.1
# named-compilezone -j -i none -f raw -F text -o - $domain $domain.signed
~~~
Une fois le bon serial récupéré on peut modifier la zone en incrémentant le serial trouvé.
~~~
# Modifier le domaine example.org
domain=example.org
# Vérification du SOA pour le mettre à jour dans le fichier.
host -t soa $domain
# Arrêt (gel) de la mise à jour dynamique
rndc freeze $domain
# Mise à jour de la zone en pensant au SOA.
vim /etc/bind/db.$domain
# Vérification de la configuration.
named-checkzone $domain /etc/bind/db.$domain
named-checkconf
# Relance de la mise à jour dynamique
rndc thaw $domain
~~~
La zone sera automatiquement resigné.
==== Rotation de la ZSK ====
On génère une nouvelle clé comme vu [plus haut](#ajouter-la-gestion-dnssec).
Le temps d'inactivation de l'ancienne clé ainsi que la date de suppression doit être indiqué.
~~~
# La clé doit être retirée dans 2 jours
dnssec-settime -I +2d OLD_ZSK.key
# La clé doit être supprimée dans 6 jours
dnssec-settime -D +6d Kexample.tld.+008+25266.key
~~~
Bind fera tout seul la prébublication et le rollover.
Les 2 jours et les 6 jours sont à modifier en fonction du ttl de la zone, il faut à minima :
* 2 ttl avant que la OLD_ZSK soit inactivé ;
* durant ces 2 ttl, il y a 1 ttl où la OLD_ZSK est activée et la NEW_ZSK est publiée ;
* à la fin des 2 ttl la NEW_ZSK est activée et la OLD_ZSK peut être supprimée.
## Reverse DNS
Un reverse DNS est un nom de domaine associé à une adresse IP. Le nom de cet enregistrement est *PTR*. Exemples :