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 PuTTY
Déplacez votre souris afin de générer de l’entropie et cela jusqu’à ce que la barre de chargement soit totalement remplie
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.
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 PuTTY
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