Configurer le serveur OpenSSH de Linux

configurer serveur ssh

tous les utilisateurs de Linux connaissent le serveur SSH puisque c’est lui qui permet la connexion à distance pour obtenir la ligne de commande.
Mais ce qu’on ne sait pas forcément c’est que openSSH, c’est son nom entier, est en fait une suite d’outils offrant différents moyens de se connecter et d’interagir avec une machine.
Comme tout serveur, le serveur SSH se configure pour qu’il corresponde exactement à nos besoins. C’est ce que nous allons voir aujourd’hui.

l’Histoire d’OpenSSH

Les « moins de 20 ans » n’ont probablement connu des logiciels comme telnet, rlogin et autre rcp… Bon ok, il reste FTP que tout le monde connait.
Ces bon vieux logiciels, aujourd’hui obsolètes, permettaient la connexion, la copie, le transfert de fichier, etc… sur une machine distante… mais sans aucune sécurisation… On se souvient des ravages des snifeurs de connexions telnet…
Pour remédier à cela, l’équipe d’OpenBSD a développé les logiciels équivalents mais en version sécurisée, comme SSH, SCP, SFTP, et les ont regroupés au sein de la suite OpenSSH.

Les logiciels de la suite OpenSSH

ssh

Le client ssh permettant les connexions sur des machines distantes.
ssh remplace avantageusement le client telnet.

scp

Le client scp remplace l’ancien rcp et permet la copie de fichiers entre 2 machines.
Son utilisation reste plus confidentielle que celle de sFTP qui offre plus de possibilités.

sftp

le client sftp qui permet de gérer une arborescence sur une machine distante, de la même façon que ftp.

sshd

Le serveur SSH lui même.

sftp-server

Le serveur sFTP lancé par le serveur SSH.

ssh-keygen, ssh-agent, ssh-add, ssh-keyscan, ssh-keysign, ssh-copy-id

Toute la suite d’outils permettant de générer et gérer les clés SSH.
On ne détaillera pas ces logiciels ici, ce n’est pas l’objet.

Comment fonctionne le protocole SSH ?

Quel que soit le programme utilisé, le fonctionnement de base sera toujours le même.
A l’initiation d’une connexion, le client et le serveur vont s’échanger leurs clés de cryptage afin de prouver leur identité. Chacun connaitra la clé de l’autre afin de l’identifier.
Une fois que l’identité est prouvée, toute les communications (en faite toutes les trames TCP) entre les 2 vont être cryptées et seuls ceux qui ont une clé pourront décrypter les informations.
De cette façon, toute personne qui intercepte les communications ne pourra pas les déchiffrer si elle ne possède pas la clé.

Installer le serveur SSH

Pour faire court… Il n’y a rien à installer… De nos jours OpenSSH est bien évidemment installé par défaut sur la plupart des distributions Linux. Cela dit, cela n’empêche pas de vérifier.

root@debian:~# ssh -V
OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1e 11 Feb 2013

On voit ici notre version d’OpenSSH, 6.0.p1, ainsi que la version de la librairie OpenSSL qui gère toute la partie cryptographie et donc les clés.

Configurer son serveur SSH

Nous y voilà enfin !
Nous allons pouvoir configurer notre serveur SSH pour qu’il corresponde à nos attentes.

les fichiers de configuration se trouvent dans le dossier /etc/ssh.

root@debian:/etc/ssh# l
total 168
-rw-r--r-- 1 root root 136156 févr.  8  2013 moduli
-rw-r--r-- 1 root root   1669 févr.  8  2013 ssh_config
-rw-r--r-- 1 root root   2491 nov.  23 20:19 sshd_config
-rw------- 1 root root    672 août  22  2013 ssh_host_dsa_key
-rw-r--r-- 1 root root    601 août  22  2013 ssh_host_dsa_key.pub
-rw------- 1 root root    227 août  22  2013 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    173 août  22  2013 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1675 août  22  2013 ssh_host_rsa_key
-rw-r--r-- 1 root root    393 août  22  2013 ssh_host_rsa_key.pub
root@debian:/etc/ssh#

Ce qui va nous intéresser aujourd’hui c’est le fichier sshd_config qui va gérer notre serveur.
Notez que le fichier ssh_config, lui, se charge de personnaliser votre client ssh.

Nous allons éditer le fichier sshd_config. Je vous recommande d’en faire une copie avant, au cas où. En cas de mauvaise configuration vous pourriez vous priver vous-même de connexion !

Je vous présente ici que les options intéressantes à modifier.

Port 22

Le port par défaut du protocole SSH.
Evidemment la première cible des pirates en cas d’attaque. Le changer par un autre port non utilisé est une bonne idée si vous pouvez vous le permettre.

#ListenAddress 0.0.0.0

toujours pour limiter les risques d’intrusions, si les connexions viennent toujours du même endroit, il peut être judicieux de brider les connexions à cette ou ces IPs.

PermitRootLogin yes

S’il ne fallait modifier qu’une option ce serait celle-là.
Son titre est assez clair, elle permet, par défaut, les connexions distantes avec l’utilisateur root… Passez la valeur à « no » pour bloquer cela.
En mettant « no », il faudra en premier lieu se loguer avec un utilisateur standard et ensuite passer en Root.

PermitEmptyPasswords no

A laisser impérativement à « no ».
Si par un hasard incoryable vous avez des utilisateurs sans mots de passe, ils ne pourront pas se loguer.

Subsystem sftp /usr/lib/openssh/sftp-server

Juste pour info, c’est ici que nous allons personnaliser notre serveur sFTP.
Cela fera l’objet d’un autre tutoriel.

 LogLevel INFO

Il est bon de savoir ce qu’il se trafic sur les tentatives de connexions. Je vous recommande de laisser ce niveau car en cas de besoin vous pourrez éplucher les logs.

PubkeyAuthentication yes

Permet d’établir des connexions en utilisant l’identification directement par clés, sans avoir à saisir de mot de passe.
Si vous ne comprenez pas ce dont il s’agit, vous pouvez mettre « no » 🙂

PasswordAuthentication yes

Permet l’identification par mot de passe. A laisser sur « oui » si vous n’utilisez pas l’identification par clés.

AllowUsers
DenyUsers
AllowGroups
DenyGroups

Ces lignes sont absentes par défaut, vous pouvez les ajouter.
Leurs noms sont suffisamment explicites mais un exemple un seul, si je ne veux pas que l’utilisateur « toto » se connecte, j’ajoute la ligne :

DenyUsers toto

Et à la connexion voilà ce que cela donne :

ssh toto@10.211.55.8
toto@10.211.55.8's password: 
Permission denied, please try again.

Voilà, la configuration est terminée, ne reste plus qu’à appliquer les changements

service ssh reload

Un conseil, ne quittez pas votre session active pour tester les paramètres mais lancez-en une nouvelle. En cas de problème avec votre serveur OpenSSH, vous avez toujours la main sur votre serveur.

Un commentaireLaisser un commentaire

Vous avez aimé cet article ? Réagissez !

Votre email ne sera pas publié. Les champs requis sont marqués d'une astérisque *