Vous êtes sur la page 1sur 37

Sécurité sur

Debian : cas de SSH

!
Table des matières
Table des matières........................................................................................................................ 2
Introduction .................................................................................................................................. 4
Prérequis ...................................................................................................................................... 4
I. Installation............................................................................................................................. 6
1. Installation sur une machine cliente .............................................................................. 6
2. Installation sur un serveur Debian ................................................................................. 6
3. Les fichiers de configuration ......................................................................................... 7
4. L’authentification simple ............................................................................................... 9
5. L’authentification par clefs RSA ................................................................................. 19

Table des figures


Figure 1 : Informations sur la version de l’OS ..................................................................... 5
Figure 2: Machines clientes Ubuntu 20.04 LTS & Windows 10 ..................................................... 5
Figure 3: Mise à jour du cache des paquets du fichier sources.list .................................................. 5
Figure 4: Installation du client openssh ........................................................................................... 6
Figure 5: Paramètres de fonctionnalités facultatives sur Windows 10 ............................................ 6
Figure 6: Installation de ssh sur le serveur....................................................................................... 7
Figure 7: Version ssh installé sur le serveur .................................................................................... 7
Figure 8: L’état du service ssh sur le serveur .................................................................................. 7
Figure 9: Répertoire et fichiers de configuration ssh ...................................................................... 8
Figure 10:Fichier de configuration du client ................................................................................... 9
Figure 11:Machine cliente Windows 10 ........................................................................................ 10
Figure 12: Test de connectivité entre la machine cliente W10 et le serveur ................................. 10
Figure 13:Connexion à distance au compte root............................................................................ 11
Figure 14:Nom de l’utilisateur en cours ........................................................................................ 11
Figure 15:Informations sur la version du noyau ............................................................................ 11
Figure 16:Informations sur la version de l’OS .............................................................................. 11
Figure 17:Machine cliente Ubuntu 20.04 LTS .............................................................................. 12
Figure 18:Adresse IP de la machine cliente Ubuntu ...................................................................... 12
Figure 19:Test de connectivité entre la machine cliente Ubuntu et le serveur .............................. 12

