Login
dossier > informatique > [Tuto] Sécurisation d'un serveur SSH

[Tuto] Sécurisation d'un serveur SSH

Authentification par clés RSA publiques et privées - Mise en place

Authentification par clés RSA publiques et privées

 
 
 

Mise en place

 
 
Installation


Installation du paquet openssh-server


Ubuntu

$  sudo apt-get install openssh-server


Debian

#  apt-get install openssh-server

 
 
 

Configuration


Modifiez les options suivantes dans le fichier sshd_config situé dans le répertoire /etc/ssh.

Autoriser l'authentification par clé publique / privée.
Autoriser les clés de type RSA.

PubkeyAuthentication yes
RSAAuthentication yes

 
Définir l'emplacement ou se trouvera le fichier contenant les clés publique valides.
%h fait référence au dossier home de l'utilisateur.

AuthorizedKeysFile    %h/.ssh/authorized_keys


Réstreindre l'accès au serveur pour l'utilisateur root :

  • yes pour autoriser
  • no pour interdire
  • without-password désactive l'authentification par mot de passe pour le compte root, mais laisse la possibilité d'utiliser une clé privée et une passphrase.

PermitRootLogin no

 
Désactivation de l'authentification par mot de passe pour tous les utilisateurs :

PasswordAuthentication no
UsePAM no

 

Vérifier que l'option StrictModes est activée. Cela permet notamment d'empecher la connexion si les droits d'accès à la clé privée sur le serveur sont trop permissifs, ce qui constitue une faille majeure.

StrictModes yes

 
 
 

Redémarrage du processus


Ubuntu

$  sudo /etc/init.d/ssh restart


Debian

#  /etc/init.d/ssh restart

 
 
 

Génération et gestion des clées


La génération des clés doit etre effectuée de la manière suivante pour chaque utilisateur ayant besoin d'un accès ssh.

Se logguer sur le serveur avec le compte (ici tonio) pour lequel on souhaite créer une clé publique et une clé privée et taper la commande suivante, afin de les générer :

$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa

 

-t spécifie le type de clé à générer.
-b spécifie le nombre de bits de la clé à créer.
-f spécifie le chemin de destination de la clé.

Vous devriez voir ceci à votre écran :

 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/tonio/.ssh/id_rsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/tonio/.ssh/id_rsa.
 Your public key has been saved in /home/tonio/.ssh/id_rsa.pub.
 The key fingerprint is:
 7a:e5:ee:d5:0a:e5:c8:29:a6:98:8a:af:fe:3f:b2:23 tonio@serveur-ssh

Saisissez deux fois la pass-phrase qui permettra de sécuriser l'utilisation de la clé privée.
La clé privée générée est id_rsa.
La clé publique générée est id_rsa.pub.
Ces deux clés se trouvent dans le dossier .ssh/ situé dans le dossier home de l'utilisateur (ici /home/tonio/.ssh).


Créez un fichier authorized_keys dans le répertoire .ssh/ de l'utilisateur (ici : /home/tonio/.ssh). Les clés publiques valides pour une authentification y seront copiées.

Tapez ensuite la commande suivante, afin de déclarer la clé publique générée comme valide, dans le fichier authorized_keys :

$  cat id_rsa.pub >> authorized_keys

 
 
 

Restriction des droits d'accès aux clés


Pour pouvoir utiliser les clés afin de s'authentifier, il est nécéssaire que les droit accès soient suffisament restrictif. Dans le cas contraire, il est fort probable que ssh refuse la clé lors de l'authentification, celle-ci pouvant avoir été récupéré par un autre utilisateur.

Il est donc nécéssaire de vérifier que les droits sont bien comme indiqué ci-dessous.

Restreindre l'accès au dossier .ssh/, en autorisant l'execution qu'a son propriétaire.

$  chmod go-x /home/tonio/.ssh


Modifier l'accès au fichier de clé privé (défaut le chmod est déjà à 600, mais si ce n'est pas le cas il est nécéssaire de le modifier).

$  chmod 600 /home/tonio/.ssh/id_rsa

 
La clé publique et le fichier authorized_keys doivent être accessible en lecture par tout le monde et en écriture par le propriétaire uniquement. On doit alors avoir les permissions d'accès en 644.


Réalisation

Code & Design : Sébastien Cardona

Page générée en : 0.018583s