Recherche de site Web

Comment sécuriser et renforcer le serveur OpenSSH


Lorsqu'il s'agit d'accéder à des appareils distants tels que des serveurs, des routeurs et des commutateurs, le protocole SSH est fortement recommandé étant donné sa capacité à crypter le trafic et à éloigner toute personne susceptible de tenter d'écouter vos connexions.

Quoi qu'il en soit, les paramètres par défaut de SSH ne sont pas infaillibles et des ajustements supplémentaires sont nécessaires pour rendre le protocole plus sécurisé. Dans ce guide, nous explorons différentes manières que vous pouvez utiliser pour sécuriser et renforcer l'installation d'OpenSSH sur le serveur.

1. Configurer l'authentification sans mot de passe SSH

Par défaut, SSH exige que les utilisateurs fournissent leurs mots de passe lors de la connexion. Mais voici le problème : les pirates peuvent deviner les mots de passe ou même effectuer une attaque par force brute à l'aide d'outils de piratage spéciaux et accéder à votre système. Par mesure de sécurité, l’utilisation de l’authentification sans mot de passe SSH est fortement encouragée.

La première étape consiste à générer une paire de clés SSH composée d'une clé publique et d'une clé privée. La clé privée réside sur votre système hôte tandis que la clé publique est ensuite copiée sur le serveur distant.

Une fois la clé publique copiée avec succès, vous pouvez désormais vous connecter en SSH au serveur distant de manière transparente sans avoir à fournir de mot de passe.

L'étape suivante consiste à désactiver l'authentification par mot de passe. Pour y parvenir, vous devez modifier le fichier de configuration SSH.

sudo vim /etc/ssh/sshd_config

Dans le fichier de configuration, faites défiler et localisez la directive suivante. Décommentez et remplacez l'option 'oui' par 'non'

PasswordAuthentication no

Redémarrez ensuite le démon SSH.

sudo systemctl restart sshd

À ce stade, vous n'aurez accès au serveur distant qu'en utilisant l'authentification par clé SSH.

2. Désactivez les demandes de connexion sans mot de passe SSH des utilisateurs

Une autre méthode recommandée pour renforcer la sécurité de votre serveur consiste à désactiver les connexions SSH des utilisateurs sans mot de passe. Cela semble un peu étrange, mais parfois les administrateurs système peuvent créer des comptes d'utilisateurs et oublier d'attribuer des mots de passe, ce qui est une très mauvaise idée.

Pour rejeter les demandes des utilisateurs sans mot de passe, encore une fois, rendez-vous dans le fichier de configuration /etc/ssh/sshd_config et assurez-vous d'avoir la directive ci-dessous :

PermitEmptyPasswords no

Redémarrez ensuite le service SSH pour que la modification soit effectuée.

sudo systemctl restart sshd

3. Désactivez les connexions racine SSH

Ce qui peut arriver si un pirate informatique parvient à forcer brutalement votre mot de passe root est une évidence. Autoriser la connexion root à distance est invariablement une mauvaise idée qui pourrait compromettre la sécurité de votre système.

Pour cette raison, il est toujours recommandé de désactiver la connexion root à distance SSH et de vous en tenir à un utilisateur non root régulier. Encore une fois, rendez-vous dans le fichier de configuration et modifiez cette ligne comme indiqué.

PermitRootLogin no

Une fois que vous avez terminé, redémarrez le service SSH pour que la modification soit effectuée.

sudo systemctl restart sshd

Désormais, la connexion root à distance sera désactivée.

4. Utilisez le protocole SSH 2

SSH est disponible en deux versions : SSH protocole 1 et protocole 2. Le protocole 2 SSH a été introduit en 2006 et est plus sécurisé que le protocole 1 grâce à ses contrôles cryptographiques puissants, son cryptage de masse et ses algorithmes robustes.

Par défaut, SSH utilise le protocole 1. Pour remplacer cela par le Protocole 2, plus sécurisé, ajoutez la ligne ci-dessous au fichier de configuration :

Protocol 2

