Table des matières
DNSSEC
Configuration de DNSSEC sur gurvant
Pour l’installation, voir
https://www.swordarmor.fr/gestion-automatique-de-dnssec-avec-opendnssec-et-nsd.html, le DNS a été migré sur knot le 08 avril 2018 (suite à la réinstallation de gurvant en FreeBSD), il faut donc lire https://www.swordarmor.fr/gestion-automatique-de-dnssec-avec-knot.html.
Mise à jour de la zone grifon.fr
grifon.fr est signée avec DNSSEC, il y a donc une procédure un peu particulière à suivre pour mettre à jour la zone.
La zone non signée se trouve dans
/var/db/knot/grifon.fr.nodnssec
C’est ce fichier qu’il faut éditer.
Par (bonne) habitude, c’est pas mal d’avoir un serial de la forme AAAAMMJJNN (date-serie), par exemple
pour la première modification de la zone le 24 août 2016 ça donne 2016082400,
pour la deuxième 2016082401, pour le 25 2016082500, etc. Si le serial du SOA
n’est pas correctement renseigné, cela risque de perturber la mise à jour de
la zone. En effet, avec la rotation des clés de DNSSEC, la zone est
automatiquement mise à jour par knot. Le serial dans le fichier non
signé n’est donc pas forcément celui servi.
Une fois les modifications faites, il faut demander copier la zone non-signée sur l’ancinne et demander à knot de la resigner :
# cp /var/db/knot/grifon.fr.nodnssec /var/db/knot/grifon.fr.zone && knotc zone-reload grifon.fr
Signatures dans le DNS
TLSA
Nous publions le TLSA de chaque service utilisant un certificat SSL. Cela inclus donc tous les services web et le mail.
Nous partirons du principe que nous utilisons un RR de type 3 0 2
. Dans ce cas, pour publier un TLSA il faut déterminer le sha512sum du certificat complet puis le publier dans un enregistrement ressemblant à $port.$protocole.$cible
. Par exemple, pour ce wiki ça donne :
alarig@gurvant:~$ openssl x509 -noout -fingerprint -sha512 -in /etc/ssl/nginx/wiki.grifon.fr-chained.crt | tr -d : | sed 's/^.*=//' F7F8438FC6E2081A00D3337833CBFB89675DCBF018AF8FAFD363A76D9CDBD7312A1D015CEFB4EB8C4082567D24AECA1E575631C0A1BAEC9FC4EF65E39BF104CC
Ce qui amène a écrire 443.tcp.wiki IN TLSA (3 0 2 F7F8438FC6E2081A00D3337833CBFB89675DCBF018AF8FAFD363A76D9CDBD7312A1D015CEFB4EB8C4082567D24AECA1E575631C0A1BAEC9FC4EF65E39BF104CC)
dans son fichier de zone.
Si nous ne voulons publier que la clé publique (par exemple parce que LE renouvelle le certificat tous les trois mois), nous devons utiliser le type 3 1 2
et la commande
openssl x509 -in cert-chained.crt -noout -pubkey | openssl pkey -pubin -outform DER | sha512sum
.
SSHFP
Nous publions également les empreintes SSH de nos machines. Ainsi, si le client a l’option VerifyHostKeyDNS yes
dans sa configuration client, OpenSSH ira chercher ces empreintes dans le DNS et pourra dire si elles sont valides sans devoir les demander à un autre administrateur.
Pour générer un enregistrement SSHFP, il faut se connecter sur la machine et taper la commande ssh-keygen -r $(hostname). | sed -E 's/([0-9])/(\1/;s/($)/\1)/
' puis copier/coller la sortie dans la zone. Comme il faut se connecter à la machine une première fois avant de publier les empreintes, il faut être sûr du réseau que l’on utilise.
Avec l’option de vérification des clés dans le DNS, une première connexion ressemble à ça (il est important de noter la ligne « Matching host key fingerprint found in DNS. ») :
alarig@pikachu ~ % ssh alarig@gurvant.grifon.fr The authenticity of host 'gurvant.grifon.fr (2a00:5884::2)' can't be established. ECDSA key fingerprint is SHA256:maAOmOwYMniyC7LVXnqG2oohsmXsHV1rQ/BLXFx09sU. Matching host key fingerprint found in DNS. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'gurvant.grifon.fr,2a00:5884::2' (ECDSA) to the list of known hosts. Enter passphrase for key '/home/alarig/.ssh/id_rsa':