Vous êtes sur la page 1sur 24

CHAPITRE 7: Service SSH

ADMINISTRATION UNIX
I. Introduction
 SSH (Secure Shell) est un protocole qui facilite les connexions
sécurisées entre deux systèmes à l'aide d'une architecture
client/serveur et permet aux utilisateurs de se connecter à distance à des
systèmes hôte de serveurs. Toutefois, contrairement à d'autres protocoles
de communication à distance, tels que FTP ou Telnet, SSH crypte la
session de connexion et empêche ainsi tout agresseur de recueillir des
mots de passe.
 SSH est conçu pour remplacer les applications de terminal plus
anciennes et moins sécurisées qui sont utilisées pour se connecter à des
hôtes distants, comme telnet, rsh ou rcp.
 Une implémentation libre de SSH est OpenSSH livrée par une
grande majorité de distributions (divers Unix, Linux et MacOSX).

2 OUZAOUIT
II. Les fonctionnalités du SSH
 Ssh chiffre automatiquement les données à chaque fois qu’elles sont
envoyées par un ordinateur sur le réseau. Lorsqu’elles atteignent leurs
destinations le ssh les déchiffre tout aussi automatiquement.
 Le protocole ssh couvre trois aspects de la sécurité: l’authentification, le
chiffrement et l’intégrité des données transmises sur un réseau.
 SSH combine cryptage asymétrique et cryptage symétrique.

3 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
 Les méthodes d’authentification dans la version 2 de ssh sont: password, et
publickey. Le mécanisme d’authentification basé sur les clés publiques est
le plus fiable. Il utilise une paire de clés pour authentifier les entités en
communication.

a. Authentification par mot de passe:


Il s’agit de l’authentification traditionnelle où, lors de la connexion, l’utilisateur
tape son mot de passe qui sera transmis de façon protégée au serveur. Ce dernier
récupère le mot de passe, calcule son empreinte (condensât) et compare le résultat
avec l’empreinte du mot de passe associé à l’utilisateur et stocké dans sa base de
données.
Pour crypter les échanges entre le client et le serveur. Ces derniers s'échangent
une clé de cryptage symétrique, mais comme ils ne peuvent pas l’envoyés en clair.
Ils la cryptent grâce au cryptage asymétrique.

4 OUZAOUIT
II. Les fonctionnalités du SSH
Le serveur envoie la clé publique en clair au client pour qu'il puisse crypter :

Le client génère une clé de cryptage symétrique (par exemple topsecret) qu'il crypte grâce à la
clé publique qu'il a reçue :

5 OUZAOUIT
II. Les fonctionnalités du SSH
Le client envoie la clé symétrique cryptée au serveur. Le pirate peut l'intercepter mais il ne
peut pas la décrypter car il faut pour cela la clé privée (connue seulement du serveur) :

Le serveur décrypte la clé reçue grâce à sa clé privée qu'il garde secrète:

6 OUZAOUIT
II. Les fonctionnalités du SSH
Le client et le serveur connaissent maintenant tous les deux la clé symétrique topsecret, et à
aucun moment ils ne l’envoient en clair sur le réseau !
Ils peuvent donc s'envoyer des messages cryptés de manière symétrique. Ce cryptage est plus
rapide, et il est tout aussi sûr que le cryptage asymétrique car le pirate ne connaît pas la clé !

Remarque : tout se fait automatiquement. Les utilisateurs doivent juste avoir à rentrer un login
et un mot de passe pour se connecter à la machine distante.

7 OUZAOUIT
II. Les fonctionnalités du SSH
Après échange de la clé symétrique, le client peut se logger sur le serveur : il peut donner son
login et son mot de passe pour se connecter au serveur sans craindre de se les faire voler par le
pirate !

Pour que ce soit possible, le service sshd du serveur doit contenir dans son fichier de configuration
sshd_config, le paramètre PasswordAuthentication à yes.
De même, pour le client ssh : le fichier ssh_config doit aussi avoir ce paramètre à yes.
Pour se connecter au serveur, on utilise le programme ssh fournit par openSSH.
user1@mon_poste $ ssh user1 @Serveur
The authenticity of host 'Serveur (192.168.0.1)' can't be established.
RSA key fingerprint is 33:93:84:34:59:8f:2a:d6:4a:fb:51:27:12:36:53:ac.
Are you sure you want to continue connecting (yes/no)? Yes
Warning: Permanently added 'Serveur,192.168.0.112' (RSA) to the list of known hosts.
user1@Serveur's password: <votre mot de passe>
Last login: Thu May 1 17:41:29 2005 from 192.168.0.20
Linux Serveur 2.4.24 #1 Wed Feb 11 01:01:56 CET 2004 i686 GNU/Linux
user1@Serveur:~$
8 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:

