Comment configurer la sécurité SSH Linux

L'un des protocoles les plus utilisés au niveau de la sécurité pour établir des connexions dans les environnements UNIX est le protocole SSH (Secure Shell) qui nous offre une série de fonctionnalités et de caractéristiques spéciales pour protéger les données et les connexions effectuées.

SSH est un protocole développé en se concentrant sur la sécurité des communications entre deux systèmes via le modèle client / serveur et grâce auquel les utilisateurs sont autorisés à se connecter à un hôte à distance.
L'une des principales caractéristiques de SSH est qu'il crypte la session de connexion, ce qui empêche tout utilisateur d'obtenir des mots de passe non cryptés.

Types de protectionLors de l'utilisation du protocole SSH, nous aurons les types de protection suivants :

  • Une fois la connexion initiale établie, le client peut vérifier qu'il se connecte au même serveur auquel il s'est précédemment connecté
  • Le client envoie les informations d'authentification au serveur via un cryptage 128 bits
  • Toutes les données envoyées et reçues pendant la session sont transférées à l'aide d'un cryptage 128 bits, ce qui rend difficile le décryptage et la lecture
  • Le client a la possibilité de transférer des applications X11 depuis le serveur, il s'agit d'une technique appelée transfert X11 qui fournit un moyen sécurisé d'utiliser des applications graphiques sur un réseau local ou externe.

Maintenant, dans les systèmes d'exploitation Linux, nous trouvons le fichier de configuration SSH dans le chemin / etc / ssh / ssh_config et grâce à ce fichier, il sera possible d'effectuer toutes les mesures de sécurité pour les connexions SSH.

AGRANDIR

Pour les systèmes macOS, ce fichier se trouve dans le chemin / private / etc / ssh / ssh_config et il a un lien symbolique vers / etc / ssh / ssh_config à des fins de compatibilité.

