Comment installer Suricata sur le flux CentOS 8

De Get Docs
Aller à :navigation, rechercher

Introduction

Suricata est un outil de surveillance de la sécurité du réseau (NSM) qui utilise des ensembles de signatures créées par la communauté et définies par l'utilisateur (également appelées règles) pour examiner et traiter le trafic réseau. Suricata peut générer des événements de journal, déclencher des alertes et interrompre le trafic lorsqu'il détecte des paquets ou des demandes suspects vers un nombre quelconque de services différents exécutés sur un serveur.

Par défaut, Suricata fonctionne comme un système de détection d'intrusion (IDS) passif pour rechercher le trafic suspect sur un serveur ou un réseau. Il générera et enregistrera des alertes pour une enquête plus approfondie. Il peut également être configuré comme un système de prévention des intrusions (IPS) actif pour enregistrer, alerter et bloquer complètement le trafic réseau qui correspond à des règles spécifiques.

Vous pouvez déployer Suricata sur un hôte de passerelle dans un réseau pour analyser tout le trafic réseau entrant et sortant d'autres systèmes, ou vous pouvez l'exécuter localement sur des machines individuelles dans l'un ou l'autre mode.

Dans ce didacticiel, vous apprendrez à installer Suricata et à personnaliser certains de ses paramètres par défaut sur Centos 8 Stream en fonction de vos besoins. Vous apprendrez également à télécharger des ensembles de signatures existants (généralement appelés ensembles de règles) que Suricata utilise pour analyser le trafic réseau. Enfin, vous apprendrez à tester si Suricata fonctionne correctement lorsqu'il détecte des demandes et des données suspectes dans une réponse.

Conditions préalables

Selon la configuration de votre réseau et la façon dont vous comptez utiliser Suricata, vous aurez peut-être besoin de plus ou moins de CPU et de RAM pour votre serveur. En règle générale, plus vous prévoyez d'inspecter de trafic, plus vous devez allouer de ressources à Suricata. Dans un environnement de production, prévoyez d'utiliser au moins 2 processeurs et 4 ou 8 Go de RAM pour commencer. À partir de là, vous pouvez augmenter les ressources en fonction des performances de Suricata et de la quantité de trafic que vous devez traiter.

Si vous envisagez d'utiliser Suricata pour protéger le serveur sur lequel il s'exécute, vous aurez besoin de :

Sinon, si vous envisagez d'utiliser Suricata sur un hôte de passerelle pour surveiller et protéger plusieurs serveurs, vous devrez vous assurer que la mise en réseau de l'hôte est correctement configurée.

Si vous utilisez DigitalOcean, vous pouvez suivre ce guide sur Comment configurer une gouttelette en tant que passerelle VPC. Ces instructions devraient également fonctionner pour la plupart des serveurs CentOS, Fedora et autres serveurs dérivés de RedHat.


Étape 1 - Installation de Suricata

Pour commencer à installer Suricata, vous devrez ajouter les informations du référentiel de logiciels de l'Open Information Security Foundation (OISF) à votre système CentOS. Vous pouvez utiliser le dnf copr enable commande pour le faire. Vous devrez également ajouter le référentiel Extra Packages for Enterprise Linux (EPEL).

Pour activer les projets communautaires (copr) sous-commande pour le dnf outil de package, exécutez ce qui suit :

sudo dnf install 'dnf-command(copr)'

Vous serez invité à installer des dépendances supplémentaires, ainsi qu'à accepter la clé GPG pour la distribution CentOS Linux. Presse y et ENTER à chaque fois pour terminer l'installation du copr forfait.

Exécutez ensuite la commande suivante pour ajouter le référentiel OISF à votre système et mettre à jour la liste des packages disponibles :

sudo dnf copr enable @oisf/suricata-6.0

Presse y et ENTER lorsque vous êtes invité à confirmer que vous souhaitez ajouter le référentiel.

Ajoutez maintenant le epel-release package, qui mettra à disposition des packages de dépendances supplémentaires pour Suricata :

sudo dnf install epel-release

Lorsque vous êtes invité à importer la clé GPG, appuyez sur y et ENTER accepter.

