1. Réflexion — La surface d’attaque
La « surface d’attaque » d’une machine, c’est l’ensemble des points par lesquels un attaquant peut tenter d’entrer : services réseau ouverts, comptes, versions logicielles exposées.
Q1. Un serveur a 7 services en écoute sur le réseau, dont un seul est réellement utilisé. Que proposez-vous ? Formulez une règle générale.
Q2. Pourquoi une version de service affichée publiquement (une bannière) est-elle un risque ?
2. Pratique — Inventaire des services exposés
- Listez les ports en écoute avec
ss:
sudo ss -tulnp
La colonne State vaut LISTEN pour les services en attente de connexion ; notez l’adresse (0.0.0.0 = toutes interfaces, 127.0.0.1 = local uniquement).
Q3. Relevez les services en écoute sur 0.0.0.0. Lesquels sont exposés à tout le réseau ? Y en a-t-il dont vous ne connaissez pas le rôle ?
- Si un service inutile tourne (par exemple un serveur web de test), désactivez-le proprement :
systemctl list-units --type=service --state=running
sudo systemctl disable --now <nom-du-service>
3. Pratique — Durcissement SSH
SSH est la porte d’entrée principale d’un serveur Linux. On va la renforcer dans /etc/ssh/sshd_config (ou un fichier dans /etc/ssh/sshd_config.d/).
- Appliquez ces réglages de base :
# /etc/ssh/sshd_config.d/99-durcissement.conf
PermitRootLogin no # pas de connexion directe en root
MaxAuthTries 3 # 3 essais puis coupure
LoginGraceTime 20 # 20 s pour s'authentifier
# (étape suivante : passage par clé)
- Vérifiez la syntaxe puis rechargez :
sudo sshd -t && sudo systemctl reload ssh
Q4. Pourquoi interdire la connexion directe en root est-il un gain de sécurité ?
Authentification par clé (bonus)
- Depuis votre poste, générez une paire de clés et déposez la clé publique :
ssh-keygen -t ed25519 -C "tp-durcissement"
ssh-copy-id <user>@<ip-vm>
# puis dans la config SSH : PasswordAuthentication no
Q5. En quoi une clé ed25519 est-elle plus sûre qu’un mot de passe pour SSH ?
4. Pratique — Pare-feu local (UFW)
- Mettez en place une politique « tout fermé sauf SSH » avec
ufw:
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit 22/tcp # autorise SSH + limite le débit de connexions
sudo ufw enable
sudo ufw status verbose
Q6. Quelle est la différence entre ufw allow 22/tcp et ufw limit 22/tcp ? Laquelle protège mieux contre la force brute ?
5. Pratique — Fail2ban contre la force brute
Fail2ban lit les journaux et bannit automatiquement les adresses IP qui multiplient les échecs de connexion.
- Installez et créez une prison SSH :
sudo apt install -y fail2ban
sudoedit /etc/fail2ban/jail.d/ssh.local
[sshd]
enabled = true
maxretry = 4 # 4 échecs
findtime = 10m # dans une fenêtre de 10 min
bantime = 30m # bannissement 30 min
- Rechargez, puis simulez des échecs depuis le poste (mauvais mot de passe) et observez :
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Q7. Après plusieurs échecs, votre IP apparaît-elle dans « Banned IP list » ? Quel est le compromis à régler entre un bantime court et un bantime long ?
6. Synthèse
🧠 Testez vos connaissances
5 questions. Répondez puis cliquez sur « Corriger ». Rien n’est enregistré : c’est de l’auto-évaluation.
© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.