Noobunbox

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.

6
Poster un Commentaire

3 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors

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

  Subscribe  
plus récents plus anciens plus de votes
Me notifier des

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… Read more »

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.

mouchy

@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é.