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é compte tenu de sa capacité à crypter le trafic et à éloigner toute personne susceptible d’essayer d’espionner 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ûr. Dans ce guide, nous explorons différentes méthodes que vous pouvez utiliser pour sécuriser et renforcer l’installation d’OpenSSH sur le serveur.

1. Configurer l’authentification SSH sans mot de passe

Par défaut, SSH exige que les utilisateurs fournissent leurs mots de passe lors de la connexion. Mais voilà : 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 SSH sans mot de passe est fortement encouragée.

La première étape consiste à générer une paire de clés SSH qui se compose 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, 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 ce faire, 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 changez l'option 'oui' en '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’à l’aide de l’authentification par clé SSH.

2. Désactiver les demandes de connexion sans mot de passe SSH de l’utilisateur

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 d’utilisateurs sans mot de passe, encore une fois, rendez-vous dans le fichier de configuration à l’adresse /etc/ssh/sshd_config et assurez-vous que vous disposez de 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ésactiver les connexions racine SSH

C’est une évidence ce qui peut arriver si un pirate parvient à forcer votre mot de passe root. 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 : le protocole SSH 1 et le protocole 2. Le protocole SSH 2 a été introduit en 2006 et est plus sécurisé que le protocole 1 grâce à ses contrôles cryptographiques puissants, son cryptage en masse et ses algorithmes robustes.

Par défaut, SSH utilise le protocole 1. Pour passer au 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 entrent en vigueur.

$ sudo systemctl restart sshd

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

Pour tester si le protocole SSH 1 est encore 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 la suivante :

$ ssh -1 [email 

De plus, vous pouvez simplement spécifier la balise -2 pour vous assurer que le protocole 2 est le protocole par défaut utilisé.

$ 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 de sécurité. Quelqu’un peut simplement passer et prendre le contrôle de votre session SSH et faire ce qu’il veut. Pour résoudre le problème, il est donc prudent de définir une limite de délai d’inactivité qui, lorsqu’elle est dépassée, 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 effectuer 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 essayer 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 permis aux utilisateurs 'tecmint' et 'james' d’avoir un accès à distance au système via SSH. Tout autre utilisateur qui tente 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. Configurer 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 sorte qu’après un certain nombre de tentatives infructueuses, la connexion soit interrompue. Donc, une fois de plus, rendez-vous dans le fichier de configuration et 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 relatifs à SSH peuvent également vous être utiles :

  • Comment installer OpenSSH 8.0 Server à 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 tunneling 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 qui ont échoué sous Linux
  • Comment déconnecter les connexions SSH inactives ou inactives sous Linux
Conclusion

Il s’agissait d’un tour d’horizon 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 disposant d’un accès à distance pour contrecarrer les attaques par force brute. Nous espérons que vous avez trouvé ce guide perspicace. Vos commentaires sont les bienvenus.

Articles connexes: