Team Leader - Nutanix Technology Champion - Nutanix NTC Storyteller

Julien DUMUR
Infrastructure in a Nutshell

Les accès SSH sont un point d’entrée privilégiés pour les pirates. Je vous propose aujourd’hui un guide qui vous permettra de renforcer la sécurité de vos accès SSH, a en réduire la surface d’attaque, afin de les rendre beaucoup plus difficiles à attaquer.

Don't try this at home

Les indications techniques données dans cet article sont destinées à restreindre l’accès à votre serveur. Assurez vous d’avoir un accès secondaire temporaire afin de vérifier que les configurations que vous avez mises en place ne vous ont pas coupés tous vos accès ! Je vous recommande de faire des essais sur un serveur de test avant de le faire en production.

Pour lancer la modification du fichier (à adapter à votre éditeur) :

vi /etc/ssh/sshd_config

Rappel : pour activer chacune de ces configurations, un redémarrage du service SSH est nécessaire.

Modifier le port SSH par défaut

Modifier le port par défaut permet de s’affranchir de l’ensemble des scripts qui testent les ports par défaut pour découvrir des brèches à ouvrir sur notre système. Il est donc pertinent de le modifier avec un port choisi aléatoirement.

Port 8645

Désactiver l’authentification sans mot de passe

C’est une des règles essentielles en sécurité informatique : un compte sans mot de passe ne doit pas pouvoir s’identifier à distance sur le système !

PermitEmptyPasswords no

Désactiver l’authentification en tant que root

Comme la désactivation de l’authentification sans mot de passe, le compte root ne doit pas être en capacité de se connecter à distance.

PermitRootLogin no

Restreindre l’accès à des utilisateurs ou groupes définis

Basé sur le principe du moindre privilège, la restriction par utilisateur ou par groupe d’utilisateur permet de maitriser parfaitement les comptes autorisés à se connecter au serveur sans avoir à éditer systématiquement le fichier de configuration (moins de manipulation, moins de risque d’erreurs).

AllowUsers user1 user2 ...
AllowGroups group1 group2 ...

Définir la durée de vie d’une session inactive

Couper les connexions inactives ou dont le client ne répond plus depuis un certains temps est également est également un paramètre à modifier à la baisse afin de déconnecter les utilisateurs inactifs. En général, je mets une déconnexion au bout de 1200s (20min) d’inactivité. Voici donc les paramètres à appliquer :

ClientAliveInterval 1200
ClientAliveCountMax 0

Toutes les 1200s, le serveur va envoyer un message de test au client pour savoir si il est toujours actif. Si le client est inactif, il incrémente le ClientAliveCount de 1. Quand la valeur de ClientAliveCountMax est atteinte, le client est considéré inactif et la session déconnectée.

Définir la durée impartie pour l’authentification

L’utilisation quasi systématique d’outils de connexion à distance permet de réduire le temps nécessaire à établir la connexion SSH à quelques secondes. Ce paramètre n’est pas forcément indispensable mais personnellement je réduis le délai à 20 secondes.

LoginGraceTime 20

Désactiver l’utilisation de SSHv1 et forcer l’utilisation de SSHv2

Impératif pour forcer un plus grand niveau de sécurité.

Protocol 2

Désactiver le déport d’affichage X11

Vecteur potentiel d’attaques si le serveur est corrompu, il est nécessaire de le désactiver de base.

X11Forwarding no

Désactiver SFTP

Vecteur d’attaque fréquent, si vous n’utilisez pas la couche FTP de SSH je vous invite à la désactiver. Il suffit de commenter la ligne.

#Subsystem sftp /usr/lib/openssh/sftp-server

Protection contre les tentatives de piratage en force brute

Compte tenu du fait que nous utilisons presque toujours des logiciels de connexion avec paramètres enregistrés, il est possible de réduire énormément la quantité de tentatives échouées avant blocage.

MaxStartups 5:30:20

5 : Nombre de tentatives de connexions à partir duquel le serveur commence à refuser des connexions.

30 : Pourcentage de chance que le serveur refuse automatiquement la connexion une fois les 5 tentatives atteintes (incrémente de 10 en 10).

20 : Nombre maximum de tentatives échouées à partir duquel le serveur bloque tout.

Le mot de la fin

Voila déjà une bonne série de modifications à apporter pour bien sécuriser votre serveur SSH.

Une autre approche consiste également a sécuriser l’ensemble des ports ouverts de votre serveur via des outils tiers tels que PortSentry, FailtoBan, l’audit de logs, etc.

Il reste aussi un excellent moyen de protection de SSH à traiter : l’authentification à l’aide d’une clé privée. Cette configuration, un peu longue et fastidieuse, fera l’objet d’un prochain article.

0 comments

Laisser un commentaire