#
Figure 20:Connexion à distance au compte de l’utilisateur root ................................................... 13
Figure 21Informations sur la version de l’OS................................................................................ 13
Figure 22: Fichier de configuration du serveur.............................................................................. 14
Figure 23:Blocage de l’accès à distance au compte de l’utilisateur root ....................................... 14
Figure 24: Redémarrage du service ssh ......................................................................................... 15
Figure 25: Résultat du blocage de l’accès à distance au compte root à partir de la machine W10 15
Figure 26: Résultat du blocage de l’accès à distance au compte root à partir de la machine Ubuntu
........................................................................................................................................................ 15
Figure 27: Tentative d’accès de la machine cliente W10 via Putty ............................................... 16
Figure 28: Accès de la machine cliente W10 via Putty ................................................................. 16
Figure 29: Ajout de la ligne AllowUsers dans la configuration .................................................... 17
Figure 30: Redémarrage du service ssh ......................................................................................... 17
Figure 31: Modification des droits du répertoire .ssh/ de la machine cliente ................................ 18
Figure 32: Voir les droits du répertoire .ssh/ ................................................................................. 18
Figure 33: Modification des droits de tous les fichiers dans .ssh/ de la machine cliente .............. 18
Figure 34: Voir les droits des fichiers de répertoire .ssh/ de la machine cliente ........................... 18
Figure 35: Modification des droits des fichiers dans .ssh/ de la machine cliente .......................... 19
Figure 36: Voir les droits des fichiers *.pub .................................................................................. 19
Figure 37: Création de la paire de clefs publique/privée par le client ........................................... 19
Figure 38: Modification de la passphrase de la clef privée ........................................................... 20
Figure 39: Génération d’une paire de clefs .................................................................................... 20
Figure 40: Création du fichier authorized_keys dans le répertoire .ssh/........................................ 21
Figure 41: Copie automatique de la clef publique sur le serveur .................................................. 21
Figure 42: Vérification de la copie de la clef sur le serveur .......................................................... 22
Figure 43: Redémarrage du service ssh ......................................................................................... 22
Figure 44: Ajout de la passephrase pour déchiffrer la clef privée ................................................. 23
Figure 45: Connexion sur le serveur à distance ............................................................................. 23
Figure 46: Informations sur la version de l’OS du serveur distant ................................................ 23
Figure 47: Désactivation de la méthode d’authentification par mot de passe ............................... 24
Figure 48: Redémarrage du service ssh ......................................................................................... 24
Figure 49: Lancement du programme ssh-add............................................................................... 24
Figure 50: Génération des clefs RSA............................................................................................. 25
Figure 51: Génération des clefs grâce au mouvement de la souris ................................................ 26
Figure 52: Enregistrement des clefs générées ................................................................................ 27
Figure 53: Enregistrement de la clef publique ............................................................................... 28
Figure 54: Enregistrement de la clef privée ................................................................................... 29
3
Figure 55: Modification du paramètre PasswordAuthentication ................................................... 30
Figure 56: Envoi de la clef publique au serveur ............................................................................ 30
Figure 57: Sélection de la clef privée ............................................................................................ 31
Figure 58: Choix du login par défaut ............................................................................................. 32
Figure 59: Enregistrement des paramètres dans PuTTY ............................................................... 33
Figure 60: Connexion au serveur avec la passphrase .................................................................... 34
Figure 61: Ouverture de l’emplacement du fichier ........................................................................ 34
Figure 62: Exécutable d’un programme en démarrage automatique ............................................. 35
Figure 63: Affichage de l’agent ssh Pageant ................................................................................. 35
Figure 64: L’ajout de la clef privée................................................................................................ 36
Figure 65: Mot de passe de la clef privée à renseigner .................................................................. 36
Figure 66: Menu de Pageant .......................................................................................................... 36
Figure 67: Connexion en ssh directe sans passphrase à ajouter..................................................... 37

Introduction
SSH, pour Secure Shell, est un protocole réseau qui est utilisé afin d'opérer des connexions à
distance vers des machines distantes au sein d'un réseau local ou sur Internet. Les architectures
SSH comprennent généralement un serveur SSH qui est utilisé par les clients SSH pour se
connecter à la machine distante. Pour l’implémentation, le logiciel openssh est le plus populaire et
le plus largement utilisé. SSH remplace les services réseaux non sécurisés tels que le telnet, rlogin
et rsh et ajoute de nombreuses fonctionnalités.

Prérequis
Un machine Debian 10 est utilisé comme étant notre serveur

4
Figure 1 : Informations sur la version de l’OS
Et deux clients (Ubuntu 20.04 LTS Windows 10)

Figure 2: Machines clientes Ubuntu 20.04 LTS & Windows 10

En mode client ou serveur, mettre à jour la liste des dépôts de logiciels avec la commande : sudo
apt-get update

Figure 3: Mise à jour du cache des paquets du fichier sources.list

<
I. Installation

1. Installation sur une machine cliente

a. Sur Ubuntu

Le client est installé par défaut, sinon il suffit de l’exécuter en root avec la commande suivante :
sudo apt install openssh-client

Figure 4: Installation du client openssh

b. Sur Windows 10

On ajoute la fonctionnalité dans Paramètres à Applications à Applications et Fonctionnalités à


Fonctionnalités facultatives, choisir OpenSSH Client et cliquez sur Installer

Figure 5: Paramètres de fonctionnalités facultatives sur Windows 10

2. Installation sur un serveur Debian


Le serveur autorise les connexions à distance et s'installe en s'exécutant en tant que root avec la
commande suivante : sudo apt install openssh-server

