Vous êtes sur la page 1sur 21

Table des matires

1 OpenSSH..................................................................................................................... 2
1.1 Introduction ......................................................................................................... 2
1.2 Installation........................................................................................................... 2
1.3 Test de connexion ............................................................................................... 2
1.4 Configuration du serveur ssh .............................................................................. 3
1.5 Contrle du service ssh ....................................................................................... 4
1.6 Log ...................................................................................................................... 4
1.7 Client ssh ............................................................................................................. 4
1.8 Connexion ssh ..................................................................................................... 5
1.8.1 Authentification par mot de passe................................................................... 5
1.8.2 Authentification par cl................................................................................... 7
1.8.3 Authentification sans mot de passe ............................................................... 11
1.9 La copie scurise ............................................................................................. 13
1.10 Le transfert de fichier scuris .......................................................................... 14
1.11 Le Xforwarding ................................................................................................. 16
1.12 Tunnel SSH ....................................................................................................... 18
1.13 TUNNEL SSH -L (LOCAL) ET SSH -R (REMOTE) ..................................... 20
1.14 MMO .............................................................................................................. 21

_______________________________________________________________________
2011 Hakim Benameurlaine 1
1 OpenSSH

1.1 Introduction

De nombreux outils ont t fournis pour utiliser la capacit du rseau.


changer, copier, utiliser des Shells distance. Les noms de ces outils sont
respectivement ftp, rcp, telnet, etc... Bien que ces outils, utiliss pendant des
annes et mme encore aujourd'hui dans beaucoup dentreprises, soient trs
pratiques, ils comportent une faiblesse importante. Leurs transactions sont
transmises en clair via le rseau. De ce fait, n'importe quelle personne mal
intentionne peut tre en mesure d'observer ce que vous fates, allant mme
jusqu' subtiliser vos donnes personnelles et mots de passe.

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

1.2 Installation

Pour RedHat, les paquetages openssh sont les suivants :


openssh
openssh-askpass
openssh-clients
openssh-server

1.3 Test de connexion

_______________________________________________________________________
2011 Hakim Benameurlaine 2
1.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
dfaut 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 scurise 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.

_______________________________________________________________________
2011 Hakim Benameurlaine 3
Si vous avez modifi le fichier de configuration du serveur, il faut lui dire
de relire son fichier de configuration :

1.5 Contrle du service ssh

Dmarrer le service openssh

# service sshd start


Dmarrage de sshd : [ OK ]

Vrifier le statut du dmon sshd

# service sshd status


sshd (pid 1579) en cours d'excution

Arrter le service sshd

# service sshd stop


Arret de sshd : [ OK ]

1.6 Log

Si problme vrifier le fichier log /var/log/secure

# tail f /var/log/secure

1.7 Client ssh

Les informations spcifiques l'utilisateur se trouvent le rpertoire ~/.ssh

_______________________________________________________________________
2011 Hakim Benameurlaine 4
Le fichier de configuration du client est :
/etc/ssh/ssh_config

Il existe diffrentes options pour se connecter un hte via la commande


ssh.

-l login Identifiant de l'utilisateur.


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

Exemple d'utilisation :

ssh -vv -l utilisateur -p port -(1|2) hte ou ssh utilisateur@hte

L'hte distant doit avoir un serveur ssh, nomm sshd, qui permet la
connexion.

1.8 Connexion ssh

Il existe trois mthodes dauthentification via ssh.

1.8.1 Authentification par mot de passe

C'est la mthode la plus simple. Depuis la machine cliente, tapez :

_______________________________________________________________________
2011 Hakim Benameurlaine 5
On peut spcifier le nom de lusager avec loption l :

Si c'est la premire connexion SSH depuis ce client vers ce serveur, il vous


demande si le fingerprint de la cl publique prsente par le serveur est
bien le bon.

Pour tre sr que vous vous connectez au bon serveur, vous devez
connatre de faon certaine le fingerprint de sa cl publique et la
comparer celle qu'il vous affiche.

Si les deux fingerprints sont identiques, rpondez yes, et la cl


publique du serveur est alors rajoute au fichier ~/.ssh/known_hosts

Si vous vous tes dj connect depuis ce client vers le serveur, sa cl


publique est dj dans le fichier ~/.ssh/known_hosts et il ne vous
demande donc rien.

