Sommaire
🐧 Module L9 – SSH (Sécurisation des accès distants)
Objectifs : maîtriser la configuration et la sécurisation du serveur SSH, utiliser les clés SSH, appliquer les bonnes pratiques.
📖 Introduction
SSH (Secure Shell) est le protocole standard pour l'administration distante sécurisée des serveurs Linux. Il remplace les protocoles non sécurisés comme Telnet et rlogin. Ce module vous apprend à configurer, durcir et utiliser SSH en environnement professionnel.
À l'issue de ce module, vous serez capable de :
- Installer et configurer le serveur SSH (sshd).
- Générer et utiliser des clés SSH (publique/privée).
- Sécuriser SSH (désactiver root login, changer de port, etc.).
- Utiliser des alias et des fichiers de configuration avancés.
⚙️ Installation
- Vérifier si SSH est installé :
dpkg -l | grep openssh-server - Installer le serveur SSH :
apt install openssh-server - Vérifier le service :
systemctl status ssh - Démarrer au boot :
systemctl enable ssh
🔧 Configuration de SSH (/etc/ssh/sshd_config)
3.1 – Directives essentielles
| Directive | Valeur recommandée | Description |
|---|---|---|
Port | 2222 (ou autre) | Changer le port par défaut (22) pour réduire les attaques. |
PermitRootLogin | no | Interdire la connexion directe en root. |
PasswordAuthentication | no | Forcer l'authentification par clé (plus sécurisée). |
PubkeyAuthentication | yes | Activer l'authentification par clé publique. |
AllowUsers | user1 user2 | Limiter les utilisateurs autorisés. |
MaxAuthTries | 3 | Limiter les tentatives d'authentification. |
ClientAliveInterval | 300 | Timeout pour les sessions inactives. |
🔑 Authentification par clé SSH
4.1 – Générer une paire de clés
Générer une clé RSA de 4096 bits :
ssh-keygen -t rsa -b 4096 -C "mon@email.com"
-t rsa: type de clé (RSA).-b 4096: taille de la clé (recommandé).-C "mon@email.com": commentaire (identifiant).- Les clés sont sauvegardées dans
~/.ssh/id_rsa(privée) et~/.ssh/id_rsa.pub(publique).
4.2 – Copier la clé publique sur le serveur
Copier la clé publique sur le serveur :
ssh-copy-id user@serveur
ssh-copy-id: copie automatiquement la clé publique dans~/.ssh/authorized_keys.- Alternative manuelle :
cat ~/.ssh/id_rsa.pub | ssh user@serveur "cat >> ~/.ssh/authorized_keys"
📋 Bonnes pratiques de sécurisation SSH
- Changer le port : utiliser un port non standard (ex: 2222).
- Désactiver l'authentification par mot de passe :
PasswordAuthentication no. - Interdire le login root :
PermitRootLogin no. - Utiliser des clés Ed25519 : plus rapides et sécurisées que RSA (
ssh-keygen -t ed25519). - Protéger la clé privée : avec une phrase de passe (passphrase).
- Utiliser
ssh-agent: pour éviter de retaper la passphrase à chaque connexion. - Limiter les utilisateurs :
AllowUsers user1 user2. - Activer le logging :
LogLevel VERBOSEpour traquer les tentatives.
🛠️ Mise en pratique
6.1 – Configurer un serveur SSH sécurisé
Exemple de configuration sécurisée :
# /etc/ssh/sshd_config Port 2222 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AllowUsers alice bob MaxAuthTries 3 ClientAliveInterval 300 LogLevel VERBOSE
- Port 2222 : réduit les scans automatisés.
- PermitRootLogin no : empêche les attaques brute-force sur root.
- PasswordAuthentication no : force l'utilisation des clés.
- AllowUsers : liste blanche des utilisateurs autorisés.
- MaxAuthTries 3 : limite les tentatives.
6.2 – Utiliser ssh-agent
Ajouter une clé à ssh-agent :
eval $(ssh-agent) ssh-add ~/.ssh/id_rsa
ssh-agent: gestionnaire de clés (évite de retaper la passphrase).ssh-add: ajoute la clé privée à l'agent.
📝 Exercices d'application
Exercice 1 – Configuration
Quelle directive dans sshd_config permet de désactiver l'authentification par mot de passe ?
PasswordAuthentication no
Exercice 2 – Clés SSH
Quelle commande génère une paire de clés Ed25519 ?
ssh-keygen -t ed25519
🎯 Quiz d'auto‑évaluation
1. Le fichier de configuration du serveur SSH est :
2. Pour interdire le login root via SSH, on utilise :
3. La clé publique SSH est stockée dans :
4. La commande ssh-copy-id permet de :
5. Pour changer le port SSH par défaut, on modifie la directive :