Sécurisation DNS avancée

De Linux Server Wiki
Aller à la navigation Aller à la recherche


DNSsec

DANE

TLSA

tlsa --create --port 443 --protocol tcp --usage 3 --mtype 2 --certificate /etc/ssl/yourca/yourcert.pem yourserv.domain.tld.

SSHFP

pourquoi ?

En l'état actuel des choses, lorsque vous vous connectez à un nouveau serveur ssh, votre client doit (s'il ne le fait pas, changez en) vous informer que le serveur sur lequel vous tentez de vous connecter d'identifie avec une certaine fingerprint :

The authenticity of host 'wiki.csnu.org (2001:41d0:2:475e::201)' can't be established.
RSA key fingerprint is 20:c2:7e:a9:f5:c2:8b:ca:c7:08:47:06:a0:74:e0:06.
Are you sure you want to continue connecting (yes/no)?

Si vous confirmez la fingerprint, elle sera ajouté au fichier ~/.ssh/known_hosts et ssh ne vous demandera plus de confirmation a moins que la clé ssh change.

Problème : Vous avez probablement vérifié que vous vous connecté au bon nom dns (voir à la bonne ip), mais avez vous vérifié l'identité du serveur via sa fingerprint ssh ? Probablement pas. Pourtant, vous devriez. C'est ici que vient se glisser le champ sshfp : il permet de spécifier, dans la zone dns, un hash correspondant aux différentes fingerprint utiisé par le serveur ssh "officiel" du domaine en question. Si la zone est de surcroît signée avec dnssec, vous ajoutez ainsi une grosse couche de sécurité à votre installation ssh.

Génération avec ssh-keygen

Cette commande est a utiliser sur le serveur pour lequel vous voulez générer les champs de sécurité dns.

La syntaxe est simple : ssh-keygen -r <hostname de votre serveur>

ssh-keygen -r wiki.csnu.org.

Cela devrait vous sortir une série de champ DNS que vous pouvez copier directement dans votre zone dns. N'oubliez pas de mettre a jour le SERIAL de la zone et de recharger la zone dans votre serveur dns ensuite.

Génération avec hash-slinger

Pour debian wheezy, vous pouvez télécharger directement le paquet hash-slinger sur le site packages.debian.org. Installez le avec dpkg -i et réglez les dépendances par la suite avec aptitude -f install.

ssh-keyscan -t rsa,dsa,ecdsa wiki.csnu.org. > sshkeys
sshfp -k sshkeys

Ou vous pouvez aussi tout faire avec sshfp :

sshfp --scan wiki.csnu.org.

Cela devrait vous sortir une série de champ DNS que vous pouvez copier directement dans votre zone dns. N'oubliez pas de mettre a jour le SERIAL de la zone et de recharger la zone dans votre serveur dns ensuite.

Forcez la vérification dns sur le client ssh

Par défaut, openssh ne vérifie pas les enregistrements DNS SSHFP. Pour activer la vérification, editez le fihchier de configuration de votre client ssh (~/.ssh/config par exemple) et ajoutez y la ligne suivante :

VerifyHostKeyDNS ask

De cette manière, il sera necessaire que la clé soit confirmée a la fois par dns et par StrictHostKeyChecking. Si vous souhaitez faire confiance automatiquement aux nouvelles clés ssh obtenue par dns (aka ajouter directement la clé dans votre fichier known_hosts sans que celà vous soit demandé), modifiez la ligne de cette manière : VerifyHostKeyDNS yes. Notez que même dans ce cas, ssh n'ajoutera automatiquement la clé QUE si le serveur dns utilisé pour résoudre l'hostname a utilisé dnssec pour authentifier le résultat !