b. Authentification par clé publique:

Le principe de cette méthode repose sur la cryptographie asymétrique


avec des clés RSA ou DSA où aucun secret ne circule sur le réseau. En
effet, la clé publique de l’utilisateur doit être stockée sur le serveur ssh
et sa clé privée doit être stockée sur sa machine d’une manière sécurisée.
Pour mettre en marche ce mode d'authentification, il faut effectuer des
opérations sur la machine du client et serveur.

9 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Opérations sur la machine du client:
Il faut tout d'abord générer une paire de clés publique/privée :
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
b7:22:94:aa:8c:fb:d3:ef:53:86:df:b9:37:40:bd:4d user1@user1-laptop

L’utilitaire ssh-keygen vous demande une passphrase. C'est une phrase de passe qui va
servir à crypter la clé privée pour une meilleure sécurité. Là vous avez 2 choix :
•Soit vous tapez Entrée directement sans rien écrire, et la clé ne sera pas cryptée sur
votre machine.
•Soit vous tapez un mot de passe de votre choix, et la clé sera cryptée.
10 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Vérification de la création des 2 clés:
$cd ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts

 Les 3 fichiers sont :


•id_rsa : la clé privée, qui doit rester secrète. Elle est cryptée si vous avez rentré une
passphrase.
•id_rsa.pub : la clé publique que vous pouvez communiquer à qui vous voulez, et que
vous devez envoyer au serveur.
•known_hosts : c'est la liste des fingerprint que votre PC client tient à jour. Ça lui
permet de se souvenir de l'identité des serveurs et de vous avertir si, un jour, votre
serveur est remplacé par un autre (qui pourrait être celui du pirate !).

11 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Envoie de la clé publique au serveur:
 Pour assurer une communication sécurisée entre le client et le serveur, Il faut
envoyer au serveur la clé publique (id_rsa.pub) pour qu'il puisse crypter les
messages qu’il envoie au client. Au niveau du serveur, La clé publique doit être ajouté
au fichier "authorized_keys" (clés autorisées). Le serveur y garde une liste des clés
qu'il autorise à se connecter.
 Le plus simple pour cela est d'utiliser la commande spéciale ssh-copy-id ou (scp).
Utilisez-la comme ceci :

$ ssh-copy-id -i id_rsa.pub user1@88.92.107.7


user1@88.92.107.7's password:
Now try logging into the machine, with "ssh 'user1@localhost'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
12 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Connexion et authentification par clé:
$ ssh user1@88.92.107.7
Enter passphrase for key '/home/user1/.ssh/id_rsa':
On vous demande la phrase de passe pour décrypter votre clé privée.

 Les phases d’authentification par clé sont décrites ci-dessous :

 le client envoie au serveur une requête d’authentification par clé asymétrique. Cette
requête contient le module de la clé à utiliser (il s’agit du long nombre contenu dans
la clé publique)
 le serveur recherche une correspondance dans le fichier des clés autorisées pour ce
compte (généralement le fichier ~/.ssh/authorized_keys). S’il ne trouve rien,
l’authentification échoue et la connexion prend fin.

13 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Connexion et authentification par clé:
 Dans le cas contraire, le serveur récupère la clé et note les restrictions liées à son
utilisation. Le serveur peut alors rejeter le client suivant ces restrictions. Si ce n’est pas
le cas, le processus d’authentification continue.
 Le serveur génère une chaine aléatoire de 256 bits appelée un challenge et la
chiffre à l’aide de la clé publique du client. Il l’envoie ensuite au client.
 Le client reçoit le challenge crypté et le décrypte à l’aide de la clé privée qu’il est
le seul à posséder. Il combine alors ce challenge avec l’identificateur de session et
génère un haché MD5 avec le résultat de cette combinaison. Il renvoie alors ce haché
au serveur
 Le serveur génère le même haché MD5 avec le challenge et l’identifiant de
