Sécuriser openSSH
(vraiment)
OpenSSH est l'implémentation libre de facto du protocole Secure Shell, c'est-à-dire le protocole utilisé pour se connecter ou exécuter des commandes sur une machine distante et transférer des fichiers d'une machine à une autre. OpenSSH est devenu le principal logiciel d'administration des systèmes de type UNIX, en raison de sa gratuité (licence) et de ses nombreuses fonctionnalités (suite).
Malheureusement la configuration d'openSSH par défaut des distributions servers les plus populaires (ubuntu, debian, redhat) vous garanti une bonne compatibilité avec les clients openSSH mais c'est au détriment de la sécurité.
Cet article va détailler point par point les actions à effectuer pour obtenir une configuration optimale.
Les classiques
Commençons par les astuces que l'on retrouve un peu partout car elles restent essentielles.
Désactiver l'authentification par mot de passe
Modifier dans le fichier /etc/ssh/sshd_config le paramêtre PasswordAuthentication pour le passer à no.
Désactiver l'authentification avec l'utilisateur root
Modifier dans le fichier /etc/ssh/sshd_config le paramêtre PermitRootLogin pour le passer à no.
Désactiver le forwarding X11
Modifier dans le fichier /etc/ssh/sshd_config le paramêtre X11Forwarding pour le passer à no.
N'autoriser que certains utilisateurs
Dans le fichier /etc/ssh/sshd_config, ajouter l'option AllowUsers suivi des utilisateurs qui auront le droit d'utiliser ssh.
Example:
AllowUsers david stephane maurice
Allons plus loin
Bien trop souvent les modifications de la configuration ssh s'arrètent la. Hors il est important d'utiliser les bons algorithmes de chiffrage.
Les bons algorithmes
Pour cela, on peut les restreindre dans le fichier /etc/ssh/sshd_config afin de n'utiliser que les algorithmes encore sûrs.
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com
HostKeyAlgorithms ssh-ed25519,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
Ces 4 lignes à ajouter à la fin de votre fichier vous garantissent l'utilisation des algorithmes sûrs à ce jour (le 17/11/22).
Les bons types de clefs
Afin d'augmenter la sécurité, il est nécessaire de restreindre le type de clefs pouvant être utilisés par openSSH.
Pour cela, il existe la directive HostKey qui doit être présente 2 fois dans votre fichier /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
Supprimer les moduli trop petits
Les modulis de taille < 3071 représentent aujourd'hui un danger, il est nécessaire de les supprimer.
Pour cela, 2 commandes bash suffisent (à lancer en root):
$ awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.safe
$ mv /etc/ssh/moduli.safe /etc/ssh/moduli
Générer des clefs sûres
Par défaut, la taille des clefs rsa générées est trop petites, il est donc conseillés de les remplacer grâce à 3 commandes bash (à lancer en root):
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 ""
Vérifier que tout est ok
Il est possible d'utiliser l'outil ssh-audit
En savoir plus
Si vous souhaitez en savoir plus, je vous conseille de lire le document proposé par l'ANSSI sur openSSH :
https://www.ssi.gouv.fr/guide/recommandations-pour-un-usage-securise-dopenssh/
17 novembre 2022 16:43 par Admin Kscloud