Sécurisation avancée d’openssh

SSH est un protocole de communication chiffré sécurisant les flux par cryptage afin d’éviter la capture de trame (sniffer). Par défaut, le couple username/password est utilisé par le serveur SSH pour initier une communication sécurisée. Cette méthode n’empêche pas les intrusions à 100%. En effet, le malveillant peut utiliser l’attaque par dictionnaire par exemple pour finalement infiltrer le système.

La sécurisation avancée d’openssh améliore la sécurité des connexions, voici quelques petits tweaks de base.

Empêcher le compte root de se connecter

Deux raisons pour cela :

  • C’est un compte connu utilisé sur tout système linux.
  • Le compte root doit rester un compte orienté système, et non comme un compte utilisateur. L’utilisation de su ou de sudo permet d’effectuer les taches systèmes (préférer l’utilisation de sudo qui permet une granularité fine des permissions et ne requière pas de connaitre le mot de passe root).

modification du fichier /etc/ssh/sshd_config

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

Pour que les modifications du fichier de configuration soit prises en compte, il faut redémarrer le service ssh.

 Définir les comptes en mesure de se connecter

N’autoriser que des utilisateurs ou groupes à se connecter en ajoutant au fichier /etc/ssh/sshd_config

AllowUsers john marc

et/ou

AllowGroups sshuser

il est également possible de limiter l’accès d’un utilisateur à une machine ou même à un réseau en utilisant les wildcards

AllowUsers john@machine marc@192.168.0.*

 

Utiliser l’authentification par clés

L’utilisation de paire de clés permet de s’authentifier grâce à une clé privée et une clé publique au lieu du couple utilisateur/password. Elle augmente grandement la sécurité puisqu’elle écarte les attaques par dictionnaire.

Dans ce principe, le serveur possède la clé publique d’un utilisateur. Lorsque l’utilisateur se connecte, il présente sa clé privée et si elle correspond à la clé publique, la connexion est accepté sans échange de mot de passe. Donc seul le possesseur de la clé peut se connecter. Pour accroitre la sécurité (en cas de vol de clé)  une « passphrase »  peut être ajouter. Elle joue le rôle d’un mot de passe au niveau de la clé privée, elle peut donc être différente du mot de passe utilisateur de la machine sur laquelle on veut se connecter.

Modification du fichier /etc/ssh/sshd_config pour la configuration des clés et ne plus autoriser les connexions basées sur le couple utilisateur/password :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     %h/.ssh/authorized_keys
.
.
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
.
PasswordAuthentication no
.
.

Création de clés sur une machine linux

john@localhost:~$ mkdir ~/.ssh
john@localhost:~$ touch ~/.ssh/authorized_keys
john@localhost:~$ chmod 700 ~/.ssh
john@localhost:~$ chmod 600 ~/.ssh/authorized_keys
john@localhost:~$ ssh-keygen -t rsa -f id_rsa_$USER

Nous obtenons 2 fichiers :

  •  id_rsa_john qui est la clé privée ou encore clé d’identification
  • id_rsa_john.pub est la clé publique

La clé publique sera à ajouter au fichier authorized_keys précédemment créé

john@localhost:~$ cat id_rsa_john.pub >> ~/.ssh/authorized_keys

La clé privée servira à l’utilisateur pour se connecter à cette machine à partir d’un autre poste.

Création de clés sur une machine windows avec putty

Putty est un client ssh libre et est disponible sur le site de chiark.greenend.org.u

La création de clés se fait sur puttygen

puttygen1

Choisissez le type de clé (RSA ou DSA) puis cliquez sur Generate.
puttygen2

La clé publique sera à ajouter au fichier ~/.ssh/authorized_keys de l’utilisateur sur le serveur.

ssh1

Renseignez la passphrase si besoin (mais recommandé) puis sauvegarder la clé privée sur le poste.

puttygen4

Pour ce connecter sur le serveur il suffit d’ouvrir une connexion avec la clé privée grâce à putty

ssh2

et d’indiquer la passphrase pour se connecterssh3

Pour finir

Ce n’est que quelques principes de base de configuration ssh, qui coûtent peu et augmentent efficacement la sécurité de la connexion.

Une configuration plus pointue permet entre autres d’effectuer des connexions par rebond, d’utiliser des templates, etc… Peut-être un prochain article 😀

Cet article vous a été utile ? Partage it !

Laisser un commentaire

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

Si vous le souhaitez, renseignez le champ 'Nom' de cette façon : 'VotreNom@VotreMotClef' pour obtenir une ancre optimisée pour les moteurs de recherche.