Sécurisation du service SSH

En ces temps de crises on cherche un peu partout où il est possible de faire des économies (c’est la mode !). J’ai remarqué que chez Online.net mon serveur dédié Dedibox® SC gen2 était passé de 9,99€HT à 5,99€HT !!! Or pour en bénéficier il faut résilier son contrat et en prendre un autre, et donc se taper toute une migration… J’en ai profité pour regarder ce qu’il se passait chez la concurrence et j’ai décidé de prendre pour le même prix un serveur plus robuste chez Kimsufi (OVH), un KS-2 ! Je vais donc rédiger une série d’articles pour parler de ma migration en général, et dans l’immédiat de ce bon vieux service SSH…

ssh_logo

La premier chose est de créer un nouvel utilisateur qui nous servira a nous connecter en SSH à notre serveur (en effet se connecter en root en ssh est à proscrire) :

adduser florent

Nous allons ensuite créer un groupe dans lequel nous renseignerons tous les utilisateurs ayant le droit de se connecter en ssh :

addgroup sshusers

Puis nous ajoutons notre utilisateur florent à ce groupe :

adduser florent sshusers

Nous allons passer a la configuration du fichier de config du service SSH afin de sécuriser notre serveur. Commençons part changer le port par défaut . Pour cela il faut éditer le fichier /etc/ssh/sshd_config et changer la ligne port avec le numéro de port qui vous convient :

Port 2552 #par exemple

Nous allons ensuite rajouter la directive autorisant le groupe sshusers :

AllowGroups sshuers

Puis nous empechons le compte root de se connecter :

PermitRootLogin no

Il est maintenant possible de se connecter avec l’utilisateur « florent » en utilisant le port 2522 sur notre client ssh (Putty par exemple).

Cependant je préfère m’identifier via non plus un mot de passe mais un certificat . Cette méthode est beaucoup plus sécurisé que la première. La première étape consiste à créer nos clés, pour cela rien de plus simple. Sur votre serveur linux tapez cette commande :

ssh-keygen -t rsa

Personnellement je ne choisis pas de « passphrase », cela me permet d’avoir une connexion a mon serveur sans interaction. Cela dit, le risque est qu’une personne récupère notre clé privé et l’utilise, c’est à vous de voir !

En fonction de l’utilisateur avec lequel vous êtes connecté vos clés iront soit dans /root/.ssh/ ou ~/.ssh/. Vous devriez avoir deux clés avec vous :

– Un fichier id_rsa qui corresponds à la clé privée. Cette clé est confidentiel et sera utilisé par notre client ssh.

– Un fichier id_rsa.pub qui corresponds à la clé publique. C’est cette clé qui transite sur internet vers les machines que nous voulons controler.

A ce stade vous allez peut-être tiquer : « Mais pourquoi on crée ces clés sur le serveur Linux alors qu’on veut justement le contrôler ??? » et vous aurez raison ! A vrai dire notre serveur Linux sait nativement créer des certificats (ou presque) alors que sur notre machine windows c’est… moins évident !

Sur notre machine cliente :

Bref nous allons maintenant rapatrier notre clé id_rsa sur notre machine cliente (en occurrence un Windows 7 avec Putty). Pour le moyen de rapatriement je vous laisse le choix (sFTP, copier/coller, mail…). Afin d’utiliser cette clé avec Putty nous allons devoir la convertir avec Puttygen.exe.

Ouvez cet EXE puis cliquez dans le menu « Conversions -> Import Key » et choisissez votre clé id_rsa. Ensuite cliquez dans le menu « Conversions -> Export OpenSSH Key » afin de générer votre fichier.ppk que Putty saura exploiter.

Ensuite ouvrez votre client ssh Putty.exe puis saisissez les différentes informations nécessaires à la connexion SSH (adresseip:port) puis allez dans le menu de gauche « Connection -> Data » et remplissez dans le bandeau « Auto-Login username » l’utilisateur ayant le droit de se connecter en ssh, ici florent. Cette étape dispensable évite de saisir l’identifiant lorsque l’on se connecte.

Puis dans le menu « Connection -> SSH -> Auth » , indiquez le chemin ou se trouve votre clé privé fichier.ppk. Nous avons fini du coté client.

Sur notre serveur SSH :

Il convient maintenant d’ajouter la clé id_rsa.pub aux clés autorisés à se connecter sur ce serveur. Pour cela rien de plus simple ! Dirigez dans le dossier de l’utilisateur ayant le droit d’utiliser SSH :

cd /home/florent/.ssh/

Puis créez le fichier authorized_keys et injectez le contenu de la clé publique préalablement générée :

touch /home/florent/.ssh/authorized_keys
cat id_rsa.pub > /home/florent/.ssh/authorized_keys

Il ne vous reste plus qu’a tester la connexion SSH avec authentification par certificat !

Un dernier mot cependant, vous pouvez si vous le désirez (sous réserve de la réussite du dernier test) désactiver l’authentification par mot de passe au service SSH. Pour cela éditez le fichier /etc/ssh/sshd_config et modifiez cette directive :

PasswordAuthentication no

Enfin redémarrez votre service ssh :

/etc/init.d/ssh restart

Vous voilà avec un service SSH sé-cu-ri-sé !

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.