Vous êtes sur la page 1sur 18

420-856-MA

Linux II : Administration de système

MODULE 8

SERVEUR SSH

GROUPE 1612

ÉTÉ-2007

COLLÈGE DE MAISONNEUVE
3800, rue Sherbrooke Est
Montréal (Québec) H1X 2A2
Téléphone : (514) 254 7131
OpenSSH

1 Introduction................................................................................................................. 3
2 Installation................................................................................................................... 3
3 Test de connexion ....................................................................................................... 3
4 Configuration du serveur ssh ...................................................................................... 4
5 Contrôle du service ssh ............................................................................................... 5
6 Log .............................................................................................................................. 5
7 Client ssh..................................................................................................................... 5
8 Connexion ssh............................................................................................................. 6
8.1 Authentification par mot de passe....................................................................... 6
8.2 Authentification par clé....................................................................................... 7
8.2.1 Générer la paire de clés............................................................................... 7
8.2.2 Autoriser votre clé publique........................................................................ 9
8.2.3 Se connecter via ssh .................................................................................. 11
8.3 Authentification sans mot de passe................................................................... 11
9 La copie sécurisée ..................................................................................................... 13
10 Le transfert de fichier sécurisé.............................................................................. 13
11 Le Xforwarding..................................................................................................... 15
12 Tunnel SSH........................................................................................................... 17
13 MÉMO .................................................................................................................. 18

________________________________________________________________________
2
1 Introduction

De nombreux outils ont été fournis pour utiliser la capacité du réseau. Échanger,
copier, utiliser des Shells à distance. Les noms de ces outils sont respectivement ftp,
rcp, telnet, etc... Bien que ces outils, utilisés pendant des années et même encore
aujourd'hui dans beaucoup d’entreprises, soient très pratiques, ils comportent une
faiblesse importante. Leurs transactions sont transmises en clair via le réseau. De ce
fait, n'importe quelle personne mal intentionnée peut être en mesure d'observer ce
que vous faîtes, allant même jusqu'à subtiliser vos données personnelles et mots de
passe.

SSH signifie Secure SHell. C'est un protocole qui permet de faire des connexions
sécurisées (cryptées) entre un serveur et un client SSH. Nous allons utiliser le
programme OpenSSH, qui est la version libre du client et du serveur SSH.

2 Installation
Pour Fedora Core 6, les paquetages openssh sont les suivants :

openssh-4.3p2-19.fc6.i386.rpm
openssh-askpass-4.3p2-19.fc6.i386.rpm
openssh-clients-4.3p2-19.fc6.i386.rpm
openssh-server-4.3p2-19.fc6.i386.rpm

3 Test de connexion

________________________________________________________________________
3
4 Configuration du serveur ssh

Le fichier de configuration du serveur SSH est /etc/ssh/sshd_config. A ne pas


confondre avec le fichier /etc/ssh/ssh_config, qui est le fichier de
configuration du client SSH.

Les lignes les plus importantes de ce fichier de configuration sont:

Port 22

Signifie que le serveur SSH écoute sur le port 22, qui est le port par défaut de
SSH. Vous pouvez le faire écouter sur un autre port en changeant cette ligne.
Vous pouvez aussi le faire écouter sur plusieurs ports à la fois en rajoutant des
lignes similaires.
Protocol 2
Signifie que votre serveur SSH accepte uniquement la version 2 du protocole
SSH. C'est une version plus sécurisée que la version 1 du protocole. Certains
vieux clients SSH utilisent SSH version 1. Si vous voulez que le serveur accepte
les deux protocoles, changez la ligne en :

Protocol 2,1

PermitRootLogin yes

Signifie que vous pouvez ouvrir une connexion SSH en tant que root. Vous
pouvez changer et mettre "no", ce qui signifie que pour vous connecter en root à
distance, vous devrez d'abord vous connecter par SSH en tant que simple
utilisateur, puis utiliser la commande su pour devenir root.

X11Forwarding yes

Signifie que vous allez pouvoir travailler en export display par SSH. Ce sera
expliqué plus tard, dans la partie Xforwarding.

Si vous avez modifié le fichier de configuration du serveur, il faut lui dire de


relire son fichier de configuration :

________________________________________________________________________
4
5 Contrôle du service ssh

Démarrer le service openssh

# service sshd start


Démarrage de sshd : [ OK ]

Vérifier le statut du démon sshd

# service sshd status


sshd (pid 1579) en cours d'exécution

Arrêter le service sshd

# service sshd stop


Arret de sshd : [ OK ]

6 Log

Si problème vérifier le fichier log /var/log/secure

# tail –f /var/log/secure

7 Client ssh
Les informations spécifiques à l'utilisateur se trouvent le répertoire ~/.ssh

Le fichier de configuration du client est :


/etc/ssh/ssh_config

Il existe différentes options pour se connecter à un hôte via la commande ssh.

-l login Identifiant de l'utilisateur.


-v Mode verbeux, permet d'obtenir les messages de debugage plus ou
-vv moins complets (le nombre maximum étant 3).
-vvv
-1 ou –2 Version de ssh employé. ssh1 ou ssh2
-p port Numéro du port distant

