Aller au contenu

Détection d’intrusion (IDS) avec Suricata sur Raspberry Pi - Framboise 314, le Raspberry Pi à la sauce française....


Ldfa

Messages recommandés

Cet article détaille l’installation et configuration de l’IDS Suricata sur un Raspberry Pi pour surveiller votre réseau local. Afin de surveiller l’ensemble des équipements de votre réseau local, nous utiliserons la fonctionnalité “port mirroring” d’un switch manageable ainsi qu’un petit routeur Wifi connecté à ce switch.

Au sommaire :

Présentation

Suricata est un IDS (Intrusion Detection System) réseau basé sur des détections par signatures. Il analyse le trafic réseau afin d’y détecter des activités anormales et les tentatives d’intrusion.

Un Raspberry Pi est un hôte parfait pour Suricata dans le cadre d’un petit réseau local.

Afin de surveiller tous les équipements de votre réseau, l’IDS doit être en mesure d’en analyser tout le trafic. Ceci est possible grâce à l’utilisation d’un switch manageable supportant la fonction « port mirroring » permettant de dupliquer le trafic de tous les équipements et de l’envoyer vers l’IDS.

Afin de pouvoir également surveiller le trafic des équipements sans fil, il est nécessaire d’utiliser un petit routeur Wifi. Ce routeur doit être relié à un port du switch afin que le trafic Wifi soit également dupliqué vers l’IDS par la fonction « port mirroring ».

Matériel nécessaire

  • Raspberry Pi 3B ou Pi 4 – Modèle B
  • Switch manageable avec port mirroring Zyxel GS1200
  • Routeur Wifi TP-LINK TL-WR902AC

Architecture

L’IDS doit être capable d’analyser les trames provenant de tous les équipements de votre réseau.

Pour cela il faut que tous vos équipements soient reliés au switch qui utilise la fonction port mirroring pour transmettre toutes les trames reçues des « mirrored port » vers le « analysis port ». Le Raspberry Pi sur lequel l’IDS Suricata est installé est bien entendu relié sur cet « analysis port ».

Si vous souhaitez également surveiller vos équipement connectés via le réseau Wifi, il ne faudra pas les connecter au réseau Wifi de la box internet mais utiliser un petit routeur Wifi également connecté au switch sur un « mirrored port ».

Mon réseau local est le 192.168.1.0/24 et tous mes équipements y compris ceux qui sont connectés via le point d’accès Wifi appartiennent à ce réseau local.

suricata_13.png

Installation de Suricata sur votre Raspberry Pi

Installez Raspberry Pi OS ou Raspberry Pi OS Lite sur votre Raspberry Pi (Modèle 3B ou 4) disponible sur le site https://www.raspberrypi.org/software/

Installer l’IDS open source Suricata

Préparer l’installation en installant les dépendances nécessaires :

Télécharger les sources de Suricata :

Décompresser les sources :

Se placer dans le dossier Suricata :

Configurer l’installation du logiciel :

Compiler suricata :

Installer suricata :

Se placer dans le dossier suricata-update :

Compiler suricata-update :

Installer suricata-update :

Se placer dans le dossier Suricata :

Finaliser l’installation de suricata en y incluant ses règles :

Mettre à jour les règles de suricata :

Configurer Suricata

Configurer suricata en éditant le fichier suricata.yaml :

Modifier la variable HOME_NET afin qu’elle contienne votre réseau local, par exemple :

Lancer Suricata

Lancer suricata avec la commande suivante :

-c <chemin> : fichier de configuration à utiliser

-i <interface> : interface Ethernet à surveiller

-S <chemin> : fichier contenant les règles à utiliser

Tester Suricata

Afin de tester le bon fonctionnement de suricata, il est utile de rajouter une règle qui affiche un avertissement à chaque réception d’un ICMP Echo (ping). Il faudra supprimer cette règle après ce test.

Ajouter la règle suivante dans /var/lib/suricata/rules/suricata.rules

Afficher le contenu du fichier de log :

Vous devriez voir dans le fichier de log l’alerte suivante :

