Garder un ordinateur sĂ©curisĂ©, câest prendre du temps pour vĂ©rifier quâil nây a pas de faille de sĂ©curitĂ©. Ce travail demande une grande expertise et nâest jamais fini, car de nouvelles failles potentielles sont rĂ©guliĂšrement dĂ©tectĂ©es.
Lâexpertise nĂ©cessaire demande une Ă©nergie considĂ©rable, quâil nâest pas possible dâavoir seul. Il est donc nĂ©cessaire de sâappuyer sur des outils qui ont cette expertise. Pour cette tĂąche, il est prĂ©fĂ©rable de sâappuyer sur des communautĂ©s et des outils mis rĂ©guliĂšrement Ă jour.
Dans le cas du protocole ssh, je vous propose dâutiliser ssh-audit.
Lâobjectif de ssh-audit est de tester vos serveurs ssh et de vous indiquer les Ă©lĂ©ments de configuration qui posent problĂšme en suivant les diffĂ©rents CVE (Common Vulnerabilities and Exposures en anglais, dĂ©signe une liste publique de failles de sĂ©curitĂ© informatique).
Installation
Attention, la version de ssh-audit présente dans le dépÎt de Debian est ancienne et pas vraiment à jour par rapport aux différentes failles de sécurité spécifique du protocole ssh. Cependant cette version est déjà un bon outil pour commencer à améliorer votre configuration.
ssh-audit mĂȘme sâil peut sembler compliquĂ© est assez simple Ă utiliser. Il vous indiquera en rouge ce qui ne va pas.
Si vous souhaitez utiliser la derniĂšre version de ssh-audit, je vous propose de rĂ©cupĂ©rer directement le code source sur github en python. En rĂ©alitĂ© vous pouvez mĂȘme vous contenter du fichier ssh-audit.py.
Si vous avez un dossier ~/bin
pour ce type de binaire, vous pouvez simplement faire :
wget https://raw.githubusercontent.com/jtesta/ssh-audit/master/ssh-audit.py -O ~/bin/ssh-audit.py && chmod -v +x ~/bin/ssh-audit.py
Ensuite si le dossier ~/bin
est dans votre PATH, vous pouvez directement utiliser ssh-audit comme suit :
ssh-audit.py 127.0.0.1
Optionnellement vous pouvez mettre en place un alias dans votre fichier ~/.bashrc
 :
alias ssh-audit='python3 ~/bin/ssh-audit.py'
Et ensuite la syntaxe suivante sera utilisable :
ssh-audit 127.0.0.1
Audit dâun serveur ssh
Pour auditer un serveur, câest trĂšs simple, il suffit dâutiliser la syntaxe suivante :
ssh-audit 192.168.1.90
Notez que vous pouvez auditer le serveur de votre propre machine :
ssh-audit 127.0.0.1
Dâautres options sont disponibles, lâaide est disponible :
ssh-audit --help
Audit dâun client ssh
Pour auditer les clients ssh, il faut que vous dĂ©marriez un serveur ssh spĂ©cifique Ă lâaide de ssh-audit
ssh-audit --client-audit
Cela dĂ©marrera un serveur ssh fictif sur le port 2222 de la machine. Lâoption -p
permet de changer de port et lâoption -t
de modifier le timeout.
Ensuite, rien de plus simple connectez-vous sur ce serveur.
Par exemple pour tester le client ssh de la machine oĂč vous venez de dĂ©marrer la commande dâaudit, depuis un nouveau terminal, utilisez :
ssh 127.0.0.1 -p 2222
SĂ©curisation de votre serveur ssh
Pour une base Ubuntu 20.04 LTS Server
, voici ce qui est préconisé.
Ces commandes doivent ĂȘtre exĂ©cutĂ©es en tant quâadministrateur du systĂšme (rooƧ
).
# Régénérer les clés RSA et les clés ED25519
rm /etc/ssh/ssh_host_*
ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
# Suppression du module Diffie-Hellman
awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.safe
mv /etc/ssh/moduli.safe /etc/ssh/moduli
# Activer les clés RSA et ED25519 keys à partir du fichier /etc/ssh/sshd_config
sed -i 's/^\#HostKey \/etc\/ssh\/ssh_host_\(rsa\|ed25519\)_key$/HostKey \/etc\/ssh\/ssh_host_\1_key/g' /etc/ssh/sshd_config
# Restreindre les algorithmes pris en charge pour lâĂ©change de clĂ©s, le chiffrement et MAC (algorithme de protection dâintĂ©gritĂ©)
echo -e "\n# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com\n# hardening guide.\nKexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\nCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\nHostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com" > /etc/ssh/sshd_config.d/ssh-audit_hardening.conf
# Redémarrer le serveur OpenSSH
service ssh restart
SĂ©curisation de votre client ssh
Voici les préconisations pour Ubuntu 20.04 LTS Client
et Linux Mint 20 Client
 :
Ces commandes doivent ĂȘtre exĂ©cutĂ©es par lâutilisateur local pour durcir la configuration du client ssh :
mkdir -p -m 0700 ~/.ssh; echo -e "Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\nKexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\nHostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com\n" >> ~/.ssh/config
En résumé :
La configuration du serveur se fait en tant quâadministrateur de la machine en modifiant le fichier /etc/ssh/sshd_config
. Notez quâil est possible et souhaitable dâutiliser des fragments en crĂ©ant un fichier dans le dossier /etc/ssh/sshd_config.d/
, cela permet de ne pas toucher à la configuration de base. Plus haut, nous avons utilisé le fichier /etc/ssh/sshd_config.d/ssh-audit_hardening.conf
.
La configuration du client se fait avec le compte de lâutilisateur local Ă partir du fichier : ~/.ssh/config
.
**Attention: ** Modifier la configuration dâun serveur revient souvent Ă invalider les clefs SSH autorisĂ©es (pour cause de changement de clĂ© de hachage servant Ă identifier les machines). Vous serez amenĂ© Ă nettoyer votre fichier ~/.ssh/authorized_keys
.
Références
- Code source sur GitHub.
- Une configuration SSH plus moderne par Médéric Ribreux
- Paquet Debian de ssh-audit sur
debian.org
. - Quâest-ce quâune CVEÂ ? par RedHat đ©.
- Guides de durcissement SSH par lâĂ©diteur de ssh-audit.
- Configuration du serveur SSH plus précisément pour OpenSSH.
- Manuel sshd_config en français.
኿