mardi 12 janvier 2016

SSH sécurisé : Connexion sans password avec un certificat


Le ssh est un service très pratique pour travailler sur votre serveur de l'extérieur. Il permet d'avoir accès à la console et au transfert de fichier. Nous allons sécuriser le SSH en modifiant sa configuration de base et mettre une authentification à base de clès.


Voici deux vidéos qui vous présente la manipulation en live.
Partie 1 configuration de base : https://youtu.be/AntCjmScaPk
Partie 2 gestion des clés : https://youtu.be/ulg4gHA7XjE

Le fichier de configuration modifié : 
sshd_config

1.1) configuration de base du service SSH


modifier le fichier : /etc/ssh/sshd_config
  1. Changer la ligne port en mettant un autre port de votre choix pour le post j'ai choisi le port 1021.
  2. # What ports, IPs and protocols we listen for#SEB 20160111 chg du port 22Port 1021

  3. Passer la ligne PermitRootLogin de yes à no. Cette ligne empêche le user root de se connecter au service
    #SEB 20160111 interdiction de connection rootPermitRootLogin no
  4. Ajouter à la fin du fichier :
    AllowUsers <<user name>>
Cette ligne n'autorise que le user <<user name>> à ce connecter au service.

Rebooter la machine ou redémarrer le service

Nous allons mettant configurer le service pour autoriser uniquement les connections par clès d’authentification
Le principe est le suivant : on crée une paire de clés:

  • une clés privée qui vous authentifie
  • une clés publique qui contrôle la véracité de votre clés privé. 
La clés privée vous est personnelle et ne doit jamais être donneée (c'est un peu comme un mot de passe). La clés publique sera installée sur le serveur.
Chaque utilisateur du SSH devra avoir sa clé et donc la manipulation des points 12-1,2,3,4 sera à exécuter pour chaque utilisateur.

1.2.1) création du répertoire personnel SSH

On crée le répertoire personnel SSH qui recevra la clés de l'utilisateur et autorisé par ssh. Le répertoire à créer est .ssh (le point désigne un répertoire caché), ici l'utilisateur est sebastien.
mkdir /home/sebastien/.ssh
(en fonction de votre login de connexion vous devrez mettre un sudo).

1.2.2) On crée la paire de clés sous linux :

Placer vous dans le répertoire précédemment créé puis créer les clés avec la commande
 ssh-keygen -t rsa
Je vous laisse décider si vous souhaitez mettre une passphrase à votre clès ( si oui vous devrez la tapez à chaque authentification, c'est une protection si une personne vient à voler votre clès)

Vous avez deux clés crées :

  • une clés privée ==> id_rsa
  • une clés privée ==> id_rsa.pub

La clés publique sera sur le serveur et la clés privée avec vous, c'est elle qui vous authentifiera vis à vis du serveur.
Pour que la clés publique soit reconnu par sshd nous allons la mettre dans le fichier qui sera lu lors de la connexion SSH.
cat id_rsa.pub > authorized_keys (cette manipulation est à faire dans le répertoire .ssh créé au 1.2.1)

Maintenant sauvegarder votre clés privé & public (id_ras.pub & id_rsa) hors du serveur, elle n'ont plus rien à y faire et mettez les dans un coffre fort :-)

Modifier les autorisations sur le répertoire .ssh et sur le fichier authorized_keys.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

En fonction de votre user connexion passer le propriétaire du fichier à l'utilisateur de connexion
sudo chown sebastien /home/sebastien/.ssh
sudo chgrp sebastien /home/sebastien/.ssh
sudo chown sebastien /home/sebastien/.ssh/authorized_keys
sudo chgrp sebastien /home/sebastien/.ssh/authorized_keys

1.2.3) Configuration définitive uniquement par clés :

sudo nano /etc/ssh/sshd_config

Et on redémarre le service :
sudo service ssh restart

Aucun commentaire:

Enregistrer un commentaire