Sécuriser SSH – authentification par clé Ed25519

5 mars 2016 Sécurité 0 Commentaire

L’ANSI et Aeris conseillent de sécuriser SSH avec une authentification par clé Ed25519 lorsque c’est possible (votre version d’OpenSSH doit etre ≥ 6.5). Ubuntu precise et Debian 7 utilisant OpenSSH en version 5 il vous est conseillé d’utiliser des clés ECDSA.

A noter que pour vous connecter, sous Windows, à un serveur SSH avec une authentification par clé Ed25519 ou EDSCA vous devrez utiliser la version development snapshot de PuTTY

 

 

Vérifier votre version d’OpenSSH

Pour connaitre la version d’OpenSSH utilisée sur votre système utilisez la commande suivante

sshd -v

 

Ce qui nous donne

root@vps250236:~/.ssh$ sshd -v
unknown option -- v
OpenSSH_6.7p1 Debian-5+deb8u1, OpenSSL 1.0.1k 8 Jan 2015

 

 

Générer une clé Ed25519 / ECDSA

Générer une clé Ed25519 sous Windows

Pour générer une clé Ed25519 sous Windows téléchargez la version development snapshot de PuTTYgen. Comme dans l’exemple ci-dessous configurez une clé ED25519 – 256 bits et cliquez sur Generate

Sécuriser ssh - authentification par clé Ed25519

 

Déplacez votre souris afin de générer de l’entropie et cela jusqu’à ce que la barre de chargement soit totalement remplie

Sécuriser ssh - authentification par clé Ed25519

 

Une fois ce processus terminé vos clés SSH sont générées. Avant de les enregistrer nous allons ajouter une couche de sécurité en configurant une passphrase. Vous pouvez aussi si vous le souhaitez ajouter un commentaire.

Sécuriser ssh - authentification par clé Ed25519

 

Copiez et collez dans un fichier texte toutes les lignes sous « Public key for pasting into OpenSSH authorized_key file » (clé publique). Si vous deviez effacer ou tout simplement perdre ce fichier, il est tout a fait possible de récupérer votre clé publique avec l’aide de votre clé privée via PuTTY Gen : File > Load private key.

Sauvegardez votre clé privée en cliquant sur Save Private Key.

 

Générer une clé ECDSA sous Windows

Il vous faudra aussi utilisez  la version development snapshot de PuTTYgen. Puis configurez une clé ECDSA – 521 bits comme ci-dessous

Sécuriser ssh - authentification par clé Ed25519

 

 

Générer une clé Ed25519 sous Ububtu / Debian

Pour générer une clé Ed25519 utilisez la commande suivante

ssh-keygen -t ed25519 -N votre-mot-de-passe

 

Ce quoi nous donne

root@noobunbox:~$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): /root/.ssh/noobunbox
Your identification has been saved in /root/.ssh/noobunbox.
Your public key has been saved in /root/.ssh/noobunbox.pub.
The key fingerprint is:
d0:17:00:55:a4:2a:f3:db:20:d3:24:c8:77:22:45:cb root@noobunbox
The key's randomart image is:
+--[ED25519 256]--+
| . .oo++ |
| o . . . . |
| E . o . |
| . o o . |
| + * + S |
| o X |
| o + |
| o + |
| . . |
+-----------------+

Dans notre exemple, la clé privée est sauvegardée dans /root/.ssh/noobunbox tandis que la clé publique se trouve dans /root/.ssh/noobunbox.pub. La clé privée doit absolument restée secrète même si vous avez configuré un mot de passe.

 

Générer une clé ECDSA sous Ububtu / Debian

Pour générer une clé ECSDA utilisez la commande suivante

ssh-keygen -t ecdsa -b 521 -N votre-mot-de-passe

 

 

Configurer OpenSSH Server

Connectez vous à votre serveur et modifiez la configuration d’OpenSSH

sudo nano /etc/ssh/sshd_config

 

Si vous avez généré une clé Ed25519 configurez le bloc HostKey de la manière suivante

# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

 

Si vous avez généré une clé ECDSA configurez le bloc HostKey de la manière suivante

# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

 

Autorisez root à se connecter seulement via une authentification par clé

PermitRootLogin without-password

 

Autorisez l’authentification par clé en dé-commantant les lignes suivantes

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

 

Refusez l’authentification par mot de passe

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

 

Si vous utilisez une clé ED25519 (OpenSSH 6.7+) ajoutez 

Ciphers chacha20-poly1305@openssh.com
KexAlgorithms curve25519-sha256@libssh.org
MACs umac-128-etm@openssh.com

 

Si vous utilisez une clé EDSCA (OpenSSH 5.3+) ajoutez 

KexAlgorithms diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512
Ciphers aes256-ctr

 

Rechargez (ne pas redémarrer) la configuration du server SSH

sudo service ssh reload

 

Maintenant ne fermez pas la connexion SSH actuelle mais ouvrez en une seconde afin de vérifier que tout fonctionne correctement