Vous êtes sur la page 1sur 9

TP SSH SCP SFTP SSHfs X11Forwarding

1) Présentation

1.1) Définition :
SSH (Secure SHell) permet de se connecter de façon sécurisée à un système Unix, Linux et Windows.
Il faut distinguer :
- SSH : le protocole de communication
- ssh : le programme client permettant de se connecter au serveur
- sshd : le serveur (ssh daemon) écoutant sur le port 22 par défaut

1.2) Principe :
Du point de vue de l'utilisateur une connexion ssh s'établit comme une session telnet (demande de
connexion, demande de login, demande de mot de passe), le principe est en réalité beaucoup plus
complexe.
1.3) Avantages :
SSH permet de garantir :

 La confidentialité : le cryptage des paquets permet de garantir celle-ci. Les services tels que
telnet, rlogin envoient les données en clair.
 L'intégrité : SSH permet de garantir que les pastartquets circulant d'un hôte vers un autre ne
sont pas altérés.
 L'authentification : chaque connexion SSH vérifie l'identité du serveur (par sa clé d'hôte
~/.ssh/known_hosts) puis celle du client (par mot de passe ou clé publique
~/.ssh/authorized_keys).
 L'autorisation : il est possible avec SSH de limiter les actions autorisées à l'utilisateur
(~/ssh/.authorization).
 Tunneling : SSH permet de sécuriser un service dont les informations circulent habituellement
en clair (POP, IMAP, VNC, ...).

2) Installation sur serveur et client


Installation : dnf install openssh*
Lancez le service sshd
3) Tests sur la situation initiale
Sur le serveur et le client linux, on lance le service ssh, puis on tente une connexion ssh depuis le
serveur sur le client :
Syntaxe ssh : ssh [options] user@adresse
Options :
-l <login> : identifiant de l’utilisateur (il est possible d’utiliser la syntaxe login@IP)

1
TP SSH – SCP – SFTP -X11 Forwarding
-v : mode verbose permet d’obtenir les messages de débogage.
-1 ou -2 : version de ssh employé. La version 2 est plus sécurisée.
-p <port> : Numéro de port utilisé (22 par défaut)

Exemple : ssh root@192.168.1.1


password ...

Travail : Testez de vous connecter en ssh sur les 2 machines

4) Authentification par clé

4.1) Approche :
Face à la faiblesse de l'authentification par mot de passe, l'authentification par clé se révèle être très
efficace.
La clé permet de garantir à un système qu'un utilisateur est bien celui qu'il prétend être... en deux
mots : « Je jure et je prouve que c'est bien moi ».
L'authentification par clé fonctionne grâce à 3 composants :
 Une clé publique : elle sera exportée sur chaque hôte sur lequel on souhaite pouvoir se
connecter.
 Une clé privée : elle permet de prouver son identité aux serveurs.
 Une passphrase : Permet de sécuriser la clé privée (notons la subtilité, passphrase et pas
password ... donc « phrase de passe » et non pas « mot de passe »).
La sécurité est vraiment accrue car la passphrase seule ne sert à rien sans la clé privée, et vice-versa.

4.2) Scénario :
Notre réseau possède trois postes. Un poste Serveur est sous Linux et deux postes Clients (un sous
windows et un autre sous Linux).
Le service ssh permet de prendre le contrôle des postes clients à distance. Cependant, afin d'améliorer
la sécurité et la simplicité de prise en main, nous allons configurer ssh de telle sorte que les connexions
se réalisent grâce aux clés publiques/privées et sans mot de passe.
Situation finale espérée : Prendre le contrôle du Poste Serveur à distance grâce au service ssh de
manière sécurisée et totalement transparente.
Pour notre TP, nous utiliserons les adresses IP suivantes :
 Serveur : 192.168.1.1 avec l'utilisateur serveur
 Client sous Linux : 192.168.1.2 avec l'utilisateur client
 Client sous Windows : 192.168.1.3 avec l'utilisateur seven
Travail : Créez les utilisateurs sur les différents OS.
4.3) Configuration sur le POSTE Serveur

2
TP SSH – SCP – SFTP -X11 Forwarding
a) Vérifier si ssh est déjà présent sur votre poste : rpm -q openssh
b) Si besoin : Installation ou mise à jour : yum install openssh
c) Le Fichier de configuration : /etc/ssh/sshd_config
L'authentification par clé est activée par défaut. Dans le fichier de configuration, toutes les valeurs
commentées (précédées d'un #) sont placées à leur valeur par défaut.

Remarque : Si vous devez modifiez une variable, pensez à enlever le # pour prendre en compte la
nouvelle valeur de la variable.

d) Connexion ssh vers le serveur : ssh serveur@192.168.1.1

