Aller au contenu principal

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


Quel est le rôle principal d'un IDS ?


Quelle est la différence principale entre un IDS et un IPS ?


Quel type d'IDS analyse le trafic réseau en temps réel ?


Quelle méthode de détection compare le trafic avec une base d’attaques connues ?


Quel est un inconvénient des IDS ?


Quelle commande permet de vérifier les logs d'alertes de Suricata ?


Quelle option permet d'activer le mode IPS dans Suricata ?


Quel type d'IDS surveille spécifiquement un seul ordinateur ?


Quelle commande permet d’installer Suricata sur Debian/Ubuntu ?


Pourquoi un IPS mal configuré peut poser problème ?


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 :

  1. Configurer Suricata pour bloquer uniquement certaines attaques spécifiques.
  2. Tester la configuration avec des scénarios réels.
  3. 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

  1. Mettre à jour les paquets et installer Suricata :

    sudo apt update && sudo apt install suricata -y
  2. Vérifier que Suricata est bien installé et afficher sa version :

    suricata --version
  3. Vérifier que le service Suricata est actif :

    sudo systemctl status suricata
Une solution

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

  1. Ouvrir le fichier de configuration de Suricata :

    sudo nano /etc/suricata/suricata.yaml
  2. Modifier la section af-packet pour activer le mode IPS :

    af-packet:
    - interface: eth0
    copy-mode: ips
    action: drop
  3. Enregistrer et fermer le fichier.

  4. Activer une règle spécifique pour détecter et bloquer un scan de ports :

    sudo nano /etc/suricata/rules/custom.rules
  5. 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;)
  6. Modifier le fichier de configuration pour inclure cette règle :

    sudo nano /etc/suricata/suricata.yaml
  7. Ajouter la ligne suivante sous la section rule-files :

    - custom.rules
  8. Redémarrer Suricata pour appliquer les modifications :

    sudo systemctl restart suricata
Une solution

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

  1. Depuis une autre machine du réseau, exécuter un scan de ports avec nmap :

    nmap -sS -p 1-1000 <IP_DU_SERVEUR>
  2. 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

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

  1. Ouvrir le fichier de logs détaillés :

    sudo less /var/log/suricata/eve.json
  2. Rechercher les entrées liées au scan de ports :

    sudo cat /var/log/suricata/eve.json | grep "Scan de ports détecté"
  3. Modifier la règle pour qu'elle bloque plus rapidement les scans agressifs :

    sudo nano /etc/suricata/rules/custom.rules
  4. 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;)
  5. Redémarrer Suricata après modification :

    sudo systemctl restart suricata
Une solution

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