Accès SSH sécurisé

SSH, qu’est-ce que c’est?

L’accès à votre serveur doit toujours être sécurisé de la meilleure façon qu’il soit pour éviter les intrusions.

Ce tutoriel a pour but, ou du moins va essayer, de vous donner quelques bonnes pratiques pour sécuriser votre accès SSH à votre serveur privé ou dédié.

Prérequis

Nous partons du principe que vous avez un serveur GNU/Linux de type Debian ou Ubuntu déjà prêt à l’emploi avec openssh-server d’installé dessus.

Pour effectuer les tests de connexion entre client/serveur il vous faudra une deuxième machine sous linux avec le client SSH.

Création d’un nouveau groupe utilisateur et ajout d’un utilisateur au groupe

La plupart des personnes laisse la configuration par défaut du serveur SSH et se connecte avec le compte root. Hors c’est l’une des premières choses à éviter : ne pas permettre à root de se connecter en SSH. Pour éviter cela il faut créer un utilisateur avec des privilèges restreints.

Pour créer un accès SSH à un utilisateur et le restreindre à ce compte on peut créer un groupe d’utilisateur et l’autoriser dans la configuration SSH et uniquement ce groupe. De cette manière root n’auras pas d’accès SSH.

Sur le serveur SSH, lancer donc cette commande

1
addgroup sshusers


Une fois le groupe créé, il faut lui ajouter un utilisateur, le mieux est d’en créer un nouveau puis de l’ajouter au groupe précédemment créé.

1
2
3
4
5
6
7
8
9
10
11
12
13
adduser toto

Ajout de l'utilisateur toto...

Ajout du nouveau groupe toto(1004) ...

Ajout du nouvel utilisateur toto (1003) avec le groupe toto ...

Création du répertoire personnel /home/toto...

Copie des fichiers depuis /etc/skel...

Entrez le nouveau mot de passe UNIX :

Votre utilisateur « toto » est maintenant créé, il faut maintenant l’ajouter au groupe « sshusers »

1
usermod -a -G sshusers toto

L’utilisateur a été ajouté au groupe nous pouvons donc modifier notre fichier de configuration du serveur SSH

Modification du fichier de configuration

Nous allons apporter quelques modifications à notre fichiers de configuration SSH de notre serveur afin de :

Restreindre l’accès SSH uniquement au compte « sshusers »

Modifier le port d’accès SSH

Autoriser l’accès SSH via clé publique et privée

Pour commencer ouvrez donc le fichier sshd_config avec la commande

1
vim /etc/ssh/sshd_config

Restriction au compte « sshusers »

Comme dis plus haut, nous allons restreindre l’accès SSH uniquement au groupe « sshusers » que nous avons créé plus tôt, donc seul l’utilisateur « toto » auras un accès SSH par la suite.


Repérez la ligne commençant par « AllowGroup », il se peut très bien qu’elle n’y soit pas (même probable), dans ce cas-là ajoutez là à la fin du fichier pour qu’elle ressemble à ceci :

1
AllowGroups sshusers

Vous pouvez, en séparant par des espaces, ajouter d’autres groupes si vous le désirez. Ensuite, enregistrez votre fichier et relancez SSH avec la commande suivante :

1
service ssh restart

Déconnectez-vous du terminal depuis votre client, car ça ne coupe pas les connexions existantes, et essayez de vous reconnecter avec « root »… vous verrez un message vous informant que l’accès est refusé.

Connectez-vous alors avec le compte « toto », vous serez alors connecté sur votre serveur. Pour récupérer les pleins pouvoirs, vous pouvez utiliser la commande « su », le mot de passe root vous seras alors demandé et vous récupérerez les pleins pouvoirs.

On peut donc continuer.

Modifiez le port d’accès SSH

La prochaine étape consiste à modifier le port d’écoute de notre serveur SSH qui par défaut est le numéro 22, et il peut être sujet à diverses attaques étant donné qu’il est connu.

Pour cela, c’est très simple, d’ailleurs en modifiant le fichier tout à l’heure vous avez du remarquer une ligne comme celle-ci

1
port 22

Et bien il suffit de remplacer le « 22″ par le numéro que vous souhaitez, disons… 8547 par exemple

1
port 8547

Enregistrez le fichier de configuration et redémarrer SSH comme vu précédemment, là vous perdrez automatiquement votre connexion vu que le port d’écoute viens d’être changé.

Pour vous connecter depuis votre client dans un terminal en spécifiant un port différent, faites comme ceci :

1
ssh toto@ip.serveur -p 8547

