DoS et DDoS
Déni de service (DoS) et DDoS : Comprendre et se protéger
Notions théoriques
Un déni de service (DoS) est une attaque informatique qui vise à rendre un service indisponible en le surchargeant de requêtes.
L'attaque par déni de service a pour objectif est d'empêcher les utilisateurs légitimes d'accéder à un site Web, une application ou un serveur.
Comment fonctionne une attaque DoS ?
Une attaque DoS consiste à envoyer une grande quantité de requêtes vers une cible (serveur, site web, API) pour saturer ses ressources (processeur, mémoire, bande passante).
Résultat : le service devient lent ou totalement inaccessible.
Différence entre DoS et DDoS
-
DoS (Denial of Service) : Une seule machine attaque une cible.
-
DDoS (Distributed Denial of Service) : Plusieurs machines attaquent une cible simultanément.
Les machines, qui attaquent une cible simultanément, sont souvent des ordinateurs infectés (botnets) contrôlés à distance par un attaquant.
Types d'attaques DoS/DDoS
- Saturation de la bande passante : Envoi massif de données pour épuiser la connexion réseau.
- Saturation des ressources serveur : Envoi de requêtes complexes pour surcharger le CPU et la mémoire.
- Exploitation de vulnérabilités : Utilisation de failles pour provoquer un crash du service.
Conséquences d'une attaque DoS/DDoS
- Indisponibilité du service : Impossible d’accéder au site ou à l’application.
- Pertes financières : Une entreprise peut perdre des clients et de l’argent.
- Atteinte à la réputation : Un site souvent indisponible perd la confiance de ses utilisateurs.
Comment se protéger ?
- Limiter le nombre de requêtes par utilisateur avec un pare-feu ou un proxy.
- Utiliser un réseau de distribution de contenu (CDN) pour absorber le trafic.
- Détecter les comportements suspects avec un système de détection d’intrusion (IDS).
- Bloquer les adresses IP suspectes avec un pare-feu.
- Utiliser des services anti-DDoS comme Cloudflare, Akamai ou AWS Shield.
Exemple pratique
Cas concret : Une attaque DDoS sur un site web
Un site e-commerce est victime d’une attaque DDoS orchestrée par un groupe de hackers.
Déroulement de l’attaque :
- Les hackers infectent des milliers d’ordinateurs avec un malware, créant ainsi un botnet.
- À un moment précis, ils ordonnent à ces machines d’envoyer des millions de requêtes vers le site e-commerce.
- Le serveur du site, incapable de gérer autant de connexions, devient extrêmement lent puis cesse de répondre.
- Pendant plusieurs heures, les clients ne peuvent plus accéder au site, entraînant une perte de ventes importante.
Mesures de protection mises en place :
- L’entreprise utilise un CDN pour filtrer le trafic et absorber la surcharge.
- Un pare-feu est configuré pour bloquer les adresses IP suspectes.
- Un système de détection d’intrusion analyse le trafic et bloque automatiquement les requêtes anormales.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Serveur sous Debian - Attaquant sous Windows
Nous allons utiliser 2 machines :
-
Serveur Web (Debian)
- Héberge un serveur Web sur Debian.
- Subira l’attaque DoS.
-
Attaquant (Windows)
- Enverra un grand nombre de requêtes pour surcharger le serveur.
Mise en place du serveur
Nous pouvons utiliser un serveur Web déjà disponible pour des tests, sinon voici comment lancer un serveur Web avec Python.
- Se connecter à la machine Debian et mettre à jour les paquets :
sudo apt update && sudo apt upgrade -y
- Installer Python (si ce n’est pas déjà fait) :
sudo apt install python3 -y
- Lancer un serveur Web sur le port 8080 :
python3 -m http.server 8080
- Vérifier que le serveur fonctionne :
- Ouvrir un navigateur sur Windows et accéder à :
http://<IP_DU_SERVEUR>:8080 - Remplacer
<IP_DU_SERVEUR>par l’adresse IP de la machine Debian (ip apour la trouver). - Si tout fonctionne, nous allons voir une liste des fichiers du répertoire courant.
- Ouvrir un navigateur sur Windows et accéder à :
Simulation d’une attaque DoS
Récupérer l’IP du serveur Debian
Sur la machine Debian, exécuter :
ip a
Noter l’adresse IP de l’interface réseau (ex. 192.168.1.100).