________________________________________________________________________
5
Exemple d'utilisation :

ssh -vv -l utilisateur -p port -(1|2) hôte ou ssh utilisateur@hôte

L'hôte distant doit avoir un serveur ssh, nommé sshd, qui permet la connexion.

8 Connexion ssh

Il existe trois méthodes d’authentification via ssh.

8.1 Authentification par mot de passe

C'est la méthode la plus simple. Depuis la machine cliente, tapez :

On peut spécifier le nom de l’usager avec l’option –l :

Si c'est la première connexion SSH depuis ce client vers ce serveur, il vous demande
si le fingerprint de la clé publique présentée par le serveur est bien le bon. Pour être
sûr que vous vous connectez au bon serveur, vous devez connaître de façon certaine
le fingerprint de sa clé publique et la comparer à celle qu'il vous affiche. Si les deux
fingerprints sont identiques, répondez yes, et la clé publique du serveur est alors
rajoutée au fichier ~/.ssh/known_hosts.

Si vous vous êtes déjà connecté depuis ce client vers le serveur, sa clé publique est
déjà dans le fichier ~/.ssh/known_hosts et il ne vous demande donc rien.

Ensuite, entrez votre mot de passe et vous verrez apparaître le prompt, comme lors
d’une connexion locale.
________________________________________________________________________
6
8.2 Authentification par clé

Au lieu de s'authentifier par mot de passe, les utilisateurs peuvent s'authentifier


grâce à la cryptographie asymétrique et son couple de clés privée/publique, comme
le fait le serveur SSH auprès du client SSH.

8.2.1 Générer la paire de clés

SSH s'appuie sur des algorithmes à paire de clefs, ce qui signifie que vous disposez
d'une clé publique, disponible pour tout un chacun et une clé privée dont vous gardez
jalousement l'entrée. Ce système va nous permettre de nous identifier auprès des
hôtes que nous désirons contacter. Il nous faut au préalable créer le trousseau.

Pour générer un couple de clés DSA, tapez :

Pour générer un couple de clés RSA, tapez :

________________________________________________________________________
7
Pour les deux algorithmes (DSA, RSA), le système nous demande dans quel fichier
nous désirons sauvegarder la clé. Les fichiers par défaut semblent une bonne
solution. Par la suite, une passphrase nous est demandée. Celle-ci est un « mot de
passe amélioré », car non limité à un mot ou une petite suite de caractères. Il faut
cependant prendre des précautions, car en cas de perte de la passphrase, vous ne
pourriez plus vous authentifier en tant que propriétaire authentique.

Les clés générées ont par défaut une longueur de 1024 bits, ce qui est aujourd'hui
considéré comme suffisant pour une bonne protection.

Par défaut (il demande confirmation lors du processus de création), la clé privée est
stockée dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la clé publique est
stockée dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644.

Lors de la création, il vous demande une passphrase qui est un mot de passe pour
protéger la clé privée. Cette passphrase sert à crypter la clé privée. La passphrase
vous sera alors demandée à chaque utilisation de la clé privée, c'est à dire à chaque
fois que vous vous connectez en utilisant cette méthode d'authentification. Un
mécanisme appelé ssh-agent permet de ne pas rentrer le mot de passe à chaque fois...
comme nous le verrons un peu plus loin.

Vous pouvez à tout moment changer la passphrase qui protège votre clé privée avec
la commande ssh-keygen -p.

________________________________________________________________________
8
8.2.2 Autoriser votre clé publique

Pour cela, il suffit


de copier votre clé publique dans le fichier
~/.ssh/authorized_keys de la machine sur laquelle vous voulez vous connecter
à distance. La commande suivante permet de réaliser cette opération via SSH :

Si on refait la copie, il ne demande que le mot de passe :

Le fichier est maintenant copié sur l'hôte distant, il reste à


inclure la clé dans le fichier /$HOME/.ssh/authorized_keys :

________________________________________________________________________
9
On peut maintenant se connecter sans mot de passe de l’usager. Il faut juste fournie
la passphrase.

Même chose pour scp :

________________________________________________________________________
10
8.2.3 Se connecter via ssh

La commande est la même que pour une authentification par mot de passe.

8.3 Authentification sans mot de passe

Cette section s'adresse à ceux qui utilisent un couple de clés publiques / privées, et
qui ont crypté leur clé privée avec une passphrase (c'est la configuration la plus
sûre). Par conséquent, le client SSH demande la passphrase à chaque utilisation
des clés pour s'authentifier.

Pour éviter d'avoir à taper systématiquement sa passphrase, il faut utiliser ssh-


agent : ce programme tourne en tâche de fond et garde la clef en mémoire. La
commande ssh-add permet de donner sa clé à ssh-agent. Ensuite, quand vous
utilisez le client ssh, il contacte ssh-agent pour qu'il lui donne la clé.

Mode console

Dans une console, démarrer ssh-agent en tâche de fond :

Puis donnez votre clé à l'agent :

Il vous demande alors votre passphrase. Maintenant que votre clé a été transmise à
l'agent, vous pouvez vous connecter sans entrer de mot de passe à toutes les
machines pour lesquelles vous avez mis votre clé publique dans le fichier
~/.ssh/authorized_keys.