Maintenant que les référentiels de logiciels requis sont activés, vous pouvez installer le suricata paquet utilisant le dnf commande:

sudo dnf install suricata

Lorsque vous êtes invité à ajouter la clé GPG pour le référentiel OISF, appuyez sur y et ENTER. Le package et ses dépendances vont maintenant être téléchargés et installés.

Ensuite, activez le suricata.service afin qu'il s'exécute au redémarrage de votre système. Utilisez le systemctl commande pour l'activer :

sudo systemctl enable suricata.service

Vous devriez recevoir une sortie comme celle-ci indiquant que le service est activé :

OutputCreated symlink /etc/systemd/system/multi-user.target.wants/suricata.service → /usr/lib/systemd/system/suricata.service.

Avant de passer à la section suivante de ce tutoriel, qui explique comment configurer Suricata, arrêtez le service en utilisant systemctl:

sudo systemctl stop suricata.service

L'arrêt de Suricata garantit que lorsque vous modifiez et testez le fichier de configuration, toutes les modifications que vous apportez seront validées et chargées au redémarrage de Suricata.

Étape 2 - Configuration de Suricata pour la première fois

Le package Suricata des référentiels OISF est livré avec un fichier de configuration qui couvre une grande variété de cas d'utilisation. Le mode par défaut pour Suricata est le mode IDS, donc aucun trafic ne sera abandonné, seulement enregistré. Laisser ce mode par défaut est une bonne idée lorsque vous apprenez Suricata. Une fois que vous avez configuré et intégré Suricata dans votre environnement, et que vous avez une bonne idée des types de trafic dont il vous alertera, vous pouvez choisir d'activer le mode IPS.

Cependant, la configuration par défaut comporte encore quelques paramètres que vous devrez peut-être modifier en fonction de votre environnement et de vos besoins.

(Facultatif) Activation de l'ID de flux communautaire

Suricata peut inclure un champ Community ID dans sa sortie JSON pour faciliter la mise en correspondance d'enregistrements d'événements individuels avec des enregistrements dans des ensembles de données générés par d'autres outils.

Si vous envisagez d'utiliser Suricata avec d'autres outils comme Zeek ou Elasticsearch, ajouter l'identifiant communautaire maintenant est une bonne idée.

Pour activer l'option, ouvrez /etc/suricata/suricata.yaml utilisant vi ou votre éditeur préféré :

sudo vi /etc/suricata/suricata.yaml

Trouvez la ligne 120 qui se lit # Community Flow ID. Si vous utilisez vi taper 120gg aller directement à la ligne. Au-dessous de cette ligne se trouve le community-id clé. Réglez-le sur true pour activer le paramètre :

/etc/suricata/suricata.yaml

. . .
      # Community Flow ID
      # Adds a 'community_id' field to EVE records. These are meant to give
      # records a predictable flow ID that can be used to match records to
      # output of other tools such as Zeek (Bro).
      #
      # Takes a 'seed' that needs to be same across sensors and tools
      # to make the id less predictable.

      # enable/disable the community id feature.
      community-id: true
. . .

Maintenant, lorsque vous examinez des événements, ils auront un ID comme 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ= que vous pouvez utiliser pour corréler les enregistrements entre différents outils NMS.

Enregistrez et fermez le /etc/suricata/suricata.yaml dossier. Si vous utilisez vi, vous pouvez le faire avec ESC et alors :x alors ENTER pour enregistrer et quitter le fichier.

Détermination de la ou des interfaces réseau à utiliser

Vous devrez peut-être remplacer l'interface ou les interfaces réseau par défaut sur lesquelles vous souhaitez que Suricata inspecte le trafic. Par défaut, le fichier de configuration fourni avec le package OISF Suricata inspecte le trafic sur un appareil appelé eth0. Si votre système utilise une interface réseau par défaut différente ou si vous souhaitez inspecter le trafic sur plusieurs interfaces, vous devrez modifier cette valeur.

Pour déterminer le nom de périphérique de votre interface réseau par défaut, vous pouvez utiliser le ip commande comme suit :