Où 8547 est le port que vous aurez choisis bien entendu. Maintenant nous allons pouvoir modifier la méthode de cryptage du serveur SSH pour encore plus sécuriser les données qui transitent.

Authentification par clé publique

Cette méthode est assez poussée car si vous perdez votre clé privée (clé demandée par votre client ssh pour décrypter les messages reçu encrypter par votre clé publique stocker sur le serveur distant) vous ne pourrez plus vous connecter sur votre serveur !

Mais ce qui signifie aussi que les personnes n’ayant pas la clé ne peuvent pas s’y connecter non plus. Par défaut si vous avez configuré SSH pour utiliser l’authentification par mot de passe ET la méthode par clé vous ne serez pas bloqué, car vous pourrez vous authentifier via le mot de passe de votre utilisateur.

Pour la raison qui viens d’être évoqué, nous allons configurer SSH pour l’authentification par clé et garder celle par mot de passe aussi, nous la retirerons au dernier moment pour éviter tout problème.

Autoriser l’authentification par clé publique

Dans votre fichier de configuration, vérifier que la ligne « PubkeyAuthentication » soit bien à « yes », sinon ajouter là ou modifiez là :

1
PubkeyAuthentication yes

Paramétrer le fichier de clés autorisées
Vérifiez dans votre fichier de configuration que la ligne « AuthorizedKeysFile » pointe bien vers le fichier .ssh/authorized_keys

1
AuthorizedKeysFile  .ssh/authorized_keys

Créer votre paire de clés sur votre client (privée et publique)
Maintenant il faut générer votre paire de clé qui vous permettra de vous authentifier sur le serveur, sur votre client lancer la commande suivante :

1
ssh-keygen -b 2048 -t rsa

ssh va alors vous demander une « phrase secrète » ou « passephrase » que vous ne devez absolument pas oublier ! Et il est déconseiller de ne pas en mettre, car en cas de vol de votre clé publique le voleur ne pourras rien faire sans cette « phrase » !

Ensuite, ssh va vous créer 2 fichiers dans le répertoire .ssh/ de votre utilisateur courant nommés « id_rsa » qui seras votre clé privée et « id_rsa.pub » qui seras votre clé publique.

Copier la clé publique sur le serveur
Maintenant, pour terminer il faut simplement copier le contenu de votre clé publique dans le fameux fichier authorized_keys. Mais pas dans n’importe lequel ! Il faut le copier dans le répertoire de l’utilisateur avec lequel vous vous connecter en ssh, dans notre cas il s’agit de toto ! Sur le serveur, avec toto, assurez-vous que le répertoire « .ssh » existe bien dans son répertoire personnel qui par défaut est /home/toto/. S’il n’existe pas, créez-le avec la commande :

1
mkdir ~/.ssh

Qui va créer le dit répertoire.

Maintenant lancé la commande suivante depuis votre client pour copier votre clé publique sur le serveur distant :

1
scp -P 8547 ~/.ssh/id_rsa.pub toto@ip.serveur:/home/toto/.ssh/authorized_keys

Avec cette commande la clé publique est directement copiée dans le fichier authorized_keys

Tester la connexion depuis le client
Déconnectez-vous du serveur si vous êtes connecté, puis relancer la connexion, si possible en mode bavard pour suivre les étapes de connexion et voir si votre clé est boen prise en compte

1
ssh -P 8547 toto@ip.serveur

En toute logique, ssh va vous demandez uniquement la phrase secrète utilisée pour la création de vos clés.

Retirer l’authentification par mot de passe
Retirer cette authentification ne vous permettra plus de vous connecter avec votre mot de passe, et vous ne pourrez-vous connecter que depuis ce client et lui seul ! Réfléchissez bien avant de faire ça ! Ce qui signifie que pour ajouter d’autre client, il vous faudra éffectuer le transfert de clés depuis votre client authorisé. Dans le fichier de configuration ajoutez la ligne :

1
PasswordAuthentication no

Et relancez votre connexion, et dernier conseil sauvegarder votre clé privé et publique !

Conclusion

De cette manière votre accès SSH est très bien sécurisé, vous pouvez aller plus loin en limitant les adresses IP sources pouvant se connecter via iptables par exemple, ce qui signifierai, pour se connecter à votre serveur, qu’il faudrait :

  • Se connecter depuis une adresse IP autorisée
  • Connaitre le port d’écoute
  • Connaitre le nom du compte autorisé appartenant au bon groupe
  • Posséder votre clé publique
  • On peut dire que votre serveur est sécurisé.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.