=
Figure 6: Installation de ssh sur le serveur

Vérification de la version du service installé

Figure 7: Version ssh installé sur le serveur

L’état du service peut être vérifié avec les commandes suivantes : systemctl status ssh ou
/etc/init.d/ssh status renvoient les mêmes résultats

Figure 8: L’état du service ssh sur le serveur

3. Les fichiers de configuration


L’essentiel de la configuration de ssh se trouve dans le répertoire /etc/ssh

On se connecte en tant que root avec la commande $ su – puis on renseigne le mot de passe

Fig.9 Connexion au compte root

?
Figure 9: Répertoire et fichiers de configuration ssh

Les principaux fichiers sont :

• ssh_config : fichier de configuration client


• sshd_config : fichier de configuration serveur

Dans la section « Host * » les paramètres sont laissés par défaut dans le fichier de configuration
client.

Ci-dessous une vue sur le fichier de configuration client :

@
Figure 10:Fichier de configuration du client

4. L’authentification simple
Lors de l’installation basique du serveur OpenSSH, l’utilisateur root est autorisé à se connecter au
serveur directement, ce qui peut être considéré d’une certaine manière comme une faille de sécurité.
Un attaquant peut utiliser par exemple une attaque par dictionnaire pour tenter de retrouver le mot
de passe root.

Ci-dessous des tests d’accès au serveur avec l’utilisateur root :

a. Connexion au serveur par lignes de commande : machine W10

A
Figure 11:Machine cliente Windows 10

Figure 12: Test de connectivité entre la machine cliente W10 et le serveur

!B
Figure 13:Connexion à distance au compte root

Figure 14:Nom de l’utilisateur en cours

Figure 15:Informations sur la version du noyau

Figure 16:Informations sur la version de l’OS

b. Connexion au serveur par lignes de commande : machine Ubuntu

!!
Figure 17:Machine cliente Ubuntu 20.04 LTS

Figure 18:Adresse IP de la machine cliente Ubuntu

Figure 19:Test de connectivité entre la machine cliente Ubuntu et le serveur

!#
Figure 20:Connexion à distance au compte de l’utilisateur root

Figure 21Informations sur la version de l’OS

c. Interdire la connexion de l’utilisateur root

Pour des raisons de sécurité, nous bloquons l’accès au compte root à distance.
Il est donc nécessaire de modifier la configuration du serveur. On décommente la ligne «
#PermitRootLogin yes »

!3
Figure 22: Fichier de configuration du serveur

en remplaçant par « PermitRootLogin no » :

Figure 23:Blocage de l’accès à distance au compte de l’utilisateur root

Il est ensuite nécessaire de redémarrer le service ssh au niveau du serveur pour prendre en compte
les modifications.

!4
Figure 24: Redémarrage du service ssh

d. Tests sur les machines Windows10 et Ubuntu

Figure 25: Résultat du blocage de l’accès à distance au compte root à partir de la machine W10

Figure 26: Résultat du blocage de l’accès à distance au compte root à partir de la machine Ubuntu

e. Connexion au serveur via le logiciel Putty

!<
Figure 27: Tentative d’accès de la machine cliente W10 via Putty

Figure 28: Accès de la machine cliente W10 via Putty

f. Autoriser que certains utilisateurs à se connecter


Il peut être également utile de n’autoriser que certains utilisateurs du système à se connecter en ssh
au serveur.

!=
Pour ceci il suffit de modifier le fichier de configuration /etc/ssh/sshd_config puis d’ajouter ou
modifier la ligne si elle existe déjà :

Figure 29: Ajout de la ligne AllowUsers dans la configuration

NB : envr-cyber et stg2 doivent être des utilisateurs du système

Il est ensuite nécessaire de redémarrer le service ssh au niveau du serveur pour prendre en compte
les modifications.

Figure 30: Redémarrage du service ssh