ip -p -j route show default

La -p flag formate la sortie pour qu'elle soit plus lisible, et le -j flag imprime la sortie au format JSON.

Vous devriez recevoir une sortie comme celle-ci :

Output[ {
        "dst": "default",
        "gateway": "203.0.113.254",
        "dev": "eth0",
        "protocol": "static",
        "metric": 100,
        "flags": [ ]
    } ]

La dev ligne indique le périphérique par défaut. Dans cet exemple de sortie, le périphérique est en surbrillance eth0 interface. Votre sortie peut afficher un nom de périphérique tel que ens... ou eno.... Quel que soit son nom, notez-le.

Vous pouvez maintenant modifier la configuration de Suricata et vérifier ou modifier le nom de l'interface. Ouvrez le /etc/suricata/suricata.yaml fichier de configuration à l'aide vi ou votre éditeur préféré :

sudo vi /etc/suricata/suricata.yaml

Faites défiler le fichier jusqu'à ce que vous arriviez à une ligne qui lit af-packet: autour de la ligne 580. Si vous utilisez vi vous pouvez également accéder directement à la ligne en saisissant 580gg. Sous cette ligne se trouve l'interface par défaut que Suricata utilisera pour inspecter le trafic. Modifiez la ligne pour qu'elle corresponde à votre interface, comme dans l'exemple en surbrillance suivant :

/etc/suriata/suricata.yaml

# Linux high speed capture support
af-packet:
  - interface: eth0
    # Number of receive threads. "auto" uses the number of cores
    #threads: auto
    # Default clusterid. AF_PACKET will load balance packets based on flow.
    cluster-id: 99
. . .

Si vous souhaitez inspecter le trafic sur des interfaces supplémentaires, vous pouvez en ajouter d'autres - interface: eth... Objets YAML. Par exemple, pour ajouter un périphérique nommé enp0s1, faites défiler vers le bas de la af-packet section vers la ligne 650 environ. Pour ajouter une nouvelle interface, insérez-la avant le - interface: default section comme l'exemple en surbrillance suivant :

/ec/suricata/suricata.yaml

    #  For eBPF and XDP setup including bypass, filter and load balancing, please
    #  see doc/userguide/capture-hardware/ebpf-xdp.rst for more info.

  - interface: enp0s1
    cluster-id: 98

  - interface: default
    #threads: auto
    #use-mmap: no
    #tpacket-v3: yes

Assurez-vous de choisir un cluster-id valeur pour chaque - interface objet.

Gardez votre éditeur ouvert et passez à la section suivante où vous configurerez le rechargement des règles en direct. Si vous ne souhaitez pas activer ce paramètre, vous pouvez enregistrer et fermer le /etc/suricata/suricata.yaml dossier. Si vous utilisez vi, vous pouvez le faire avec ESC, alors :x et ENTER pour sauvegarder et quitter.

Configuration du rechargement des règles en direct

Suricata prend en charge le rechargement des règles en direct, ce qui signifie que vous pouvez ajouter, supprimer et modifier des règles sans avoir à redémarrer le processus Suricata en cours d'exécution. Pour activer l'option de rechargement en direct, faites défiler jusqu'au bas du fichier de configuration et ajoutez les lignes suivantes :

/etc/suricata/suricata.yaml

. . .

detect-engine:
  - rule-reload: true

Avec ce paramètre en place, vous pourrez envoyer le SIGUSR2 signal système au processus en cours d'exécution, et Suricata rechargera toutes les règles modifiées en mémoire.

Une commande comme celle-ci indiquera au processus Suricata de recharger ses ensembles de règles, sans redémarrer le processus :

sudo kill -usr2 $(pidof suricata)

La $(pidof suricata) Une partie de la commande invoque un sous-shell et trouve l'ID de processus du démon Suricata en cours d'exécution. Le début sudo kill -usr2 une partie de la commande utilise le kill utilitaire pour envoyer le SIGUSR2 signal à l'ID de processus qui est renvoyé par le sous-shell.

Vous pouvez utiliser cette commande chaque fois que vous exécutez suricata-update ou lorsque vous ajoutez ou modifiez vos propres règles personnalisées.

