Documente Academic
Documente Profesional
Documente Cultură
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, ...).
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)
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.
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.
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
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
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
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é
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).
Testez de vous connectez sous root, puis sous serveur (sans le port 2022, puis avec).
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
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.
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.
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
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 :
Puis vous pouvez lancer une application du serveur depuis le terminal du client !
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
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
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