Remarque : L'échange de clé n’est pas encore effectué, il vous sera alors demandé le mot de passe de
l'utilisateur serveur.

Première connexion :
Lors de la première connexion SSH vers un hôte, ce message peut apparaitre :
The authenticity of host 'serveur (192.168.1.1)' can't be established.
RSA key fingerprint is c6:ee:c6:e4:9a:b6:7e:46:4c:17:b4:d0:7b:80:af:2c.
Are you sure you want to continue connecting (yes/no)? Il faut répondre yes lors de cette première connexion.

Warning: Permanently added 'serveur' (RSA) to the list of known hosts.

La clé est maintenant conservée (fichier ~/.ssh/known_hosts).

4.4) Création de la paire de clé sur le Client


Remarque : Dans un premier temps, nous utiliserons le client sous Linux.

La création de la paire de clé se fait avec la commande : ssh-keygen


Il existe 2 types de clés : RSA et DSA correspondent à deux algorithmes différents. On peut utiliser
l’un ou l’autre.
Chacune pouvant être de longueur différente : 1024, 2048, 4096 bits.
Commande pour une clé DSA de 1024 bits : ssh-keygen -t rsa -b 1024 -C clessh
Explication :
 -t : type de clé (DSA ou RSA)
 -b : nombre de bytes
 -C : commentaire sur la clé
Travail : Générez une clé RSA de 1024 bits.
Création de la clé :
Generating public/private dsa key pair.
Enter file in which to save the key (/home/client/.ssh/id_dsa):
Enter passphrase (empty for no passphrase): testssh
Enter same passphrase again: testssh
Your identification has been saved in /home/client/.ssh/id_dsa.
Your public key has been saved in /home/client/.ssh/id_dsa.pub.
3
TP SSH – SCP – SFTP -X11 Forwarding
The key fingerprint is:
cb:61:48:6b:b4:53:00:9b:d1:2a:cf:44:88:79:c2:19 clessh

Deux fichiers ont été créés (dans le dossier ~/.ssh/) du home directory de client :
 id_rsa : contient la clé privée et ne doit pas être dévoilé ou mis à disposition
 id_rsa.pub : contient la clé publique, c'est elle qui sera mise sur les serveurs dont l'accès est
voulu.
Vérifier les droits sur les fichiers :
 le dossier .ssh : 700
 id_rsa : 600
 id_rsa.pub : 644

4.5) Extraction de la clé publique

Sur le poste Client : Il faut envoyer la clé générée par le client sur le poste du serveur. Pour ce faire,
on tape la commande suivante : ssh-copy-id -i ~/.ssh/id_rsa.pub serveur@192.168.1.1

Cette commande envoie le contenu de la clé publique dans le fichier /home/serveur/.ssh/authorized-


key (qui sera modifié ou créé) afin que le serveur accepte le nouveau client.
Remarque : il vous sera demandé le mot de passe du compte serveur.

Sur le poste Serveur :

On interdit tout accès avec mot de passe pour des raisons de sécurité. Une connexion ssh ne pourra
se réaliser qu'avec une paire de clé publique/privée.
4
TP SSH – SCP – SFTP -X11 Forwarding
Désactivation de l'authentification par mot de passe dans le fichier : /etc/ssh/sshd_config
PasswordAuthentication no

Relancez le service sshd

Test : On peut désormais se connecter sans à avoir à renseigner le mot de passe

Remarque : Vous devez néanmoins renseigner la passphrase à chaque redémarrage.

Testez de vous connecter plusieurs fois.

Remarque : Pour se déconnecter, tapez exit dans le terminal.

Si n'arrivez vraiment pas à vous connecter avec un client, cela peut être dû :
 A la communication / routage entre les 2 postes
 Au firewall ou SeLinux non désactivé
 Au type de la clé. Dans ce cas, créez une nouvelle clé de type RSA.

Remarque : Dans tous les cas, consulter le fichier log du système (/var/log/messages) sur les 2 postes.

5) Sécurité

5.1) Root et port

Toujours pour des raisons de sécurité, il peut être dangereux d'autoriser une connexion vers root. Il
est donc conseillé d'exclure l'utilisateur pour les connexions ssh. De, plus pour accroitre la sécurité,
nous pouvons également changer le port des échanges ssh (22 par défaut).

Vous devez à nouveau modifier le fichier /etc/ssh/sshd_config