Enregistrez et fermez le /etc/suricata/suricata.yaml dossier. Si vous utilisez vi, vous pouvez le faire avec ESC, alors :x et ENTER confirmer.

Étape 3 - Mise à jour des ensembles de règles Suricata

À ce stade du didacticiel, si vous deviez démarrer Suricata, vous recevriez un message d'avertissement comme celui-ci dans les journaux indiquant qu'il n'y a pas de règles chargées :

Output<Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/suricata.rules

Par défaut, le package Suricata inclut un ensemble limité de règles de détection (dans le /etc/suricata/rules répertoire), donc l'activation de Suricata à ce stade ne détecterait qu'une quantité limitée de mauvais trafic.

Suricata inclut un outil appelé suricata-update qui peut récupérer des ensembles de règles auprès de fournisseurs externes. Exécutez-le comme suit pour télécharger un ensemble de règles à jour pour votre serveur Suricata :

sudo suricata-update

Vous devriez recevoir une sortie comme celle-ci :

Output19/10/2021 -- 19:31:03 - <Info> -- Using data-directory /var/lib/suricata.
19/10/2021 -- 19:31:03 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml
19/10/2021 -- 19:31:03 - <Info> -- Using /usr/share/suricata/rules for Suricata provided rules.
. . .
19/10/2021 -- 19:31:03 - <Info> -- No sources configured, will use Emerging Threats Open
19/10/2021 -- 19:31:03 - <Info> -- Fetching https://rules.emergingthreats.net/open/suricata-6.0.3/emerging.rules.tar.gz.
 100% - 3062850/3062850               
. . .
19/10/2021 -- 19:31:06 - <Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 31011; enabled: 23649; added: 31011; removed 0; modified: 0
19/10/2021 -- 19:31:07 - <Info> -- Writing /var/lib/suricata/rules/classification.config
19/10/2021 -- 19:31:07 - <Info> -- Testing with suricata -T.
19/10/2021 -- 19:31:32 - <Info> -- Done.

Les lignes en surbrillance indiquent suricata-update a récupéré les règles gratuites Emerging Threats ET Open Rules et les a enregistrées sur Suricata /var/lib/suricata/rules/suricata.rules dossier. Il indique également le nombre de règles qui ont été traitées, dans cet exemple, 31011 ont été ajoutées et parmi celles-ci 23649 ont été activées.

Ajout de fournisseurs d'ensembles de règles

La suricata-update L'outil peut récupérer des règles auprès d'une variété de fournisseurs d'ensembles de règles gratuits et commerciaux. Certains ensembles de règles comme l'ensemble ET Open que vous avez déjà ajouté sont disponibles gratuitement, tandis que d'autres nécessitent un abonnement payant.

Vous pouvez répertorier l'ensemble de fournisseurs de règles par défaut à l'aide de la list-sources signaler à suricata-update comme ça:

sudo suricata-update list-sources

Vous recevrez une liste de sources comme celle-ci :

Output. . .
19/10/2021 -- 19:27:34 - <Info> -- Adding all sources
19/10/2021 -- 19:27:34 - <Info> -- Saved /var/lib/suricata/update/cache/index.yaml
Name: et/open
  Vendor: Proofpoint
  Summary: Emerging Threats Open Ruleset
  License: MIT
. . .

Par exemple, si vous vouliez inclure le tgreen/hunting ruleset, vous pouvez l'activer à l'aide de la commande suivante :

sudo suricata-update enable-source tgreen/hunting

Puis cours suricata-update à nouveau et le nouvel ensemble de règles sera ajouté, en plus des règles ET Open existantes et de toutes les autres que vous avez téléchargées.

Étape 4 - Validation de la configuration de Suricata

Maintenant que vous avez modifié le fichier de configuration de Suricata pour inclure l'ID de communauté facultatif, spécifier l'interface réseau par défaut et activé le rechargement des règles en direct, il est judicieux de tester la configuration.

