Aller au contenu

Mise en œuvre de Suricata - Configuration et déploiement

1. Objectif du cours

Installer et configurer Suricata dans un environnement réseau, implémenter des règles de détection adaptées et assurer la supervision pour maintenir l'efficacité opérationnelle. Le tout dans une perspective pratique (IDS/IPS, extraction de fichiers, analyse TLS).

2. Notions et définitions essentielles

  • Suricata : IDS/IPS multithreadé avec moteur d'analyse protocolaire L7 et compatibilité native des règles Snort.
  • HOME_NET / EXTERNAL_NET : variables définissant les domaines de confiance pour la détection.
  • NFQueue : mécanisme du noyau Linux qui redirige des paquets vers un espace utilisateur (Suricata) pour acceptation/rejet.
  • EVE JSON : format structuré de sortie d'alertes de Suricata, adapté à l'ingestion SIEM/ELK.
  • Extraction de fichiers : reconstitution en temps réel de fichiers transitant sur des protocoles applicatifs (HTTP, SMTP, FTP, SMB…).
  • Lua dans Suricata : scripting pour détections spécialisées, attention perf. et sécurité.

3. Fonctionnement et principes

  • Architecture multithread : chaque thread peut traiter des flux distincts, améliorant le débit et réduisant la perte de paquets par rapport au modèle mono-thread.
  • Modes IDS vs IPS : IDS = observateur passif (copie du trafic), IPS = positionné dans le flux (bloque/autorise en temps réel) ; IPS implique un impact potentiel sur la disponibilité et requiert une conception réseau adaptée.
  • Inspection TLS par métadonnées : Suricata analyse handshakes, suites, certificats et patterns temporels sans déchiffrer le contenu pour identifier anomalies et usages suspects.
  • Gestion des règles : compatibilité Snort pour migration progressive ; Suricata-Update pour automatiser l'agrégation/transformations et le déploiement des sources de règles.
  • Extraction et chaîne d'analyse : fichiers extraits peuvent être soumis automatiquement à sandboxes/antivirus pour enrichir le SOC.

4. Commandes et manipulations