Port 2022 # Changer le port par défaut


PermitRootLogin no # Ne pas permettre de login en root
Une fois le fichier sauvegardé, relancez le service sshd.

Testez de vous connectez sous root, puis sous serveur (sans le port 2022, puis avec).

Remarque : vous devez repasser PasswordAuthentification à yes.

5.2) Tentatives d'intrusion

Vous pouvez également bloquer les adresses IP qui tentent de se connecter plusieurs fois en testant
plusieurs mots de passe différents. Pour ce faire, vous devez installer le paquet fail2ban sur le
serveur. Cela permet d'éviter nombre d'attaques bruteforce et/ou par dictionnaire.

Fail2ban se base sur les logs de connexion de ssh, pour cela on installe rsyslog : dnf install rsyslog

On va commencer par créer un fichier de log pour fail2ban. Il faut configurer le fichier de
configuration /etc/fail2ban/fail2ban.conf
5
TP SSH – SCP – SFTP -X11 Forwarding
logtarget = /var/log/fail2ban.log
Les autres configurations se réalisent dans le fichier /etc/fail2ban/jail.conf
[sshd]
enabled = true
filter = sshd
maxretry = 2 # 2 tentatives de password pour se connecter
bantime = 120 # IP bloquée 120 secondes
port = ssh,2022
logpath = %(sshd_log)s

Remarque : C'est sous le premier ssh qu’il faut ajouter les lignes !

On relance le service fail2ban, puis on teste de se connecter avec un utilisateur n'ayant pas fait
les échanges de clé sous le serveur en se trompant 3 fois de password.

Sur le serveur, on affiche le fichier log de fail2ban. Après 120 secondes, on retente la connexion,
cela devrait fonctionner.
Remarque : Assurez-vous que le PasswordAuthentification est à yes

6) ssh-agent sur le Poste Client


Le serveur SSH est maintenant plus sécurisé, mais taper des passphrases à longueur de journée peut
se révéler être très pénible.
L'agent SSH permet de taper la passphrase une seule fois et de la conserver en mémoire pendant tout
son fonctionnement. Les communications SSH fonctionneront donc de façon transparente.
Commandes :
#Lancer le ssh-agent : ssh-agent $SHELL

#charger les clé présentes dans ~/.ssh : ssh-add


La passphrase est enregistrée sur le système, toutes les connexions seront désormais transparentes.

7) SFTP
La commande sftp permet de transférer un fichier ou un répertoire entre deux serveurs, de manière
similaire à ftp mais dans un canal sécurisé. Le chemin du serveur peut être indiqué en absolu
(/home/dupont/Repertoire par exemple) ou relatif à partir du répertoire de base Repertoire.

Pour utiliser sftp, vous devez connaître l’arborescence exacte des répertoires de la machine distante.
Il est impératif que SSH soit installé sur les deux machines devant communiquer pour effectuer votre
transfert.

Syntaxe : sftp user@IP-serveur


La machine distante répond :
sftp >

En tapant help ou ?, vous avez accès à la liste des commandes internes à sftp.
6
TP SSH – SCP – SFTP -X11 Forwarding
Voici quelques commandes utiles :
 quit : pour quitter la session en cours
 get : récupère un fichier présent sur le serveur FTP et le place sur votre machine
 put : transfère un fichier de votre disque dur vers le serveur
 ls : permet de lister le contenu du répertoire courant côté FTP
 cd : permet de se déplacer dans l'arborescence du FTP
 pwd : affiche le nom du répertoire courant sur le FTP
 delete et rm : effacent un fichier sur le FTP
 mkdir : créé un répertoire sur le FTP
Exemple :
 Pour uploader un fichier : sftp> put le_fichier
 Pour downloader un fichier : sftp> get le_fichier
Remarque : Pour transférer de nombreux fichiers, il peut être intéressant de les archiver au
préalable avec la commande rar.

Travail : Connectez-vous en sftp sur le serveur et downloader et uploader des fichiers.

8) SSHfs
SShfs permet de créer un disque dur réseau sécurisé. Ainsi, le client et le serveur peuvent s'échanger
/ récupérer certaines données continuellement.

Procédure :
 Créer un répertoire à partager sur le serveur. Ex : partage
 Ajouter quelques fichiers dans partage
 Créer un répertoire qui récupérera les donnémkfies sur le client. Ex : recup
 Installer le service fuse-sshfs sur le client
 Sur le client, taper la commande : sshfs serveur@192.168.1.1:partge ~/recup

 Vérifier sur le client que l'on a bien récupéré les fichiers.