Suricata a un mode de test intégré qui vérifiera la validité du fichier de configuration et de toutes les règles incluses. Validez vos modifications de la section précédente à l'aide de la -T drapeau pour exécuter Suricata en mode test. La -v flag imprimera des informations supplémentaires, et le -c flag indique à Suricata où trouver son fichier de configuration :

sudo suricata -T -c /etc/suricata/suricata.yaml -v

Le test peut prendre un certain temps en fonction de la quantité de CPU que vous avez allouée à Suricata et du nombre de règles que vous avez ajoutées, alors soyez prêt à attendre une minute ou deux pour qu'il se termine.

Avec l'ensemble de règles ET Open par défaut, vous devriez recevoir une sortie comme celle-ci :

Output21/10/2021 -- 15:00:40 - <Info> - Running suricata under test mode
21/10/2021 -- 15:00:40 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode
21/10/2021 -- 15:00:40 - <Info> - CPUs/cores online: 2
21/10/2021 -- 15:00:40 - <Info> - fast output device (regular) initialized: fast.log
21/10/2021 -- 15:00:40 - <Info> - eve-log output device (regular) initialized: eve.json
21/10/2021 -- 15:00:40 - <Info> - stats output device (regular) initialized: stats.log
21/10/2021 -- 15:00:46 - <Info> - 1 rule files processed. 23879 rules successfully loaded, 0 rules failed
21/10/2021 -- 15:00:46 - <Info> - Threshold config parsed: 0 rule(s) found
21/10/2021 -- 15:00:47 - <Info> - 23882 signatures processed. 1183 are IP-only rules, 4043 are inspecting packet payload, 18453 inspect application layer, 107 are decoder event only
21/10/2021 -- 15:01:13 - <Notice> - Configuration provided was successfully loaded. Exiting.
21/10/2021 -- 15:01:13 - <Info> - cleaning up signature grouping structure... complete

S'il y a une erreur dans votre fichier de configuration, le mode test générera un code d'erreur et un message spécifiques que vous pouvez utiliser pour vous aider à résoudre les problèmes. Par exemple, en incluant un fichier de règles qui n'existe pas appelé test.rules générerait une erreur comme celle-ci :

Output21/10/2021 -- 15:10:15 - <Info> - Running suricata under test mode
21/10/2021 -- 15:10:15 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode
21/10/2021 -- 15:10:15 - <Info> - CPUs/cores online: 2
21/10/2021 -- 15:10:15 - <Info> - eve-log output device (regular) initialized: eve.json
21/10/2021 -- 15:10:15 - <Info> - stats output device (regular) initialized: stats.log
21/10/2021 -- 15:10:21 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/test.rules

Avec cette erreur, vous pouvez alors modifier votre fichier de configuration pour inclure le chemin correct ou corriger les variables et les options de configuration non valides.

Une fois votre exécution en mode test Suricata terminée avec succès, vous pouvez passer à l'étape suivante, qui consiste à démarrer Suricata en mode démon.

Étape 5 - Exécution de Suricata

Maintenant que vous disposez d'une configuration et d'un ensemble de règles Suricata valides, vous pouvez démarrer le serveur Suricata. Exécutez ce qui suit systemctl commande:

sudo systemctl start suricata.service

Vous pouvez examiner l'état du service à l'aide de la systemctl status commande:

sudo systemctl status suricata.service

Vous devriez recevoir une sortie comme celle-ci :

Output● suricata.service - Suricata Intrusion Detection Service
   Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2021-10-21 18:22:56 UTC; 1min 57s ago
     Docs: man:suricata(1)
  Process: 24588 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS)
 Main PID: 24590 (Suricata-Main)
    Tasks: 1 (limit: 23473)
   Memory: 80.2M
   CGroup: /system.slice/suricata.service
           └─24590 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i eth0 --user suricata

Oct 21 18:22:56 suricata systemd[1]: Starting Suricata Intrusion Detection Service..
Oct 21 18:22:56 suricata systemd[1]: Started Suricata Intrusion Detection Service.
. . .

Comme pour la commande du mode test, il faudra une minute ou deux à Suricata pour charger et analyser toutes les règles. Vous pouvez utiliser le tail commande pour surveiller un message spécifique dans les journaux de Suricata indiquant qu'il a fini de démarrer :