!?
g. Vérifier les droits des répertoires et fichiers
Pour assurer une bonne protection des répertoires de configuration et leurs fichiers contenus qu’ils
soient sur les serveurs ou sur les machines clientes, ils ne devraient pas être lisibles et utilisables
par tous.

On va modifier les droits du répertoire de la sorte :

Figure 31: Modification des droits du répertoire .ssh/ de la machine cliente

Cela change les droits de notre répertoire personnel .ssh en 700 soit, seulement l’utilisateur peut
lire, écrire et exécuter dans ce répertoire.

Si on lance la commande suivante, on voit la première ligne :

Figure 32: Voir les droits du répertoire .ssh/

Ensuite, seuls les utilisateurs devraient pouvoir lire et modifier leurs fichiers de configuration. Pour
ce faire, on lance la commande suivante :

Figure 33: Modification des droits de tous les fichiers dans .ssh/ de la machine cliente

Avec la modification, l’ensemble des fichiers du répertoire .ssh/ ont comme droit : -rw-------

Figure 34: Voir les droits des fichiers de répertoire .ssh/ de la machine cliente

Enfin, on modifie les droits des clefs publiques (*.pub) en donnant à tous les utilisateurs la
possibilité de les lire avec la commande suivante :

!@
Figure 35: Modification des droits des fichiers dans .ssh/ de la machine cliente