Remarque : Pour démonter le disque, il suffit de taper la commande : fusermount -u ~/recup

9) X11 Forwarding
La technologie X11 permet d'utiliser une application sur une machine différente de celle qui
l’exécute. Cette technologie peut fonctionnerf sans SSH.
Si on la couple à SSH, elle s'appelle alors X11Forwarding.
Il y a plusieurs avantages à utiliser le X11Forwarding :

 tout comme telnet, les connections par le protocole X11 sont en clair (non cryptées) et donc
par nature assez peu sécurisées. SSH va sécuriser la communication.
 l'utilisation est simpliste.
 ssh compresse les données échangées, ce qui améliore grandement les performances.
Travail :

Sur le poste du serveur : Il faut modifier le contenu du fichier /etc/ssh/sshd_config


7
TP SSH – SCP – SFTP -X11 Forwarding
X11Forwarding yes // on autorise le X11Forwarding

Une fois le fichier sauvegardé, n'oubliez pas de relancer le service sshd

Sur le poste du client :ssh -X serveur@192.168.1.1

Puis vous pouvez lancer une application du serveur depuis le terminal du client !

Remarque : En cas d'erreur cannot display ….

Ajoutez sur le serveur la ligne suivante : export DISPLAY=:0.0

9) SSH WINDOWS – LINUX


Objectif : Réaliser la connexion ssh depuis le poste client sous Windows avec les mêmes contraintes
(sans mot de passe, passphrase en mémoire, X11 ...)
Pour réaliser une connexion ssh sous windows, nous allons télécharger les logiciels :

 putty.exe pour se connecter à ssh

 puttygen.exe pour créér les clés

 pageant.exe pour la passphrase

 Xming pour le X11 FORWARDING


Travail : Dans un premie r temps, on vérifie la communication entre le client et le serveur (ping), puis
on teste que la connexion ssh avec mot passe fonctionne.
Remarque : Pour réaliser le point précédent, on doit réactiver l'authentification par mot de passe dans
le fichier : /etc/ssh/sshd_config
PasswordAuthentication no

Nous allons maintenant utiliser le logiciel Puttygen pour générer les clés. Nous créerons cette fois-ci
une clé RSA.

Procédure :

 Cliquer sur generate puis remuer la souris dans la partie prévue à cet effet.

 Une clé s'est créé. Il s'agit de la clé publique que l'on doit envoyer au serveur. Copier là dans
son intégralité avec votre souris.

 Vous devez copier cette clé dans le fichier authorized_key du serveur. Pour ce faire, nous
allons utiliser putty. Connectez-vous en ssh sur le serveur, puis ouvrez le fichier avec l'éditeur
vi. Copiez la clé en fin de fichier. N'oubliez pas d'enregister ! Vous pouvez fermer la session

 Sur puttygen, sauvegardez la clé privée.

 Ouvrez Putty. Puis, aller dans "Connection" -> "Data". Renseigner "Auto-login username"
avec le login (serveur).

8
TP SSH – SCP – SFTP -X11 Forwarding
 Dans "Connection" -> "SSH" -> "Auth", cliquer sur browse et localiser la clé privée

 Dans "Window" -> "Translation", chosir le charset UTF-8 dans la slite déroulante, afin
d'éviter des problèmes de caractères.

 Retourner dans "Session" et indiquer l'adresse IP du serveur, puis renseigner "Saved Sessions"
en donnant un nom à la connexion, sauvegarder et open

 La connexion devrait marcher sans le mot de passe de la session. En revanche la passphrase


vous est demandée. Quitter la session.

 On va utiliser pageant pour mémoriser la passphrase. Clic droit sur l'icône de pageant. Add
Keys. On selectionne la clé privée créée précédemment, puis on tape la passphrase

 Ouvrez de nouveau putty. Ouvrez la connexion enregistrée. Cette fois-ci, plus besoin de
passphrase !

 Dernière étape : X11 FORWARDING. Avant d’établir la connexion sous Windows, nous
installons le logiciel XMing qui comprend un émulateur du serveur X Window, indispensable
au bon fonctionnement du X11FORWARDING sur Windows. Une fois XMing installé,
ouvrez putty, ouvrez votre connexion, puis aller dans ssh, puis X11 et cocher Enable
X11FORWARDING. Lancez la connexion et vérifiez que l'on peut ouvrir une application
depuis le terminal.

9
TP SSH – SCP – SFTP -X11 Forwarding

Vous aimerez peut-être aussi