[Tuto] Sécurisation d'un serveur SSH
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 |
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 |
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. |
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.