GNU/Linux >> Tutoriels Linux >  >> Linux

7 options de sécurité OpenSSH par défaut que vous devez modifier dans /etc/ssh/sshd_config

Les options OpenSSH sont contrôlées via le fichier /etc/ssh/sshd_config. Cet article explique les 7 options par défaut du fichier sshd_config que vous devez modifier.

Dans sshd_config, les lignes commençant par # sont des commentaires. Pour les options qui utilisent les valeurs par défaut, le fichier sshd_config contient une ligne commentée avec l'option et sa valeur par défaut.

Cela nous facilite la tâche, car nous pouvons voir le nom de l'option OpenSSH et la valeur par défaut sans avoir à chercher ailleurs.

Par exemple, le fichier sshd_config contient la ligne commentée suivante. Cela indique que l'option PubkeyAuthentication contient "yes" comme valeur par défaut.

$ grep -i pubkey /etc/ssh/sshd_config
#PubkeyAuthentication yes

Si vous souhaitez modifier cela, vous devez supprimer le commentaire et modifier la valeur (de oui à non) comme indiqué ci-dessous.

$ vi /etc/ssh/sshd_config
PubkeyAuthentication no

Je n'ai montré ce qui précède qu'à titre d'exemple. Vous n'avez pas besoin de modifier la valeur par défaut de l'option PubkeyAuthentication, car il est bon d'autoriser l'authentification par clé publique.

Vous n'avez besoin de modifier aucune des valeurs par défaut dans le fichier sshd_config, à l'exception des 7 options mentionnées dans cet article.

1. Désactiver la connexion racine (PermitRootLogin)

Par défaut, vous pouvez vous connecter en ssh au serveur en tant que root. Il est préférable de ne pas autoriser root à se connecter directement au serveur. Au lieu de cela, vous devez vous connecter au système en tant que votre compte, puis faire "su -" pour vous connecter en tant que root.

Si vous avez plusieurs administrateurs système dans votre organisation et s'ils se connectent tous au serveur directement en tant que root, vous ne saurez peut-être pas quel administrateur système s'est connecté en tant que root. Au lieu de cela, si vous désactivez la connexion en tant que root, les administrateurs système sont obligés de se connecter d'abord avec leur compte, avant de pouvoir faire "su -", cela facilite l'audit.

Ajoutez l'entrée suivante à sshd_config pour désactiver la racine pour se connecter directement au serveur.

$ vi /etc/ssh/sshd_config
PermitRootLogin no

2. Autoriser uniquement des utilisateurs ou des groupes spécifiques (AllowUsers AllowGroups)

Par défaut, toute personne qui s'est authentifiée avec succès est autorisée à se connecter. Au lieu de cela, vous pouvez limiter les utilisateurs (ou groupes) que vous autorisez à se connecter au système.

Ceci est utile lorsque vous avez créé plusieurs comptes d'utilisateurs sur le système, mais que vous souhaitez que seuls quelques-uns d'entre eux se connectent.

Ceci est également utile lorsque vous utilisez NIS, openLDAP (ou un autre système externe) pour l'authentification. Chaque utilisateur de votre entreprise peut avoir un compte sur NIS, OpenLDAP, etc. Mais, sur un serveur spécifique, vous souhaitez que seuls quelques-uns d'entre eux se connectent. Par exemple, sur le système de production, vous souhaitez que seuls les administrateurs système se connectent.

Ajoutez l'entrée suivante au fichier sshd_config pour autoriser uniquement des utilisateurs spécifiques à se connecter au système. Dans l'exemple ci-dessous, seuls ramesh, john et jason peuvent se connecter à ce système. Les noms d'utilisateur doivent être séparés par un espace.

$ vi /etc/ssh/sshd_config
AllowUsers ramesh john jason

Ajoutez l'entrée suivante au fichier sshd_config pour autoriser uniquement les utilisateurs appartenant à un groupe spécifique à se connecter. Dans l'exemple ci-dessous, seuls les utilisateurs appartenant au groupe sysadmin et dba peuvent se connecter au système.

$ vi /etc/ssh/sshd_config
AllowGroups sysadmin dba

3. Refuser des utilisateurs ou des groupes spécifiques (DenyUsers DenyGroups)

Au lieu d'autoriser des utilisateurs (ou des groupes) spécifiques, vous pouvez également refuser des utilisateurs ou des groupes spécifiques.

Ajoutez l'entrée suivante au fichier sshd_config pour refuser à des utilisateurs spécifiques de se connecter au système. Dans l'exemple ci-dessous cvs, apache, jane ne peut pas se connecter à ce système. Les noms d'utilisateur doivent être séparés par un espace.

$ vi /etc/ssh/sshd_config
DenyUsers cvs apache jane

Ajoutez l'entrée suivante au fichier sshd_config pour refuser aux utilisateurs appartenant à un groupe spécifique de se connecter. Dans l'exemple ci-dessous, les utilisateurs appartenant aux développeurs et au groupe qa ne peuvent pas se connecter au système.