En lançant la commande suivante ls -lsa ~/.ssh/*.pub, l’ensemble des fichiers doivent avoir comme
droits -rw-r--r--.

Figure 36: Voir les droits des fichiers *.pub

5. L’authentification par clefs RSA


L’authentification sur un serveur à l’aide d’une clé publique / privée a plusieurs avantages. Le
premier est de permettre de se connecter au serveur sans utiliser de mot de passe. Le second est
d’offrir une meilleure sécurité si l’on supprime la possibilité de se connecter par login/mot de passe
et que l’on force les utilisateurs à utiliser ce système de clé.

a. La création de la paire de clefs


Avant toute autre configuration, il est nécessaire de créer une paire de clefs publique/privée sur la
machine utilisateur avec la commande suivante :

Figure 37: Création de la paire de clefs publique/privée par le client

La commande demandera où installer la clé privée, laissez l’emplacement par défaut à


savoir /home/votre_user/.ssh/id_rsa.
Puis elle vous demandera un mot de passe qui servira plus tard pour s’authentifier au serveur.
En plus de la clé privée, la commande créera votre clé publique dans ~/.ssh/id_rsa.pub.

NB : Si vous souhaitez par la suite modifier le mot de passe de la clé, il faudra utiliser la
commande :

!A
Figure 38: Modification de la passphrase de la clef privée

Au cas où votre machine utilise l’OS Windows, il vous faudra utiliser PuTTYgen. On peut
télécharger le logiciel à partir du lien suivant : https://www.puttygen.com/download-putty et suivre
https://www.puttygen.com/#Download_PuTTYgen_on_Windows ou
https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-puttygen pour la
génération des clefs.

Figure 39: Génération d’une paire de clefs

#B
b. La copie de la clef publique sur le serveur
Afin de pouvoir utiliser cette clé pour s’authentifier au serveur souhaité, il est nécessaire de la
copier dans les clés autorisées du compte utilisateur sur le serveur.
Il est donc nécessaire de se connecter au serveur puis de créer s’il n’existe pas, le répertoire .ssh à
la racine du répertoire utilisateur.

On va ensuite ajouter au fichier ~/.ssh/authorized_keys les clés autorisées à se connecter, on ouvre


donc ce fichier en édition :

Figure 40: Création du fichier authorized_keys dans le répertoire .ssh/

Dans le cas où l’accès ssh par login/mot de passe simple est désactivé, l’intervention d’un
administrateur ou d’une autre personne ayant l’autorisation de se connecter en tant que cet
utilisateur est nécessaire.

Pour les utilisateurs ayant un client SSH récent et disposant de la commande ssh-copy-id, cette
action peut être effectuée plus simplement en utilisant la commande suivante qui transfèrera la clé
automatiquement sans nécessité de copier/coller manuellement :

Figure 41: Copie automatique de la clef publique sur le serveur

NB : On vous demande votre mot de passe (celui de votre compte, pas la passphrase). En fait,
vous vous connectez par mot de passe encore une fois, pour pouvoir ajouter votre clé publique sur
le serveur.

#!
On vérifie la clef copiée sur le serveur

Figure 42: Vérification de la copie de la clef sur le serveur

Lors du simple ajout de clé (sans autre modifications de la configuration), il est nécessaire de
redémarrer le server openssh afin qu’il prenne en compte le nouveau client.

Figure 43: Redémarrage du service ssh

Se connecter !
On vous demande la phrase de passe pour déchiffrer votre clé privée. Entrez-la.
Normalement, si tout va bien, vous devriez être alors connectés au serveur.

##
Figure 44: Ajout de la passephrase pour déchiffrer la clef privée

Figure 45: Connexion sur le serveur à distance

Figure 46: Informations sur la version de l’OS du serveur distant

#3
c. Désactivation de la méthode d’authentification par mot de passe
Maintenant que notre clé est installée, on peut désactiver la méthode d’authentification par mot de
passe. Il suffit d’éditer sur le serveur le fichier de configuration du serveur ssh, puis d’ajouter ou
modifier la ligne :

Figure 47: Désactivation de la méthode d’authentification par mot de passe

Figure 48: Redémarrage du service ssh

d. L’agent SSH

L'agent SSH est un programme qui tourne en arrière-plan en mémoire. Il retient les clés privées
pendant toute la durée de votre session.

La commande ssh-add est lancée sur la machine de l’utilisateur

Figure 49: Lancement du programme ssh-add

NB : L'intérêt de l'agent SSH est qu'il ne vous demande la passphrase qu'une seule fois au début.
Ensuite, vous pouvez vous connecter plusieurs fois sur le même serveur, ou même sur plusieurs
serveurs différents, le tout sans avoir besoin de retaper votre passphrase !

e. Authentification par clefs depuis Windows (PuTTY)

#4
§ Configuration de PuTTY

Il est tout à fait possible d'utiliser l'authentification par clé avec PuTTY. Il existe une différence
entre le programme d’installation qui est téléchargeable à partir du lien suivant
https://www.puttygen.com/download-putty , et le programme principal putty.exe qu’on utilise très
souvent pour lancer une connexion en ssh par mot de passe.

Le principe est le même que sous Linux : : il faut d'abord que l'on génère une paire de clés sur le
PC du client, puis qu'on les envoie au serveur. Nous retrouverons aussi un équivalent de l'agent
SSH pour éviter d'avoir à entrer une passphrase à chaque fois.

Figure 50: Génération des clefs RSA

Dans les paramètres, on peut remarquer qu’on a le choix du type de clef qu’on peut générer en
fonction de l’algorithme de chiffrement et de la taille de la clef.

On laisse les valeurs par défaut (ici RSA 2048 bits) et on clique sur « Generate » pour générer la
paire de clefs (publique et privée)

#<
Figure 51: Génération des clefs grâce au mouvement de la souris

#=
Figure 52: Enregistrement des clefs générées

La clef publique est présentée sur l’interface et visible par tous. Par contre, la clef privée doit être
secrète.

Pour renforcer la sécurité, il est important de le renseigner cette passphrase

On enregistre la clef publique dans un fichier en cliquant sur « Save Private Key ». On nomme le
fichier avec l’extension .pub

#?
Figure 53: Enregistrement de la clef publique

Puis, on enregistre la clef privée dans un fichier en cliquant sur « Save Public Key ». De la même
façon que pour la clef publique, on nomme le fichier avec l’extension .ppk

#@
Figure 54: Enregistrement de la clef privée

§ Envoi de la clef publique au serveur

Comme sous Linux, il faut envoyer la clé publique au serveur pour qu'il nous autorise à nous
connecter par clé.

Il n’existe pas de commande pour le faire automatiquement depuis Windows. Il va falloir ajouter
la clé à la main dans le fichier authorized_keys.

Ouvrez PuTTY et se connecter au serveur comme auparavant (en entrant votre mot de passe
habituel).

Evidement au niveau du serveur il faut remettre le paramètre « PasswordAuthentication yes »

#A
Figure 55: Modification du paramètre PasswordAuthentication

Effectuez la copie avec la commande echo « ssh-rsa … » >> .ssh/authorized_keys dans l’image ci-
dessous qui nous permet de rajouter la clef publique à la fin du fichier

Figure 56: Envoi de la clef publique au serveur

3B
§ Configuration de PuTTY

Sélectionnez la clef privée en se rendant sur Connexion à SSHà Auth , puis cliquez sur le bouton
Browse.

Figure 57: Sélection de la clef privée

Autre recommandation : Se rendre dans Connection à Data et mettre le login de d’utilisateur dans
« Auto-login username »

3!
Figure 58: Choix du login par défaut

Enregistrez les paramètres de connexion sur la partie « Session ». A l’avenir, il faut double-cliquer
sur le nom de votre serveur dans la liste pour s’y connecter directement avec les bons paramètres.

3#
Figure 59: Enregistrement des paramètres dans PuTTY

Cliquez sur Open pour vous connecter au serveur

Vous devriez voir PuTTY utiliser automatiquement votre pseudo, puis vous demander votre
passphrase. Entrez-la pour vérifier que cela fonctionne, comme sur la figure suivante.

33
Figure 60: Connexion au serveur avec la passphrase

f. L’agent SSH Pageant

L'agent SSH installé avec PuTTY s'appelle « Pageant ». Il est recommandé de le lancer au
démarrage de l'ordinateur automatiquement (il ne prend que 4 Mo en mémoire), en le plaçant dans
le dossier Démarrage du menu « Démarrer ».

Figure 61: Ouverture de l’emplacement du fichier

34
Le lien ci-dessous montre comment un logiciel se lancera automatiquement à chaque démarrage
de Windows

https://www.commentcamarche.net/informatique/windows/45-lancer-automatiquement-des-
logiciels-au-demarrage-de-windows-10/

Figure 62: Exécutable d’un programme en démarrage automatique

Lorsque vous lancez « Pageant », la petite icône d'un ordinateur avec un chapeau s'ajoute dans la
barre des tâches, comme sur la figure suivante.

Figure 63: Affichage de l’agent ssh Pageant

Faites un clic droit dessus, puis cliquez sur « Add key ». On vous demande où se trouve la clé
privée (cle.ppk). Entrez ensuite la passphrase.

3<
Figure 64: L’ajout de la clef privée

Figure 65: Mot de passe de la clef privée à renseigner

Si tout cela est fait, on peut se connecter au serveur en faisant un clic droit sur l’icône, puis en
sélectionnant « Saved Sessions » (figure suivante)

Figure 66: Menu de Pageant

3=
Figure 67: Connexion en ssh directe sans passphrase à ajouter

NB : L'agent SSH « Pageant » est pratique, il vaut mieux l'arrêter si vous devez vous absenter de
votre ordinateur un long moment et que quelqu'un risque de l'utiliser. Sinon, n'importe qui peut se
connecter à vos serveurs sans avoir à entrer de mot de passe.
Retenez bien : l'agent SSH est un compromis entre la sécurité et le côté pratique. Il retient les clés
pour vous (du moins tant que le programme tourne). Si vous êtes des utilisateurs intensifs de SSH,
cela vous fera gagner beaucoup de temps.

3?

Vous aimerez peut-être aussi