Comment sécuriser et durcir le serveur OpenSSH

Comment sécuriser et durcir 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 quiconque pourrait essayer d'écouter vos connexions.

Que cela puisse, 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 durcir 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 de force brute à l'aide d'outils de piratage spéciaux et accéder à votre système. Pour être sûr, 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 qui se compose d'un Clé publique et un Clé privée. Le Clé privée réside sur votre système hôte tandis que le Clé publique est ensuite copié sur le serveur distant.

Une fois la Clé publique est copié avec succès, vous pouvez désormais SSH dans le serveur distant de manière transparente sans avoir à fournir un mot de passe.

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

$ sudo vim / etc / ssh / sshd_config 

À l'intérieur du fichier de configuration, faites défiler et localisez la directive suivante. Décommente et modifiez l'option 'Oui' pour 'Non'

PasswordAuthentication Non 
Désactiver l'authentification du mot de passe SSH

Puis redémarrez le démon ssh.

# sudo systemctl redémarrer sshd 

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

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

Une autre façon recommandée de fortifier la sécurité de votre serveur est de 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 que vous avez la directive ci-dessous:

Pertinermptypasswords non 
Désactiver les connexions sans mot de passe SSH de l'utilisateur

Puis redémarrez le service SSH pour que le changement soit effectué.

$ sudo systemctl redémarrer sshd 

3. Désactiver les connexions racines SSH

C'est une évidence ce qui peut arriver si un pirate parvient à forcer brute votre mot de passe racine. Autoriser la connexion à distance à 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 à la racine à distance SSH et de vous en tenir à un utilisateur non root ordinaire. Encore une fois, dirigez-vous vers le fichier de configuration et modifiez cette ligne comme indiqué.

Permutrootlogine no 
Désactiver les connexions racines SSH

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

$ sudo systemctl redémarrer sshd 

Désormais, la connexion des racines distantes sera désactivée.

4. Utiliser le protocole SSH 2

SSH est disponible en deux versions: SSH protocole 1 et protocole 2. Ssh protocole 2 a été introduit en 2006 et est plus sûr que protocole 1 Merci à ses vérifications cryptographiques, un chiffrement en vrac et des algorithmes robustes.

Par défaut, SSH utilise protocole 1. Pour changer cela en plus sécurisé Protocole 2, Ajoutez la ligne ci-dessous au fichier de configuration:

Protocole 2 
Utiliser le protocole SSH 2

Comme toujours, redémarrez SSH pour que les changements entrent en vigueur.

$ sudo systemctl redémarrer sshd 

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

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

$ ssh -1 [Protégé par e-mail] 

Vous obtiendrez une erreur qui se lit "Protocole SSH V.1 n'est plus pris en charge".

Dans ce cas, la commande était:

$ ssh -1 [Protégé par e-mail] 
Vérifiez le protocole SSH

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

$ ssh -2 [e-mail protégé] 
Utiliser le protocole SSH 2

5. Définir la valeur d'inactivité du délai 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 reprendre votre session SSH et faire tout ce qu'il plaide. Pour résoudre le problème, il est donc prudent de définir une limite de délai 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». Attribuer 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 est l'équivalent de 180 secondes.

Définir la valeur de délai d'expiration de la connexion SSH

Puis redémarrez le démon ssh pour effectuer les modifications apportées.

$ sudo systemctl redémarrer 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 de protocole SSH pour se connecter et effectuer des tâches distantes sur le système. Cela empêche les autres utilisateurs qui pourraient essayer de rentrer dans votre système sans votre approbation.

Comme toujours, ouvrez le fichier de configuration et ajoutez la directive "Permis"Suivi des noms des utilisateurs que vous souhaitez accorder. Dans l'exemple ci-dessous, j'ai autorisé les utilisateursTecmint' et 'James'Pour avoir un accès à distance au système via SSH. Tout autre utilisateur qui essaie d'obtenir un accès à distance sera bloqué.

Autorisers tecmint James 
Limiter les connexions de l'utilisateur SSH

Par la suite redémarrer SSH pour les changements pour persister.

$ sudo systemctl redémarrer sshd 

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

Une autre façon dont vous pouvez ajouter une couche de sécurité est de limiter le nombre de tentatives de connexion SSH telles qu'après un certain nombre de tentatives infructueuses, la connexion baisse. Donc, une fois de plus, dirigez-vous vers le fichier de configuration et localisez le "Maxauthtries”Directive 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 
Limiter les tentatives de mot de passe SSH

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

Vous pouvez également trouver ces articles liés à SSH suivants utiles:

  • Comment installer OpenSSH 8.0 serveur de Source dans Linux
  • Comment installer Fail2ban pour protéger SSH sur Centos / Rhel 8
  • Comment changer le port SSH dans Linux
  • Comment créer des tunnels SSH ou un transfert de port dans Linux
  • 4 façons d'accélérer les connexions SSH dans Linux
  • Comment trouver toutes les tentatives de connexion SSH échouées dans Linux
  • Comment déconnecter les connexions SSH inactives ou inactives dans Linux
Conclusion

C'était 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 solides aux utilisateurs ayant un accès à distance aux attaques de force brute. Nous espérons que vous avez trouvé ce guide perspicace. Vos commentaires sont bien les bienvenus.