sudo tail -f /var/log/suricata/suricata.log

Vous recevrez un certain nombre de lignes de sortie et le terminal peut sembler bloqué pendant le chargement de Suricata. Continuez à attendre la sortie jusqu'à ce que vous receviez une ligne comme celle-ci :

Output19/10/2021 -- 19:22:39 - <Info> - All AFP capture threads are running.

Cette ligne indique que Suricata est en cours d'exécution et prêt à inspecter le trafic. Vous pouvez quitter le tail commande utilisant CTRL+C.

Maintenant que vous avez vérifié que Suricata est en cours d'exécution, l'étape suivante de ce didacticiel consiste à vérifier si Suricata détecte une requête vers une URL de test conçue pour générer une alerte.

Étape 6 - Test des règles Suricata

L'ensemble de règles ET Open que vous avez téléchargé contient plus de 30 000 règles. Une explication complète du fonctionnement des règles de Suricata et de leur construction dépasse le cadre de ce didacticiel d'introduction. Un didacticiel ultérieur de cette série expliquera comment fonctionnent les règles et comment créer les vôtres.

Pour les besoins de ce didacticiel, il suffit de tester si Suricata détecte le trafic suspect avec la configuration que vous avez générée. Le Suricata Quickstart recommande de tester la règle ET Open avec le numéro 2100498 en utilisant le curl commande.

Exécutez la commande suivante pour générer une requête HTTP, qui renverra une réponse correspondant à la règle d'alerte de Suricata :

curl http://testmynids.org/uid/index.html

La curl commande affichera une réponse comme celle-ci :

Outputuid=0(root) gid=0(root) groups=0(root)

Cet exemple de données de réponse est conçu pour déclencher une alerte, en faisant semblant de renvoyer la sortie d'une commande telle que id qui pourrait s'exécuter sur un système distant compromis via un shell Web.

Vous pouvez maintenant consulter les journaux de Suricata pour une alerte correspondante. Deux journaux sont activés avec la configuration par défaut de Suricata. Le premier est en /var/log/suricata/fast.log et le second est un identifiant lisible par machine /var/log/suricata/eve.log.

Examen /var/log/suricata/fast.log

Pour rechercher une entrée de journal dans /var/log/suricata/fast.log qui correspond à votre curl demande utiliser le grep commande. En utilisant le 2100498 identifiant de règle dans la documentation de démarrage rapide, recherchez les entrées qui lui correspondent à l'aide de la commande suivante :

grep 2100498 /var/log/suricata/fast.log

Si votre demande utilisait IPv6, vous devriez recevoir une sortie comme celle-ci, où 2001:DB8::1 est l'adresse IPv6 publique de votre système :

Output10/21/2021-18:35:54.950106  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 2600:9000:2000:4400:0018:30b3:e400:93a1:80 -> 2001:DB8::1:34628

Si votre requête utilisait IPv4, votre journal devrait contenir un message comme celui-ci, où 203.0.113.1 est l'adresse IPv4 publique de votre système :

Output10/21/2021-18:35:57.247239  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 204.246.178.81:80 -> 203.0.113.1:36364

Notez le surligné 2100498 valeur dans la sortie, qui est l'ID de signature (sid) que Suricata utilise pour identifier une règle.

Examen /var/log/suricata/eve.log

Suricata enregistre également les événements dans /var/log/suricata/eve.log (surnommé le journal EVE) en utilisant JSON pour formater les entrées.

La documentation de Suricata recommande d'utiliser le jq utilitaire pour lire et filtrer les entrées de ce fichier. Installer jq si vous ne l'avez pas sur votre système en utilisant ce qui suit dnf commande:

sudo dnf install jq

Une fois que tu as jq installé, vous pouvez filtrer les événements dans le journal EVE en recherchant le 2100498 signature avec la commande suivante :

jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

La commande examine chaque entrée JSON et imprime celles qui ont une alert objet, avec un signature_id clé qui correspond à la 2100498 valeur que vous recherchez. La sortie ressemblera à ce qui suit :