$ vi /etc/ssh/sshd_config
DenyGroups developers qa

Remarque :Vous pouvez utiliser une combinaison de toutes les directives Autoriser et Refuser. Il est traité dans cet ordre :DenyUsers, AllowUsers, DenyGroups et enfin AllowGroups

4. Modifier le numéro de port SSHD (port)

Par défaut, ssh s'exécute sur le port 22. La plupart des attaquants vérifieront si un serveur est ouvert sur le port 22 et utiliseront de manière aléatoire la force brute pour se connecter au serveur en utilisant plusieurs combinaisons de nom d'utilisateur et de mot de passe.

Si vous changez le numéro de port en quelque chose de différent, les autres doivent savoir exactement quel port utiliser pour se connecter au serveur en utilisant ssh. L'exemple ci-dessous utilise le port 222 pour ssh.

$ vi /etc/ssh/sshd_config
Port 222

À partir de vos journaux (/var/log/secure), si vous voyez beaucoup de connexions invalides utilisant ssh pour des comptes qui n'existent pas sur votre système, à partir de l'
adresse IP que vous ne reconnaissez pas, cela pourrait être une attaque par force brute. Ce type de connexion ssh invalide s'arrêtera si vous modifiez le numéro de port.

Veuillez noter que cela cause peu d'inconvénients à votre équipe qui se connecte au système, car ils ont besoin de connaître à la fois l'adresse IP et le numéro de port.

5. Modifier le temps de grâce de connexion (LoginGraceTime)

Lorsque vous vous connectez en ssh à un serveur, vous disposez de 2 minutes pour vous connecter. Si vous ne parvenez pas à vous connecter dans les 2 minutes, ssh se déconnectera.
2 minutes pour vous connecter avec succès, c'est trop. Vous devriez envisager de le changer à 30 secondes, ou peut-être à 1 minute.

Ajoutez l'entrée suivante au fichier sshd_config pour modifier le délai de grâce de connexion de 2 minutes à 1 minute.

$ vi /etc/ssh/sshd_config
LoginGraceTime 1m

6. Restreindre l'interface (adresse IP) à la connexion (ListenAddress)

Si vous avez plusieurs interfaces sur le serveur qui sont configurées avec des adresses IP différentes, vous ne voudrez peut-être pas que tout le monde se connecte au serveur en utilisant toutes ces adresses IP.

Supposons que vous ayez les 4 interfaces suivantes sur le serveur :

  • eth0 – 192.168.10.200
  • eth1 – 192.168.10.201
  • eth2 – 192.168.10.202
  • eth3 – 192.168.10.203

Par défaut, ssh écoutera toutes les adresses IP ci-dessus. Si vous souhaitez que les utilisateurs se connectent uniquement à l'aide des adresses IP 200 et 202, procédez comme suit dans votre sshd_config

$ vi /etc/ssh/sshd_config
ListenAddress 192.168.10.200
ListenAddress 192.168.10.202

7. Déconnectez SSH en l'absence d'activité (ClientAliveInterval)

Une fois que vous vous êtes connecté avec succès au système, vous voudrez peut-être vous déconnecter lorsqu'il n'y a aucune activité après x nombre de minutes. Il s'agit essentiellement d'un délai d'inactivité.

Dans Bash, vous pouvez y parvenir en utilisant la variable TMOUT.

Dans OpenSSH, cela peut être réalisé en combinant les options ClientAliveCountMax et ClientAliveInterval dans le fichier sshd_config.

  • ClientAliveCountMax - Ceci indique le nombre total de messages checkalive envoyés par le serveur ssh sans obtenir de réponse du client ssh. La valeur par défaut est 3.
  • ClientAliveInterval – Cela indique le délai d'attente en secondes. Après x nombre de secondes, le serveur ssh enverra un message au client demandant une réponse. La valeur par défaut est 0 (le serveur n'enverra pas de message au client pour vérification.).

Si vous souhaitez que le client ssh se ferme (timeout) automatiquement après 10 minutes (600 secondes), modifiez le fichier sshd_config et définissez les deux paramètres suivants, comme indiqué ci-dessous.

$ vi /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0

Linux
  1. Commandes Linux :du et les options à utiliser

  2. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  3. Comment /etc/motd est-il mis à jour ?

  4. Comment vérifier la syntaxe du fichier /etc/ssh/sshd_config

  5. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

PuTTY :modifier le répertoire de connexion SSH par défaut

Quelles tailles devez-vous allouer à /, /boot, /home et swap

Faire fonctionner la sauvegarde par défaut avec GRUB2... ?

Quelqu'un peut-il expliquer le "PasswordAuthentication" dans le fichier /etc/ssh/sshd_config ?

Comment changer /tmp par défaut en /home/user/tmp

Différence entre /etc/hosts et /etc/resolv.conf