Description
Le propos de cet article est d’aider à comprendre ce qu’il faut configurer pour obtenir une configuration sécurisée de votre client SSH.
Cela nécessite que votre version du client OpenSSH soit supérieure à la version 6.5 !
Configuration
Côté client, le plus simple est de modifier votre fichier de
configuration, dans votre home personnel, ~/.ssh/config…
Cet article n’aborde que la partie concernant le client ; pour la partie serveur, merci de lire mon autre article : OpenSSH : Durcir la configuration du serveur SSH
Chiffrements
Les algorithmes de Chiffrement à autoriser :
Ciphers chacha20-poly1305@openssh.com
À vérifier au cas par cas…
regardez donc le log d’authentification sur votre serveur !
Échange de clés
Les algorithmes des clés d’échange à privilègier sont :
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com
Algorithmes de la clé d’Hôte
Les recommandations actuelles pour les algorithmes des clés d’hôte sont :
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
Message Authentication Codes
Les algorithmes des Code d’Authentification de Messages à définir sont :
MACs umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
TL;DR
Voici un exemple de configuration sécurisée minimal :
Host *
Ciphers chacha20-poly1305@openssh.com
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com
MACs umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
ChallengeResponseAuthentication no
#CheckHostIP yes
Compression yes
#CompressionLevel 9 # unsupported!
ControlMaster auto
ControlPersist yes
ControlPath ~/.ssh/socket-%r@%h:%p
HashKnownHosts yes
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
PasswordAuthentication yes
Protocol 2
PubkeyAuthentication yes
ServerAliveInterval 30
ServerAliveCountMax 7
#StrictHostKeyChecking yes
TCPKeepAlive yes
#UseRoaming no # Do not using with ≥ v7! (for oldier versions)
VerifyHostKeyDNS yes
VisualHostKey yes
AddKeysToAgent yes
#UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
Selon le manpage officiel, les configurations personnalisées à certains
hôtes doivent être écrites avant la configuration générale Host * !
Utilisation
Les créations suivantes sont à faire côté client, bien sûr !
Mettre-à-jour vos clés RSA
ssh-keygen -o -p -f id_rsa -a 64
- L’option
-fspécifie le fichier de clé privée à utiliser. - L’option
-oest celle qui utilise le durcissement PKBDF. - et pour finir, l’option
-adéfinit le nombre de tours “de moulinettes” que va effectuer la génération.
16. Vous pouvez lui demander
1000 tours, néanmoins pour les paranoïaques
la valeur de 64 semble préférable ET suffisante.Nouvelles clés
Nouvelle clé ED25519
-o ; en effet,
la génération des clés Ed25519 utilise toujours ce format par défaut !ssh-keygen -t ed25519 -f fichier_id -a nb_tours
Tel que, par exemple :
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -a 64
Nouvelle clé RSA + PKBDF
ssh-keygen -t rsa -b nb_bits -f fichier_id -o -a nb_tours
Tel que, pour l’exemple :
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -o -a 64
Astuces
Si vous avez paramétré l’option LoginGraceTime sur le serveur, pensez à
augmenter sa valeur, sinon vous aurez le droit à ne pas
pouvoir vous connecter, sans aucun message d’erreur dans le log
d’authentification.
En effet, selon le nombre de tours que vous avez paramétrés pour la génération de votre clé, ou sa mise-à-jour, le déchiffrement et la réponse du serveur prendra plus de temps, peut-être plus que le temps d’ouverture, de la fenêtre de connexion, autorisé.
Documentations
Manpages
Autres
- Quand Martin Kleppman a écrit sur le propos d’améliorer la sécurité de ses clés privées SSH…
- Pat Regan nous fait un petit rappel historique de comment utiliser PKCS#8 pour en aboutir à la conclusion d’utiliser PKBDF…
- ou comment Ted Unangst nous explique comment monter à niveau ses vieilles clés en utilisant PKBDF…
- Voici une très bonne lecture, sur le propos de sécuriser son serveur SSH, en utilisant les bons algorithmes, et autres méthodes d’authentification… (osbolète)
- Voire le référentiel de sécurité de l’ANSSI à-propos des recommandations de sécurité autour de SSH. (cf : https://www.ssi.gouv.fr/administration/guide/recommandations-pour-un-usage-securise-dopenssh/ )