Output{
  "timestamp": "2021-10-21T19:42:47.368856+0000",
  "flow_id": 775889108832281,
  "in_iface": "eth0",
  "event_type": "alert",
  "src_ip": "203.0.113.1",
  "src_port": 80,
  "dest_ip": "147.182.148.159",
  "dest_port": 38920,
  "proto": "TCP",
  "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=",
  "alert": {
    "action": "allowed",
    "gid": 1,
    "signature_id": 2100498,
    "rev": 7,
    "signature": "GPL ATTACK_RESPONSE id check returned root",
    "category": "Potentially Bad Traffic",
. . .
}

Notez le surligné "signature_id": 2100498, ligne, qui est la clé qui jq est à la recherche. Notez également le surligné "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", ligne dans la sortie JSON. Cette clé est l'identifiant de flux communautaire généré que vous avez activé dans le fichier de configuration de Suricata.

Chaque alerte générera un identifiant de flux communautaire unique. D'autres outils NMS peuvent également générer le même identifiant pour permettre le recoupement d'une alerte Suricata avec la sortie d'autres outils.

Une entrée de journal correspondante dans l'un ou l'autre des fichiers journaux signifie que Suricata a inspecté avec succès le trafic réseau, l'a comparé à une règle de détection et a généré une alerte pour une analyse ou une journalisation ultérieure. Un futur didacticiel de cette série explorera comment envoyer des alertes Suricata à un système SIEM (Security Information Event Management) pour un traitement ultérieur.

Étape 7 - Gestion des alertes Suricata

Une fois que vous avez configuré et testé les alertes, vous pouvez choisir comment vous souhaitez les gérer. Pour certains cas d'utilisation, la journalisation des alertes à des fins d'audit peut suffire ; ou vous préférerez peut-être adopter une approche plus active pour bloquer le trafic des systèmes qui génèrent des alertes répétées.

Si vous souhaitez bloquer le trafic en fonction des alertes générées par Suricata, une approche consiste à utiliser les entrées du journal EVE, puis à ajouter des règles de pare-feu pour restreindre l'accès à votre ou vos systèmes. Vous pouvez utiliser le jq outil pour extraire des champs spécifiques d'une alerte, puis ajouter des règles UFW ou IPtables pour bloquer les demandes.

Encore une fois, cet exemple est un scénario hypothétique utilisant des données de demande et de réponse délibérément conçues. Votre connaissance des systèmes et des protocoles auxquels votre environnement doit pouvoir accéder est essentielle pour déterminer quel trafic est légitime et lequel peut être bloqué.

Conclusion

Dans ce didacticiel, vous avez installé Suricata à partir des référentiels de logiciels OISF. L'installation de Suricata de cette manière garantit que vous pouvez recevoir des mises à jour chaque fois qu'une nouvelle version de Suricata est publiée. Après avoir installé Suricata, vous avez modifié la configuration par défaut pour ajouter un ID de flux communautaire à utiliser avec d'autres outils de sécurité. Vous avez également activé le rechargement des règles en direct et téléchargé un ensemble initial de règles.

Une fois que vous avez validé la configuration de Suricata, vous avez lancé le processus et généré du trafic HTTP de test. Vous avez vérifié que Suricata pouvait détecter le trafic suspect en examinant les deux journaux par défaut pour vous assurer qu'ils contenaient une alerte correspondant à la règle que vous testiez.

Pour plus d'informations sur Suricata, visitez le site officiel Suricata. Pour plus de détails sur les options de configuration que vous avez configurées dans ce didacticiel, reportez-vous au Guide de l'utilisateur de Suricata.

Maintenant que Suricata est installé et configuré, vous pouvez passer au didacticiel suivant de cette série Comprendre les signatures Suricata où vous découvrirez comment écrire vos propres règles Suricata personnalisées. Vous découvrirez différentes manières de créer des alertes, ou même de supprimer complètement le trafic, en fonction de critères tels que les paquets TCP/IP invalides, le contenu des requêtes DNS, les requêtes et réponses HTTP, et même les poignées de main TLS.