Ensuite, entrez votre mot de passe et vous verrez apparatre le prompt,


comme lors dune connexion locale.

_______________________________________________________________________
2011 Hakim Benameurlaine 6
1.8.2 Authentification par cl

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


s'authentifier grce la cryptographie asymtrique et son couple de cls
prive/publique, comme le fait le serveur SSH auprs du client SSH.

1) Gnrer la paire de cls

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 prive dont vous gardez jalousement l'entre. Ce systme va nous
permettre de nous identifier auprs des htes que nous dsirons
contacter. Il nous faut au pralable crer le trousseau.

Pour gnrer un couple de cls DSA, tapez :

Pour gnrer un couple de cls RSA, tapez :

_______________________________________________________________________
2011 Hakim Benameurlaine 7
Pour les deux algorithmes (DSA, RSA), le systme nous demande dans quel
fichier nous dsirons sauvegarder la cl. Les fichiers par dfaut semblent
une bonne solution. Par la suite, une passphrase nous est demande. Celle-
ci est un mot de passe amlior , car non limit un mot ou une petite
suite de caractres. Il faut cependant prendre des prcautions, car en cas de
perte de la passphrase, vous ne pourriez plus vous authentifier en tant que
propritaire authentique.

Les cls gnres ont par dfaut une longueur de 1024 bits, ce qui est
aujourd'hui considr comme suffisant pour une bonne protection.

Par dfaut (il demande confirmation lors du processus de cration), la cl


prive est stocke dans le fichier ~/.ssh/id_dsa avec les permissions 600 et
la cl publique est stocke dans le fichier ~/.ssh/id_dsa.pub avec les
permissions 644.

Lors de la cration, il vous demande une passphrase qui est un mot de


passe pour protger la cl prive.

Le passphrase sert crypter la cl prive. La passphrase vous sera alors


demande chaque utilisation de la cl prive, c'est dire chaque fois que
vous vous connectez en utilisant cette mthode d'authentification.

_______________________________________________________________________
2011 Hakim Benameurlaine 8
Un mcanisme 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 protge votre cl


prive avec la commande :

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 raliser cette opration via SSH :

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

_______________________________________________________________________
2011 Hakim Benameurlaine 9
Le fichier est maintenant copi sur l'hte distant, il reste inclure la cl
dans le fichier /$HOME/.ssh/authorized_keys :

On peut maintenant se connecter sans mot de passe de lusager. Il faut


juste fournie la passphrase.

Mme chose pour scp :

3) Se connecter via ssh

La commande est la mme que pour une authentification par mot de passe.

_______________________________________________________________________
2011 Hakim Benameurlaine 10
1.8.3 Authentification sans mot de passe

Cette section s'adresse ceux qui utilisent un couple de cls publiques /


prives, et qui ont crypt leur cl prive avec une passphrase (c'est la
configuration la plus sre). Par consquent, le client SSH demande la
passphrase chaque utilisation des cls pour s'authentifier.

Pour viter d'avoir taper systmatiquement sa passphrase, il faut utiliser


ssh-agent : ce programme tourne en tche de fond et garde la clef en
mmoire. 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, dmarrer ssh-agent en tche 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

_______________________________________________________________________
2011 Hakim Benameurlaine 11
passe toutes les machines pour lesquelles vous avez mis votre cl
publique dans le fichier ~/.ssh/authorized_keys.

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

Mode graphique

Dmarrez 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 utilises en mode graphique.

_______________________________________________________________________
2011 Hakim Benameurlaine 12
1.9 La copie scurise

SSH fournit un outil de copie scurise en standard, sous le nom de scp


pour SecureCoPy. Il remplace son anctre rcp. Son usage est trs simple :

scp hte_d_ou_je_veux_copier:source_copie hte_destination:cible

Lorsque l'hte correspond la machine o vous vous trouvez, il n'est pas


ncessaire de l'inscrire.

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

_______________________________________________________________________
2011 Hakim Benameurlaine 13
1.10 Le transfert de fichier scuris

Tout comme on peut copier des fichiers distance par l'intermdiaire de scp,
il est galement possible de transfrer des fichiers par l'intermdiaire d'un ftp
scuris nomm SecureFTP.

_______________________________________________________________________
2011 Hakim Benameurlaine 14
Commandes disponibles sur sftp :