Comme toujours, redémarrez SSH pour que les modifications prennent effet.

sudo systemctl restart sshd

À l’avenir, SSH utilisera le Protocole 2 par défaut.

Pour tester si le protocole 1 SSH est toujours pris en charge, exécutez la commande :

ssh -1 user@remote-IP

Vous obtiendrez une erreur indiquant « Le protocole SSH v.1 n'est plus pris en charge ».

Dans ce cas, la commande était :

ssh -1 [email 

De plus, vous pouvez simplement spécifier la balise -2 juste pour être sûr que le Protocole 2 est le protocole utilisé par défaut.

ssh -2 [email 

5. Définir la valeur d'inactivité du délai d'expiration de la connexion SSH

Laisser votre PC sans surveillance pendant de longues périodes avec une connexion SSH inactive peut présenter un risque pour la sécurité. Quelqu'un peut simplement passer par là, prendre en charge votre session SSH et faire ce qu'il veut. Pour résoudre ce problème, il est donc prudent de définir un délai d'attente d'inactivité qui, une fois dépassé, la session SSH sera fermée.

Encore une fois, ouvrez votre fichier de configuration SSH et localisez la directive « ClientAliveInterval ». Attribuez une valeur raisonnable, par exemple, j'ai fixé la limite à 180 secondes.

ClientAliveInterval 180

Cela implique que la session SSH sera abandonnée si aucune activité n'est enregistrée après 3 minutes, ce qui équivaut à 180 secondes.

Redémarrez ensuite le démon SSH pour appliquer les modifications apportées.

sudo systemctl restart sshd

6. Limiter l'accès SSH à certains utilisateurs

Pour une couche de sécurité supplémentaire, vous pouvez définir les utilisateurs qui ont besoin du protocole SSH pour se connecter et effectuer des tâches à distance sur le système. Cela éloigne tout autre utilisateur qui pourrait tenter d'accéder à votre système sans votre approbation.

Comme toujours, ouvrez le fichier de configuration et ajoutez la directive « AllowUsers » suivie des noms des utilisateurs que vous souhaitez accorder. Dans l'exemple ci-dessous, j'ai autorisé les utilisateurs « tecmint » et « james » à avoir un accès à distance au système via SSH. Tout autre utilisateur tentant d'obtenir un accès à distance sera bloqué.

AllowUsers tecmint james

Ensuite, redémarrez SSH pour que les modifications persistent.

sudo systemctl restart sshd

7. Configurez une limite pour les tentatives de mot de passe

Une autre façon d'ajouter une couche de sécurité consiste à limiter le nombre de tentatives de connexion SSH de telle sorte qu'après un certain nombre de tentatives infructueuses, la connexion soit interrompue. Rendez-vous donc à nouveau dans le fichier de configuration, localisez la directive « MaxAuthTries » et définissez une valeur pour le nombre maximum de tentatives.

Dans cet exemple, la limite a été fixée à 3 tentatives, comme indiqué.

MaxAuthTries 3

Et enfin, redémarrez le service SSH comme dans les scénarios précédents.

Les articles suivants sur SSH pourraient également vous être utiles :

  • Comment installer le serveur OpenSSH 8.0 à partir de la source sous Linux
  • Comment installer Fail2Ban pour protéger SSH sur CentOS/RHEL 8
  • Comment changer le port SSH sous Linux
  • Comment créer un tunnel SSH ou une redirection de port sous Linux
  • 4 façons d'accélérer les connexions SSH sous Linux
  • Comment trouver toutes les tentatives de connexion SSH ayant échoué sous Linux
  • Comment déconnecter les connexions SSH inactives ou inactives sous Linux
Conclusion

C'était un résumé de certaines des mesures que vous pouvez prendre pour sécuriser vos connexions à distance SSH. Il est important d’ajouter que vous devez toujours attribuer des mots de passe forts aux utilisateurs ayant un accès à distance afin de contrecarrer les attaques par force brute. Nous espérons que vous avez trouvé ce guide instructif. Vos commentaires sont les bienvenus.