Voici d’autres façons de tester le bon fonctionnement de Suricata :

  • Aller sur ce site avec un navigateur depuis un équipement de votre réseau local :

http://testmyids.com/

Doit produire l’alerte suivante :

  • Lancer la commande suivante depuis un shell Linux :

Doit produire l’alerte suivante :

Utiliser Suricata en mode service

Afin de pouvoir utiliser Suricata en tant que service, il faut créer le fichier « /etc/systemd/system/suricata.service » :

Avec le contenu suivant :

Et ensuite activer ce nouveau service avec la commande :

Nous pouvons maintenant utiliser Suricata en tant que service, et le démarrer avec la commande :

Pour le stopper :

Pour le relancer :

Pour vérifier l’état du service :

Le service se lancera maintenant automatiquement au démarrage du Raspberry Pi.

Éviter la perte de paquets

Suricata peut nécessiter quelques optimisations afin de fonctionner de façon optimale sur votre réseau. Cela dépend bien entendu du nombre d’équipements à surveiller et du trafic
généré.
Vérifier que la variable capture.kernel_drops dans le fichier /var/log/suricata/stats.log ne soit pas trop élevée. Idéalement elle doit rester à 0 et donc ne pas être affichée dans la liste des compteurs.

suricata_10.png

Dans le cas ci-dessus, 21617 paquets sur 2310188 ont été perdus, soit environ 1 %. C’est
acceptable mais cette perte peut être évitée.

Vous pouvez par exemple augmenter la valeur de la variable “ring-size” dans le fichier de configuration “/etc/suricata/suricata.yaml“. Attention, il faut bien entendu supprimer le “#” devant la variable dans le fichier suricata.yaml. Cette modification est en général suffisante pour éviter de perdre des paquets.

Modifier la valeur de ring-size en changeant la ligne suivante dans le fichier /etc/suricata/suricata.yaml :

par :

Après avoir augmenté cette variable à 30000, je n’observe plus de perte de paquets, même avec 7.8 millions de paquets reçus.

suricata_11.png

Je vous invite à lire la documentation de Suricata pour régler finement les paramètres de configuration ayant  un impact sur lesperformances du logiciel

Exploiter les fichiers de logs de Suricata

Suricata génère des fichiers de log dans le répertoire /var/log/suricata. En plus du trafic réseau et des activités suspectes qu’il détecte, Suricata logue également des informations de service et des statistiques sur le trafic réseau. Sur un Raspberry Pi il faudra prêter attention à la taille des logs générés qui peuvent rapidement saturer la carte SD utilisée pour leur stockage. Il faudra mettre en place un mécanisme de rotation de log afin d’éviter tout problème.

Les différents fichiers de logs

Voici les 4 fichiers de log générés par Suricata :

  • suricata.log : messages de démarrage de Suricata
  • stats.log : statistiques sur votre trafic réseau
  • fast.log : activités suspectes découvertes par Suricata
  • eve.json : trafic de votre réseau local ainsi que les activités suspectes au format JSON

Fichier de log des activités suspectes

Pour visualiser en direct les activités suspectes détectées par Suricata, il suffit de jeter un œil au fichier fast.log :

Voici un exemple d’activités suspectes détectées par Suricata enregistrées dans le fichier fast.log :

Rotation des fichiers de logs

La taille du fichier de log eve.json peut devenir rapidement très importante et occuper tout l’espace de la carte SD. L’utilisation du mécanisme logrotate intégré à Linux est très utile pour éviter ceci. Nous allons le configurer pour qu’il journalise les log de Suricata pendant 10 jours tout en limitant la taille de chaque fichier à 1 GB. Ainsi les logs ne pourront pas occuper plus de 10 GB sur la carte SD tout en ayant un historique sur les 10 derniers jours. Les historiques plus anciens sont automatiquement supprimés.
Créer un fichier « /etc/logrotate.d/suricata » ayant le contenu suivant :

Afin de vérifier que la rotation est correctement configurée et qu’elle fonctionne, vous pouver la forcer manuellement avec la commande :

Vous devriez alors bien voir les logs journalisés dans le répertoire /var/log/suricata/

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.