SSH landscape Lyon

Le service d’accès distant SSH permet d’administrer à distance des serveurs, PC ou équipements réseaux. Il est disponible aussi bien sur les OS Linux et MAC que Windows. Il permet d’accéder facilement et à distance aux équipements, avec les droits de l’utilisateur choisi.

On parlera alors d’un serveur SSH, sur lequel l’utilisateur, le client SSH, se connecte.

Souvent exposé sur Internet, il est nécessaire de respecter quelques bonnes pratiques de sécurité SSH afin de réduire les risques.

 Quels sont les risques ?

Plusieurs risques existent sur un service SSH exposé :

  • Mot de passe faible : accès non autorisé grâce à une attaque par énumération de mot de passe (bruteforce) ;
  • Compte compromis : accès non autorisé grâce à un compte volé (réutilisation de mot de passe ou keylogger) ;
  • Interception des communications : attaquant en position Man-in-The-Middle, par exemple sur un Wi-Fi public ;
  • Perte d’accès : compte d’accès unique bloqué ;
  • Fuites d’informations : obtention de l’OS et de sa version dans la bannière du service ;
  • Élévation de privilèges : vol de sessions SSH d’autres utilisateurs ;
  • Service vulnérable : exploitation d’une vulnérabilité sur un serveur SSH non à jour.

Une fois le service compromis, les attaquants vont très souvent déployer un mineur de cryptomonnaie, défacer le site web ou encore revendre l’accès au serveur dans un réseau de botnets.

Dans certains cas, l’attaque peut être ciblée et donner accès au réseau interne de l’entreprise. Le hackeur privilégiera alors une attaque par rançongiciel (ransomware), un vol de données ou une arnaque au président.

 

Vérifier le niveau de sécurité de son accès SSH

Un test d’intrusion externe permet de s’assurer qu’il n’est pas possible pour un attaquant d’exploiter le service SSH.

Dans le cas d’un serveur de rebond (jump host) ou d’un bastion, il est préférable de réaliser un test d’intrusion en boîte blanche (accès à différents niveaux de compte et à la configuration) afin de tester par exemple le cloisonnement entre les comptes, le contournement du filtrage réseau depuis le serveur SSH et la configuration du service.

Afin d’auditer soit même le durcissement des algorithmes de ses services SSH, l’outil Linux ssh-audit (https://github.com/jtesta/ssh-audit) peut être utilisé.

Pour l’installer sur Kali Linux :

sudo apt install ssh-audit

ssh-audit -p PORT @IP

Par exemple : ssh-audit -p 2222 127.0.0.1 va tester le durcissement des algorithmes et remonter les potentielles CVE sur la version du serveur.

Pour un audit de la configuration du serveur SSH en elle-même, l’outil Linux Lynis (https://github.com/CISOfy/lynis) inclut des vérifications SSH permettant d’augmenter le niveau de sécurité. Son utilisation est décrite dans la documentation officielle : https://cisofy.com/documentation/lynis/get-started/#installation-git. Il suffit donc d’exécuter Lynis sur le serveur SSH afin de détecter de potentielles faiblesses dans sa configuration.

 

Les bonnes pratiques de sécurité SSH

La configuration du serveur SSH réside dans le fichier Linux /etc/ssh/sshd_config et Windows %programdata%\ssh\sshd_config.

Les principes et points de configuration suivants peuvent être utilisés afin de renforcer la sécurité du service SSH :

✔️ Préférez l’authentification par clé SSH plutôt que par mot de passe

    • PubkeyAuthentication yes
    • PasswordAuthentication no

✔️ Protégez votre clé SSH par une phrase de passe complexe (passphrase)

✔️ Désactivez les mots de passe vides

    • PermitEmptyPasswords no

✔️ Limitez le nombre d’authentifications invalides

    • MaxAuthTries 3

✔️ Sécurisez le compte root

    • PermitRootLogin no
    • PermitRootLogin without-password (autorise le login root avec une clé SSH)

✔️Complémentez cette limite avec un système permettant de bannir les IP qui attaquent le service

✔️ Si possible, créez une liste blanche de groupes Linux ou d’utilisateurs autorisés à se connecter en SSH :

    • AllowGroups groupname
    • AllowUsers justin sammy vladimir

✔️ Réduisez les fuites d’informations du fichier known_hosts :

    • HashKnownHosts yes

✔️ Réduisez les fuites d’informations dans la bannière du service SSH :

    • DebianBanner no

✔️ Changez le port d’écoute par défaut (22) en un port non standard (et pas 2222 non plus) afin de diminuer le « bruit » généré par les scanners sur Internet

✔️ Protégez l’accès SSH par un accès VPN ou une restriction sur les adresses IP que vos prestataires et vous utilisez lorsque c’est possible

✔️ Considérez une architecture en « serveur de rebond » (jumphost) lorsqu’un grand nombre de services SSH doit être accessible

Pour les correspondances avec la configuration OpenSSH sous Windows, voir la documentation officielle : https://docs.microsoft.com/fr-fr/windows-server/administration/openssh/openssh_server_configuration.

Note : ces recommandations sont à appliquer en fonction de vos besoins et de votre environnement, après vous être assurés qu’ils n’impactent pas l’accès aux services.

Références : https://www.ssi.gouv.fr/administration/guide/recommandations-pour-un-usage-securise-dopenssh  | https://www.ssh-audit.com/hardening_guides.html | https://linux-audit.com/audit-and-harden-your-ssh-configuration/

🛡️ DSecBypass vous accompagne sur la sécurisation de vos services SSH lors de tests d’intrusions externes ou de pentests internes , avec des prestations de qualité et une expérience significative sur ce type de prestation. N’hésitez pas à nous contacter pour des informations complémentaires et/ou un devis personnalisé 📝.