Avant de plonger dans le vif du sujet, c’est à dire sécuriser SSH avec SSHFP, quelques explications sont nécessaires.

Tout d’abord parlons du système SSH, celui-ci utilise un système d’empreinte de clé pour vérifier l’authenticité du serveur lorsque le client se connecte. Lors des futures connexions, l’empreinte de la clé sauvegardé est vérifiée. Le client SSH vous avertira si l’empreinte stockée localement diffère de l’empreinte reçue lors de futures tentatives de connexion. (documentation freebsd)

Pour faire court : le client vérifie que le serveur auquel vous vous connectez soit le bon. Génial, non ? Hé bien non puisqu’en pratique presque personne ne le fait.

SSHFP permet donc à un administrateur de déclarer dans son DNS (qu’il faudra avoir protégé par DNSSEC sinon cette protection sera moins efficace) l’empreinte de ses serveurs SSH.

 

 

Composition de l’enregistrement

Un enregistrement SSHFP se compose de 3 éléments :

  1. L’algorithme : dépend du type de clés SSH : RSA (1), DSA (2), ECDSA (3), ED25519 (4)
  2. Le type d’empreinte : SHA-1 (1) ou SHA-256 (2)
  3. L’empreinte (hexadécimale) du serveur SSH

 

 

Générer des enregistrements SSHFP

Pour générer vos enregistrements SSHFP rien de plus simple, il vous suffit d’utiliser la commande suivante

ssh-keygen -r subdomain.domain.tld

 

N’acceptant que des authentifications par clé Ed25519 sur mon serveur j’ai choisi d’utiliser l’enregistrement suivant

root@noobunbox.net:~$ ssh-keygen -r www.noobunbox.net
www.noobunbox.net IN SSHFP 4 1 33f75f87a4dc9e1084d0aeb91e92e8fbb3a3f676

 

 

Test et configuration du client

Une fois les modifications au niveau du DNS effectuées et propagées, connectez vous à votre serveur SSH via la commande suivante

ssh -o "VerifyHostKeyDNS yes" subdomain.domain.tld -v

 

Si DNSSEC et SSHFP sont correctement configurés sur votre domaine vous devriez voir les lignes suivantes

debug1: found 2 secure fingerprints in DNS
debug1: matching host key fingerprint found in DNS

 

Si vous voyez l’erreur No matching host key fingerprint found in DNS cela peut signifier que vos enregistrements SSHFP sont incorrects ou non propagés
Si vous voyez l’erreur DNS lookup error: data does not exist ainsi que The authenticity of host 'subdomain.domain.tld (XXX.XXX.XXX.XXX)' can't be established., cela signifie que votre resolveur DNS ne prend pas en charge DNSSEC ou que DNSSEC est mal configuré ou non configuré.

 

Afin de ne pas avoir à utiliser l’option « VerifyHostKeyDNS yes » à chaque connexion, modifiez le fichier de configuration du client ssh

sudo nano /etc/ssh/ssh_config

 

Afin d’y ajouter

VerifyHostKeyDNS yes

 

Puis relancez le service SSH

/etc/init.d/ssh reload

 

 

Source

 

Catégories : Sécurité

Novakin

Passionné d'informatique depuis de longues années je me suis tourné vers Linux et des solutions de virtualisation il y a peu. Ce blog est une sorte de carnet de web où je partage mes mémos.

S’abonner
Notification pour

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

6 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Intérressant, mais je ne comprends pas quand tu dis « personne ne le fait » ? Quand on utilise un client SSH (PuTTY par exemple) il y a un avertissement clair quand cette situation apparaît, et si je n’ai rien fait sur le serveur alors je refuse la connexion c’est qu’il y a un souci (compromis). On peut aussi utiliser uniquement l’IP pour s’assurer d’arriver sur la bonne machine.

Bonjour Xhark,
J’avoue que je n’ai pas été au bout de ma pensée.

Il m’arrive quelques fois de dépanner des copains. Ou de me connecter à mon propre serveur depuis une VM etc. Je n’ai jamais vérifié si l’empreinte du serveur était la bonne ou pas.

Pour la connexion directe sur l’IP c’est une question de feignantise 🙂 et puis ayant tendance à me connecter depuis des VMs utiliser le nom de domaine est plus simple pour moi

Moi qui pensais que mon serveur SSH était bien sécurisé, et bien pas totalement ! Avant de mettre ça en place, est-ce que cela fonctionnera aussi avec le SFTP ou ça peut poser des problèmes ?

Ensuite tu dis qu’il faut déclarer l’empreinte SSH dans son DNS, actuellement mes DNS sont gérés par OVH car je veux mettre en place un serveur Unbound avec du DNSCrypt mais j’ai l’impression que comme un serveur mail c’est pas évident cette bête là, donc via OVH on peut quand même déclarer son empreinte dans ces DNS ?

Alors, tous les prestataires gérants les DNS ne permettent pas forcément de déclarer un enregistrement SSHFP. OVH lui le permet. Tu n’auras ensuite pas de problème pour te connecter en SFTP ou SSH. Pour pouvoir profiter de cette fonctionnalité il faut aussi que les DNS (ceux que tu utilises pour ta connexion internet) gèrent DNSSEC. Peu de FAI mettent à disposition de leurs utilisateursdes serveurs DNS compatibles, les serveurs DNS de google le sont. Dernier commentaire : un serveur DNS est beaucoup moins compliqué à mettre en place qu’un serveur mail. C’est un peu fastidieux au départ c’est vrai mais… Lire la suite »

D’accord, donc je vais pouvoir mettre ça en place alors 🙂

Je n’utilise plus les DNS de mon FAI depuis un moment 😉

Oui en effet, mais j’ai vu qu’il fallait différencier les resolveur et les serveurs pour gérer un domaine.

@xhark :
« On peut aussi utiliser uniquement l’IP pour s’assurer d’arriver sur la bonne machine. »
Que tu utilises le nom de la machine ou son IP pour s’y connecter, tu seras vulnérable à une attaque MitM lors de la première connexion depuis un device qui n’a pas l’empreinte enregistré.

6
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x