IDS/IPS
Détection et prévention des intrusions
Un IDS (Intrusion Detection System) est un système qui surveille un réseau ou un système informatique pour détecter des activités suspectes ou malveillantes.
Un IPS (Intrusion Prevention System) est un IDS qui, en plus de détecter les menaces, peut les bloquer automatiquement avant qu'elles n'affectent le système.
Notions théoriques
Un IDS/IPS analyse le trafic réseau et les activités système pour identifier des comportements anormaux ou des signatures d'attaques connues.
Types de systèmes IDS/IPS
1.1 IDS**
Un IDS se contente de surveiller et d'alerter en cas de détection d'une menace, mais il ne bloque pas automatiquement les attaques.
Il existe deux types d'IDS :
- IDS basés sur l'hôte (HIDS) : Ils surveillent l'activité des fichiers, des journaux et des processus sur une machine spécifique.
- IDS basés sur le réseau (NIDS) : Ils analysent le trafic réseau en temps réel pour détecter des anomalies ou des signatures d'attaques.
1.2 IPS**
Un IPS fonctionne comme un IDS, mais il peut également bloquer automatiquement les menaces détectées.
Il peut être configuré pour :
- Rejeter les paquets malveillants.
- Bloquer une adresse IP suspecte.
- Mettre en quarantaine une machine compromise.
Méthodes de détection utilisées
- Détection par signature : Compare le trafic réseau avec une base de signatures d'attaques connues.
- Détection comportementale (anomalie) : Identifie des comportements inhabituels qui pourraient signaler une attaque.
- Détection heuristique : Analyse le comportement des paquets pour repérer des attaques nouvelles ou inconnues.
Avantages et limites
✅ Avantages :
- Alerte en temps réel sur les tentatives d'intrusion.
- Protection proactive contre les attaques connues.
- Surveillance continue du réseau et des systèmes.
❌ Limites :
- Peut générer des faux positifs (alertes erronées).
- Un IDS seul ne bloque pas les attaques.
- Un IPS mal configuré peut bloquer du trafic légitime.
Exemple pratique
Configuration d'un IDS/IPS avec Suricata
Il est possible d’installer et de configurer Suricata, un IDS/IPS open-source, * pour surveiller et protéger un réseau contre les menaces.
1) Installation de Suricata
Sur un système Linux (Debian/Ubuntu), installer Suricata :
sudo apt update && sudo apt install suricata -y
Vérifier la version installée :
suricata --version
2) Configuration de Suricata en mode IDS
Lancer Suricata en mode surveillance (IDS) :
sudo suricata -c /etc/suricata/suricata.yaml -i eth0
Vérifier les alertes générées :
sudo tail -f /var/log/suricata/fast.log
3) Activation du mode IPS
Configurer Suricata pour bloquer les menaces en modifiant le fichier /etc/suricata/suricata.yaml :
af-packet:
- interface: eth0
copy-mode: ips
action: drop
Redémarrer Suricata pour appliquer les changements :
sudo systemctl restart suricata
4) Test de détection et de blocage
Générer un test d’intrusion avec un faux trafic malveillant :
curl http://testmyids.com
Vérifier si l'alerte est enregistrée dans les logs :
sudo tail -f /var/log/suricata/fast.log
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
L'objectif de ce TP est de configurer Suricata en mode IPS sur un serveur Linux, mais avec une approche différente de l'exemple pratique.
Au lieu de simplement bloquer tout trafic malveillant, il s'agit ici de :
- Configurer Suricata pour bloquer uniquement certaines attaques spécifiques.
- Tester la configuration avec des scénarios réels.
- Analyser les logs pour comprendre comment Suricata réagit aux menaces.
1) Installation et vérification de suricata
Avant de configurer Suricata, il faut s'assurer qu'il est bien installé et fonctionnel sur la machine.
Action à réaliser
-
Mettre à jour les paquets et installer Suricata :
sudo apt update && sudo apt install suricata -y
-
Vérifier que Suricata est bien installé et afficher sa version :
suricata --version
-
Vérifier que le service Suricata est actif :
sudo systemctl status suricata
Une solution
Vous devez être connecté pour voir le contenu.
2) Configuration de suricata pour bloquer uniquement certaines attaques
Plutôt que de bloquer tout trafic suspect, il faut configurer Suricata pour bloquer uniquement certaines attaques spécifiques, comme les scans de ports.
Action à réaliser
-
Ouvrir le fichier de configuration de Suricata :
sudo nano /etc/suricata/suricata.yaml
-
Modifier la section
af-packet
pour activer le mode IPS :af-packet:
- interface: eth0
copy-mode: ips
action: drop -
Enregistrer et fermer le fichier.
-
Activer une règle spécifique pour détecter et bloquer un scan de ports :
sudo nano /etc/suricata/rules/custom.rules
-
Ajouter la règle suivante pour bloquer un scan de ports SYN :
alert tcp any any -> any any (msg:"Scan de ports détecté"; flags:S; threshold: type both, track by_src, count 10, seconds 60; sid:1000001; rev:1;)
-
Modifier le fichier de configuration pour inclure cette règle :
sudo nano /etc/suricata/suricata.yaml
-
Ajouter la ligne suivante sous la section
rule-files
:- custom.rules
-
Redémarrer Suricata pour appliquer les modifications :
sudo systemctl restart suricata
Une solution
Vous devez être connecté pour voir le contenu.
3) Test du blocage d'un scan de ports
Une fois la configuration appliquée, il faut tester si Suricata détecte et bloque correctement un scan de ports.
Action à réaliser
-
Depuis une autre machine du réseau, exécuter un scan de ports avec nmap :
nmap -sS -p 1-1000 <IP_DU_SERVEUR>
-
Vérifier si Suricata a détecté et bloqué l'attaque en consultant les logs :
sudo tail -f /var/log/suricata/fast.log
Une solution
Vous devez être connecté pour voir le contenu.
4) Analyse des logs et amélioration de la configuration
Les logs de Suricata permettent d'affiner les règles et de mieux comprendre les menaces détectées.
Action à réaliser
-
Ouvrir le fichier de logs détaillés :
sudo less /var/log/suricata/eve.json
-
Rechercher les entrées liées au scan de ports :
sudo cat /var/log/suricata/eve.json | grep "Scan de ports détecté"
-
Modifier la règle pour qu'elle bloque plus rapidement les scans agressifs :
sudo nano /etc/suricata/rules/custom.rules
-
Modifier la ligne existante pour :
alert tcp any any -> any any (msg:"Scan de ports détecté"; flags:S; threshold: type both, track by_src, count 5, seconds 30; sid:1000001; rev:2;)
-
Redémarrer Suricata après modification :
sudo systemctl restart suricata
Une solution
Vous devez être connecté pour voir le contenu.
Conclusion
Ce TP a permis de configurer Suricata en mode IPS pour bloquer uniquement certaines attaques ciblées, comme les scans de ports.
Il a également montré comment tester et ajuster les règles en fonction des résultats observés dans les logs.
Bonus :
- Comment Suricata peut-il être configuré pour bloquer d'autres types d'attaques, comme les tentatives de connexion SSH bruteforce ?
- Quels sont les risques d'un IPS trop strict sur un serveur en production ?
Une solution
Vous devez être connecté pour voir le contenu.