session. Si ce haché est identique à celui reçu du client, l’authentification est un
succès.

14 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Connexion et authentification par clé:
Cette méthode est la plus sécurisé dans ssh, effectivement, le client utilise deux
informations qu’il est le seul à connaitre : la clé privée et la passe phrase de cette clé, et
ni la clé privée ni la passe phrase n’est envoyée sur le réseau.

15 OUZAOUIT
II. Les fonctionnalités du SSH
1. Méthodes d’authentification ssh:
b. Authentification par clé publique:
 Agent SSH:
A chaque fois que vous lancez ssh avec une authentification par clé publique, vous
devez ressaisir votre passe phrase d’authentification. La première fois, cela ne vous
gênera pas, mais le fait de la ressaisir peut s’avérer ennuyant. La Solution, utiliser
l’agent ssh.
Un agent ssh est un programme qui garde les clés privées en mémoire et qui fournit les
services d’authentification aux clients ssh.
Pour utiliser l’agent ssh, il faut le lancer en utilisant la commande suivante :

$ ssh-agent

Une fois lancé, l'agent vous suit dans toutes vos connexions à distance, et ainsi il est
disponible partout. Mais il faut lui donner les clés à gérer moyennant le programme ssh-
add:
$ ssh-add
16 OUZAOUIT
III. Implémentation du SSH sous Unix
1. Fichiers de configuration de OpenSSH:
OpenSSH est constitué de deux ensembles de fichiers de configuration, un
pour les programmes client (ssh, scp et sftp) et l'autre pour le service (sshd).
Les informations de configuration SSH qui s'appliquent à l'ensemble du
système sont stockées dans le répertoire /etc/ssh où figurent :
•ssh_config : Fichier de configuration client SSH pour l'ensemble du système.
•sshd_config : Fichier de configuration pour le démon sshd.
•ssh_host_dsa_key : Clé DSA privée utilisée par le démon sshd.
•ssh_host_dsa_key.pub : Clé DSA publique utilisée par le démon sshd.
•ssh_host_key : Clé RSA privée utilisée par le démon sshd pour la version 1 du
protocole SSH.
•ssh_host_key.pub : Clé RSA publique utilisée par le démon sshd pour la version 1 du
protocole SSH.
•ssh_host_rsa_key : Clé RSA privée utilisée par le démon sshd pour la version 2 du
protocole SSH.
•ssh_host_rsa_key.pub : Clé RSA publique utilisée par le démon sshd pour la version
2 du protocole SSH.
17 OUZAOUIT
III. Implémentation du SSH sous Unix
1. Fichiers de configuration de OpenSSH:
Les informations de configuration SSH spécifiques à l'utilisateur sont stockées
dans son répertoire personnel à l'intérieur du répertoire ~/.ssh/ où figurent :
•authorized_keys : Fichier contenant une liste de clés publiques autorisées pour
les serveurs. Lorsque le client se connecte à un serveur, ce dernier authentifie le
client en vérifiant sa clé publique signée qui est stockée dans ce fichier.
• id_dsa : Fichier contenant la clé DSA privée de l'utilisateur.
• id_dsa.pub : Clé DSA publique de l'utilisateur.
• id_rsa : Clé RSA privée utilisée par ssh pour la version 2 du protocole SSH.
• id_rsa.pub : Clé RSA publique utilisée par ssh pour la version 2 du protocole
SSH.
• Identity : Clé RSA privée utilisée par ssh pour la version 1 du protocole SSH.
• identity.pub : Clé RSA publique utilisée par ssh pour la version 1 du protocole
SSH.
•known_hosts : Fichier contenant les clés d'hôtes des serveurs SSH auxquels
l'utilisateur a accédé. Ce fichier est très important car il permet de garantir que le
client SSH se connecte au bon serveur SSH.
18 OUZAOUIT
III. Implémentation du SSH sous Unix
2. Démarrage de SSH:

Pour démarrer le serveur ssh utilisez la commande suivante :

# Service sshd start

