Sécuriser openSSH

Sécuriser openSSH

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

Copyright © 2020 KScloud