cClaude.rocks ☕ Le blog

L'informatique et les nouvelles technologies

Menu

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

ᦿ


ℹ 2006 - 2020 | 🕸 Retour à l'accueil du domaine | 🏡 Retour à l'accueil du blog