19 OUZAOUIT
III. Implémentation du SSH sous Unix
3. Configuration d’un serveur OpenSSH:
Toute la configuration du serveur SSH est enregistrée dans le fichier
/etc/ssh/sshd_config.
Ce fichier contient un ensemble de directives toutes commentées #. En fait
celles-ci vous informent sur les valeurs par défaut, il ne faut décommenter
l'une d'entre elles que lorsque vous souhaitez en changer la valeur. Il faut être
root pour modifier la configuration du serveur.

 Les principales directives possibles:


•ListenAddress 192.168.0.1 : Cette option permet de faire écouter le démon
du serveur OpenSSH, sshd, que sur une interface donnée.
•PermitRootLogin no : Cette option permet d'autoriser ou non une
connexion au serveur openSSH avec le login root.
•PermitEmptyPasswords no : Cette option permet d'autoriser ou non des
connexions avec un couple identifiant/mot de passe MAIS en autorisant que
le mot de passe soit vide.
20 OUZAOUIT
III. Implémentation du SSH sous Unix
3. Configuration d’un serveur OpenSSH:

•AllowUsers user1 user2 : Autorise seulement certains utilisateurs à avoir


accès via SSH à cette machine.

•PubkeyAuthentication yes : Autoriser ou non la connexion par clé


publique. Par défaut, cette option est sur « yes ».

•AuthorizedKeysFile .ssh/authorized_keys : Indique le chemin vers le


fichier contenant les clés autorisées pour l'authentification par clé publique.

•PasswordAuthentication yes : Cette option permet d'autoriser ou non des


connexions avec un couple identifiant/mot de passe. Il est plus sûr d'autoriser
l'accès à la machine uniquement aux utilisateurs avec des clés SSH placées
dans le fichier ~/.ssh/authorized_keys.

21 OUZAOUIT
III. Implémentation du SSH sous Unix
4. Configuration d’un client OpenSSH:

La configuration des clients SSH dépend bien sur de la configuration du


serveur. Si vous avez opté pour une authentification par mot de passe, la
configuration du client se limite à la création d'une paire de clés.

Dans le cas où vous souhaitez mettre en place une authentification par clé
publique quelques manipulations supplémentaires seront nécessaires.

Le client SSH est fourni avec le paquetage OpenSSH, chaque client devra
donc installer le même paquetage que le serveur.

22 OUZAOUIT
III. Implémentation du SSH sous Unix
4. Configuration d’un client OpenSSH:
 Génération des pairs des clé avec ssh-keygen
Pour utiliser l’authentification chiffrée, vous devez d’abord produire une paire de clés
personnelle, formée d’une clé privée (votre identité numérique, qui restera sur la
machine client) et une clé publique (qui sera sur la machine serveur). Le programme
ssh-keygen est conçu pour cela.
Afin de créer une paire de clés RSA pour la version 2 du protocole SSH, suivez les
étapes indiquées ci-dessous.

a. Pour créer une paire de clés RSA que vous utiliserez avec la version 2 du protocole,
entrez la commande suivante à l'invite du shell :
ssh-keygen -t rsa –b 1024
Acceptez l'emplacement par défaut du fichier, à savoir ~/.ssh/id_rsa. Entrez ensuite
une phrase d'accès différente du mot de passe de votre compte et confirmez-la en la
tapant de nouveau.
La clé publique est enregistrée dans ~/.ssh/id_rsa.pub. La clé privée quant à elle, est
enregistrée dans ~/.ssh/id_rsa. Ne divulguez jamais votre clé privée.
23 OUZAOUIT
III. Implémentation du SSH sous Unix
4. Configuration d’un client OpenSSH:
 Génération des pairs des clé avec ssh-keygen

b. Changez les autorisations de votre répertoire .ssh à l'aide de la commande suivante :


chmod 755 ~/.ssh

c. Copiez le contenu de ~/.ssh/id_rsa.pub dans ~/.ssh/authorized_keys sur


l'ordinateur auquel vous désirez vous connecter (serveur). Si le fichier
~/.ssh/authorized_keys existe, vous pouvez copier le fichier ~/.ssh/id_rsa.pub dans le
fichier ~/.ssh/authorized_keys sur l'autre ordinateur.
scp ~/.ssh/id_rsa.pub @IPserveur:/root/.ssh/authorized_keys

d. Changez les permissions du fichier authorized_keys à l'aide de la commande


suivante :
chmod 644 ~/.ssh/authorized_keys

24 OUZAOUIT

Vous aimerez peut-être aussi