Regrouper par procédure — extraits et exemples tirés du document :

  • Déploiement IPS (iptables → NFQueue)
  • iptables -I FORWARD -d 192.168.100.10 -p tcp --dport 80 -j NFQUEUE --queue-num 0
  • iptables -I FORWARD -d 192.168.100.10 -p tcp --dport 443 -j NFQUEUE --queue-num 0
  • iptables -A FORWARD -d 192.168.100.10 -m mark --mark 1 -j ACCEPT (redirige HTTP/HTTPS vers Suricata via NFQUEUE et accepte le trafic marqué)

  • Configuration suricata.yaml (extraits essentiels NFQUEUE & threading)

  • nfq: mode: accept / repeat-mark: 1 / fail-open: yes
  • threading: set-cpu-affinity: yes / cpu-affinity: worker-cpu-set: cpu: [ 1, 2 ] (active NFQUEUE, marquage et affinité CPU pour performance; fail-open préserve la continuité)

  • Règles Suricata (exemples bloquants fournis)

  • Règle SQL injection (drop http ... content:"union"; content:"select"; distance:0; within:50; sid:1000001)
  • Règle XSS (drop http ... content:"<script"; content:"javascript:"; distance:0; within:100; sid:1000002)
  • Règle traversée de répertoires (drop http ... content:"../"; content:"etc/passwd"; distance:0; within:200; sid:1000003)

  • Tests rapides (simulation d'attaques)

  • curl -X POST "http://192.168.100.10/login.php" -d "user=admin' UNION SELECT * FROM users--"
  • curl "http://192.168.100.10/search.php?q="
  • curl "http://192.168.100.10/file.php?path=../../../etc/passwd"

5. Sécurité et bonnes pratiques

  • Ne déployer IPS qu'après analyse d'impact : exclure flows non critiques (sauvegardes, maintenance) pour éviter surcharge.
  • Fail-open pour applications critiques : garantit continuité si Suricata échoue (choix documenté pour app générant 40 % CA).
  • Gestion des logs : rotation automatique et compression des anciens logs pour éviter saturation disque.
  • Transmission sécurisée des événements : chiffrement TLS, authentification mutuelle et mécanismes de détection d'altération pour les flux vers le SIEM/collecteur (Filebeat/Logstash mentionnés).
  • Scripts Lua : tester systématiquement en labo ; surveiller l'impact sur les performances et vérifier la sécurité du code avant production.
  • Monitoring des métriques : limiter la granularité de collecte initiale pour que le monitoring lui‑même n’affecte pas Suricata.

6. Points essentiels à retenir pour le TSSR

  • Suricata = multithread + moteur protocolaire L7 + compatibilité règles Snort.
  • NFQueue + iptables sont la méthode recommandée pour positionner Suricata en IPS sous Linux.
  • suricata.yaml gère NFQUEUE, marquage (repeat-mark), fail-open et affinité CPU (optimisation performance).
  • EVE JSON est le format privilégié pour l’intégration SIEM/ELK.
  • Suricata-Update automatise l’agrégation, la transformation et la gestion des sources de règles.
  • Extraction de fichiers reconstitue des fichiers en temps réel pour analyses automatiques (sandbox/AV).
  • Analyse TLS se fait sur métadonnées (handshake, suites, certificats) pour préserver confidentialité.
  • Lua permet des détections avancées mais nécessite validation et prudence (perf. & sécurité).
  • Supervision continue (métriques internes) est indispensable pour éviter perte de paquets et faux négatifs.
  • Tests fonctionnels simples (curl) valident efficacité IPS sans déployer tests avancés.

7. Tableau récapitulatif

Élément Avantage principal Risque / contrainte Remarque
Multithread (Suricata) Meilleur débit, moins de paquets perdus Configuration CPU/mémoire nécessaire Affinité CPU recommandée
NFQueue (IPS) Bloque en temps réel Peut interrompre trafic si mal configuré Utiliser fail-open pour services critiques
EVE JSON Intégration SIEM facilitée Volume d’événements important prévoir rotation/stockage
Extraction de fichiers Analyse forensique & sandbox Forte consommation disque/mémoire filtrer types/taille à extraire
Suricata-Update Automatisation règles Risque de mauvaise règle si non validée profils différenciés (prod/test)

8. Vérifications pratiques

  • Vérifier que les règles iptables redirigent bien le trafic vers NFQUEUE (présence des règles FORWARD).
  • Confirmer dans les logs EVE JSON qu’un curl de test malveillant a généré une alerte et/ou un drop.
  • S’assurer que le serveur web reste accessible pour usages légitimes (tests fonctionnels) malgré IPS actif.
  • Contrôler métriques internes : paquets traités par thread, taux de perte et charge CPU par thread (indicator de bonne répartition).
  • Vérifier la présence et l’emplacement des fichiers extraits correspondant aux triggers configurés.
  • Valider la réception des événements dans le SIEM (mappage EVE JSON) et la corrélation attendue.

9. Flashcards Anki

Quelle architecture permet à Suricata de mieux exploiter les serveurs modernes ? :: L'architecture multithreadée native Quel mécanisme Linux redirige des paquets vers Suricata en espace utilisateur ? :: NFQueue Quel fichier remplace snort.conf pour la configuration de Suricata ? :: suricata.yaml Quel format de sortie facilite l'intégration avec un SIEM/ELK ? :: EVE JSON Quelle directive du suricata.yaml assure que le service reste disponible en cas de défaillance ? :: fail-open: yes Quelle variable définit le périmètre réseau de confiance dans Suricata ? :: HOME_NET Quel outil automatise la gestion et la mise à jour des sources de règles ? :: Suricata-Update Quelle fonctionnalité reconstitue et extrait les fichiers transitant sur le réseau ? :: Extraction de fichiers (file extraction) Quel langage de script intégré permet des détections personnalisées dans Suricata ? :: Lua Suricata analyse les communications chiffrées sans déchiffrer le contenu grâce à l'analyse de ? :: Les métadonnées TLS (handshakes, suites, certificats)