cd path Change le rpertoire distant vers 'path'


lcd path Change le rpertoire 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 propritaire du fichier 'path' par 'own'
help Affiche ce message d'aide
get remote-path [local-path] Tlcharge le fichier
lls [ls-options [path]] Affiche le listing du rpertoire local
ln oldpath newpath Cre un lien symbolique du fichier distant
lmkdir path Cre un rpertoire local
lpwd Affiche le rpertoire courant
ls [path] Affiche le listing du rpertoire distant
lumask umask Positionne l'umask local 'umask'
mkdir path Cre le rpertoire distant
put local-path [remote-path] Charge le fichier
pwd Affiche le rpertoire courant distant
exit Quitte sftp
quit Quitte sftp
rename oldpath newpath Renomme le fichier distant
rmdir path Supprime le rpertoire distant
rm path Supprime le fichier distant
symlink oldpath newpath Cre un lien symbolique du fichier distant
version Affiche la version de sftp
!command Excute la 'commande' dans un shell local
! Sort vers un shell local
? Affiche ce message d'aide

_______________________________________________________________________
2011 Hakim Benameurlaine 15
1.11 Le Xforwarding

Xforwarding classique

Il nous manque l'exportation des applications X11 distantes. En effet, l'aide


de telnet, vous pouviez utiliser un logiciel non prsent sur votre machine,
mais prsent sur le serveur distant.

1) Sur le serveur distant (192.168.1.103 tant ladresse du serveur local) :

2) Sur le serveur local :

3) Lancer lapplication partir du serveur distant (par exemple xclock) :

Lapplication apparat sur le serveur local :

_______________________________________________________________________
2011 Hakim Benameurlaine 16
Xforwarding en utilisant ssh

L'avantage d'utiliser ssh rside dans la connexion chiffre et l'impossibilit


un agresseur ventuel de lire ce que vous fates via le rseau.

1) Il faut dabord autoriser le client recevoir le Xforwarding. Pour cela il faut


modifier le fichier /etc/ssh/ssh_config (sur le serveur local):

2) Activer l'option X11Forwarding dans le fichier de configuration


(/etc/ssh/sshd_config) du serveur distant.
3) Ensuite lancer lapplication dans la session ssh partir du serveur local :

192.168.189.128 tant ladresse du serveur distant.

Dans l'exemple, nous demandons d'ouvrir la connexion ssh pour inscrire


xclock l'intrieur.

_______________________________________________________________________
2011 Hakim Benameurlaine 17
1.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 accs SSH.

En premier, dmarrer 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 numro de port sur la machine cliente partir duquel la


connexion entre dans le tunnel SSH (le port doit tre suprieur 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 :

_______________________________________________________________________
2011 Hakim Benameurlaine 18
Exemple de tunnel SSH

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

_______________________________________________________________________
2011 Hakim Benameurlaine 19
1.13 TUNNEL SSH -L (LOCAL) ET SSH -R (REMOTE)

On va dcrire le fonctionnement d'un tunnel en mode local et en mode


distant.

SSH Local

Syntaxe :

localhost% ssh -L port-local:adresse:port serveur-ssh

Le SSH local permet de transmettre les demandes locales (sur le port


port-local de localhost) vers le serveur-ssh qui les envoie sur le
port port de l'adresse adresse.

Le mode local vous permet d'accder un serveur sur un rseau priv.

_______________________________________________________________________
2011 Hakim Benameurlaine 20
SSH Distant

Syntaxe :

localhost% ssh -R port-distant:adresse:port serveur-ssh

Le SSH distant permet de transmettre les demandes distantes (sur le port


port-distant de serveur-ssh) vers localhost qui les envoie sur le
port port de l'adresse adresse.

Le mode distant vous permet d'ouvrir l'accs un serveur sur un


rseau priv.

1.14 MMO

sshd Serveur ssh


scp Copie distante scurise
ssh-keygen gnration de clefs d'authentification
sftp Transfert scuris de fichiers
slogin/ssh Client ssh
ssh-add Ajoute les identits DSA ou RSA l'agent d'authentification
ssh-agent Agent d'authentification
ssh-keyscan Recueille les clefs publiques ssh

_______________________________________________________________________
2011 Hakim Benameurlaine 21