Lors de l'édition de ce fichier, nous devons garder à l'esprit ce qui suit.

  • Les lignes vides et les lignes commençant par '#' sont des commentaires
  • Chaque ligne commence par un mot-clé, suivi d'argument(s)
  • Les options de configuration peuvent être séparées par des blancs ou des blancs facultatifs et un signe =
  • Les arguments peuvent être placés entre guillemets (") pour spécifier les arguments contenant des espaces

1. Comment éditer le fichier Linux ssh_config


Pour éditer ce fichier afin d'établir les valeurs appropriées, nous devons exécuter ce qui suit avec un éditeur :
 sudo nano / etc / ssh / ssh_config
Nous verrons ce qui suit :

AGRANDIR

Le fichier ssh_config est organisé par hôtes et chaque hôte contient des paramètres spécifiques pour cet hôte particulier, là nous pouvons utiliser des caractères génériques comme * pour faire correspondre plusieurs noms d'hôtes avec une seule déclaration.
Certains des paramètres que nous pouvons utiliser dans ce fichier sont :

HébergerRestreindre les instructions qui ne concernent que les hôtes qui correspondent à l'un des modèles donnés après le mot-clé.
CorrespondreRestreindre les instructions à s'appliquer uniquement aux hôtes qui correspondent aux critères spécifiés
AdresseFamilleSpécifie la famille d'adresses à utiliser lors de la connexion, les arguments valides sont : any, inet, inet6.
Temps différéAvec cette valeur, la requête de mot de passe sera désactivée, évitant ainsi un blocage accidentel dans une demande de mot de passe
Adresse de liaisonSpécifie d'utiliser l'adresse spécifiée sur la machine locale comme adresse de source de connexion.
ChallengeRéponseAuthentificationIndique s'il faut utiliser l'authentification challenge-réponse. Il s'agit principalement d'une méthode héritée et a été remplacée par KbdInteractiveAuthentication
VérifierHostIPDites à ssh de vérifier en plus l'adresse IP de l'hôte dans le fichierknown_hosts.
ChiffrerFait référence au cryptage qui sera utilisé pour crypter la session dans la version 1 du protocole.
ChiffresSpécifie les chiffrements autorisés pour la version 2 du protocole par ordre de préférence.

Ensuite, nous verrons quelques conseils pratiques pour améliorer la sécurité des connexions SSH à Linux et ainsi obtenir les meilleures performances d'accès.

2. Comment verrouiller les fichiers Linux SSH


La première étape avant de modifier le fichier est de s'assurer que le fichier ssh_config et le fichier sshd_config ont le propriétaire et l'utilisateur configurés en tant que root, ceci car c'est le super utilisateur de Linux et personne de mieux que lui n'est le propriétaire.

Pour cela, nous exécutons les opérations suivantes :

 sudo chown root : root / etc / ssh / sshd_config sudo chmod og-rwx / etc / ssh / sshd_config

3. Comment confirmer le protocole SSH version 2 Linux


La version 2 de SSH dispose d'un algorithme d'échange de clés amélioré qui n'est pas vulnérable à la faille de sécurité de la version 1, améliorant ainsi la sécurité générale des connexions, il est donc idéal de confirmer que le nouveau protocole 2 est utilisé à la place du protocole 1 et pour cela nous devons confirmer la ligne suivante dans le fichier ssh_config :
 Protocole 2

AGRANDIR

Là, nous pouvons également configurer le protocole implicitement via Ciphers, qui définira automatiquement Protocol sur 2 pour utiliser des Ciphers modernes. Pour cela, nous validons la ligne suivante juste en dessous de la ligne Protocol :

 Chiffres aes128-ctr, aes192-ctr, aes256-ctr

4. Comment désactiver les mots de passe vides SSH Linux


Il est important de valider que chaque compte SSH doit utiliser un mot de passe lors de la connexion, en bloquant les mots de passe vides qui permettraient un accès simple causant des risques de sécurité dans le système, pour valider cela nous utiliserons la ligne suivante ou, si elle n'existe pas, nous l'ajoutera en plaçant le symbole # :
 PermitEmptyPasswords non

AGRANDIR

5. Comment désactiver la connexion root SSH Linux


En empêchant la connexion de l'utilisateur root, il sera possible de verrouiller des comptes spécifiques et d'interdire leur utilisation dans tout le système, les options pour PermitRootLogin incluent "oui", "sans mot de passe", "commandes forcées uniquement" ou "ne pas faire". La valeur par défaut est « oui ». Pour arrêter complètement la connexion root, nous utiliserons la ligne suivante :
 PermitRootLogin non

AGRANDIR

6. Comment définir un nouveau port Linux SSH


Par défaut, le port attribué pour SSH est le 22, afin que les attaquants sachent avec certitude par quel port ils accéderont pour effectuer leurs attaques, donc une bonne méthode de sécurité consiste à changer ce port par défaut et à indiquer uniquement aux utilisateurs autorisés le nouveau port.

Pour cela, il faut localiser la ligne Port et ajouter la syntaxe suivante :

 Port XXXXX

AGRANDIR

7. Comment restreindre l'accès SSH Linux


Dans le cas où l'accès au serveur SSH est composé de plusieurs utilisateurs, il est possible d'appliquer certaines restrictions en créant des groupes où ces utilisateurs sont inclus, cela est possible en ajoutant des mots-clés tels que :
 AllowUsers (Autoriser l'accès utilisateur) AllowGroups (Autoriser l'accès au groupe) DenyUsers (Restreindre l'accès utilisateur) DenyGroups (Restreindre l'accès au groupe)
Par exemple, nous pouvons exécuter ce qui suit dans le fichier de configuration :
 AllowUsers Solvetic tests DenyGroups test

8. Comment mettre à jour le délai de grâce SSH Linux


Par défaut, la durée pendant laquelle un utilisateur peut rester inactif sans se connecter est de deux minutes, afin d'empêcher les connexions non autorisées au système, cette durée peut être modifiée dans la ligne LoginGraceTime en augmentant ou en diminuant cette météo :
 ConnexionGraceTime 1m

AGRANDIR

9. Comment créer un alias SSH Linux


Dans les configurations SSH, il est possible de spécifier un alias, ceux-ci permettent de se connecter à un serveur spécifique via un port et des utilisateurs définis, par exemple, nous pouvons ajouter les éléments suivants :
 Host dev HostName dev.solvetic.com Port 3333 Utilisateur Solvetic
Dans ce cas précis, nous devons accéder comme suit :
 ssh [email protected] -p 3333

10. Authentification avec clés sécurisées SSH Linux


ssh sera beaucoup plus sécurisé et utile lorsqu'il est utilisé avec des paires de clés publiques/privées à des fins d'authentification, plutôt que d'utiliser des mots de passe. Le fichier ssh_config peut déclarer une clé spécifique pour un hôte spécifique à l'aide de la clé IdentityFile, dans ce cas, nous entrerons ce qui suit :
 Host dev HostName dev.solvetic.com Port 3333 Utilisateur Solvetic IdentityFile ~ / .ssh / dev.solvetic.key
Dans ce cas, la connexion serait la suivante :
 ssh -i ~ / .ssh / dev.solvetic.key [email protected] -p 3333
Certains paramètres supplémentaires sont :

CompressionLà, nous pouvons utiliser des valeurs comme oui ou non pour activer la désactivation de la compression pour un hôte.
LogLevelIl permet de définir le niveau de détail dans les logs pour le client ssh, les options sont QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 et DEBUG3.
StrictHostKeyCheckingDéfinissez une préférence pour l'ajout d'hôtes au fichierknown_hosts.

Ainsi, nous avons différentes options pour améliorer la sécurité et la connectivité SSH sous Linux.

wave wave wave wave wave