________________________________________________________________________
11
Pour tuer l'agent ssh-agent, il suffit de faire :

Mode graphique

Démarrez le serveur graphique avec la commande :

# ssh-agent startx

Il vous suffit ensuite d'ouvrir un (xterm) terminal graphique et de taper :

L'agent sera actif pour toutes les applications utilisées en mode graphique.

________________________________________________________________________
12
9 La copie sécurisée

SSH fournit un outil de copie sécurisée en standard, sous le nom de scp pour
SecureCoPy. Il remplace son ancêtre rcp. Son usage est très simple :

scp hôte_d_ou_je_veux_copier:source_copie hôte_destination:cible

Lorsque l'hôte correspond à la machine où vous vous trouvez, il n'est pas nécessaire
de l'inscrire.

Vous pouvez également faire des copies récursives, comme nous le ferions avec
n'importe quel autre utilitaire de copie. Par exemple pour copier le répertoire /data
dans /root/data du serveur 192.168.1.102 :

10 Le transfert de fichier sécurisé

Tout comme on peut copier des fichiers à distance par l'intermédiaire de scp, il est
également possible de transférer des fichiers par l'intermédiaire d'un ftp sécurisé
nommé SecureFTP.

________________________________________________________________________
13
Commandes disponibles sur sftp :

cd path Change le répertoire distant vers 'path'


lcd path Change le répertoire local vers 'path'
chgrp grp path Change le groupe de fichier 'path' par 'grp'
chmod mode path Change les permissions du fichier 'path' à 'mode'
chown own path Change le propriétaire du fichier 'path' par 'own'
help Affiche ce message d'aide
get remote-path [local-path] Télécharge le fichier
lls [ls-options [path]] Affiche le listing du répertoire local
ln oldpath newpath Crée un lien symbolique du fichier distant
lmkdir path Crée un répertoire local
lpwd Affiche le répertoire courant
ls [path] Affiche le listing du répertoire distant
lumask umask Positionne l'umask local à 'umask'
mkdir path Crée le répertoire distant
put local-path [remote-path] Charge le fichier
pwd Affiche le répertoire courant distant
exit Quitte sftp
quit Quitte sftp
rename oldpath newpath Renomme le fichier distant
rmdir path Supprime le répertoire distant
rm path Supprime le fichier distant
symlink oldpath newpath Crée un lien symbolique du fichier distant
version Affiche la version de sftp
!command Exécute la 'commande' dans un shell local
! Sort vers un shell local
? Affiche ce message d'aide

________________________________________________________________________
14
11 Le Xforwarding

Il nous manque l'exportation des applications distantes. En effet, à l'aide de telnet,


vous pouviez utiliser un logiciel non présent sur votre machine, mais présent sur le
serveur distant.

Sur le serveur distant (192.168.1.103 étant l’adresse du serveur local) :

Sur le serveur local :

Lancer l’application à partir du serveur distant (par exemple xclock) :

L’application apparaît sur le serveur local :

________________________________________________________________________
15
Xforwarding en utilisant ssh

L'avantage d'utiliser ssh réside dans la connexion chiffrée et l'impossibilité à un


agresseur éventuel de lire ce que vous faîtes via le réseau.

Il faut d’abord autoriser le client à faire du Xforwarding. Pour cela il faut modifier
le fichier /etc/ssh/ssh_config (sur le serveur distant):

Ensuite lancer l’application à partir du serveur distant :

Dans l'exemple, nous demandons d'ouvrir la connexion ssh pour inscrire xclock à
l'intérieur. En fermant xclock, nous fermerons la connexion ssh.

Pour que cela soit réalisable, n'oubliez cependant pas d'activer l'option
X11Forwarding dans le fichier de configuration (/etc/ssh/sshd_config).

________________________________________________________________________
16
12 Tunnel SSH

Faire un tunnel SSH est un moyen simple de crypter n'importe quelle communication
TCP entre votre machine et une machine sur laquelle vous avez un accès SSH.

En premier, démarrer le service apache sur le serveur 192.168.1.103 :

Ensuite établir un tunnel SSH pour une connexion HTTP vers le serveur
192.168.1.103 à partir du serveur 192.168.1.102 :

2012 est le numéro de port sur la machine cliente à partir duquel la connexion entre
dans le tunnel SSH (le port doit être supérieur à 1024 si on ne veut pas avoir à lancer
le tunnel en tant que root).

Il suffit de lancer un navigateur Web en lui demandant de se connecter en local sur


ce port :

________________________________________________________________________
17
Exemple de tunnel SSH

ssh -L 2012:serveur.exemple.org:80 usager@client.exemple.org

13 MÉMO
sshd Serveur ssh
scp Copie distante sécurisée
ssh-keygen génération de clefs d'authentification
sftp Transfert sécurisé de fichiers
slogin/ssh Client ssh
ssh-add Ajoute les identités DSA ou RSA à l'agent d'authentification
ssh-agent Agent d'authentification
ssh-keyscan Recueille les clefs publiques ssh

________________________________________________________________________
18