Recherche de site Web

Suricata - Outil de sécurité pour la détection et la prévention des intrusions


Suricata est un moteur de détection des menaces puissant, polyvalent et open source qui fournit des fonctionnalités pour la détection des intrusions (IDS), la prévention des intrusions (IPS) et la surveillance de la sécurité du réseau. Il effectue une inspection approfondie des paquets ainsi qu’une correspondance de modèle, un mélange incroyablement puissant dans la détection des menaces.

Au moment de la rédaction de ce guide, la dernière version de Suricata est la 6.0.5.

Caractéristiques de Suricata

  • IDS/IPS – Suricata est un moteur de détection et de prévention des intrusions basé sur des règles qui exploite des ensembles de règles développés en externe tels que l’ensemble de règles Talos et l’ensemble de règles Suricata pour surveiller le trafic réseau à la recherche d’activités malveillantes, de violations de politiques et de menaces.
  • Détection automatique des protocoles – Le moteur Suricata détecte automatiquement les protocoles tels que HTTP et HTTPS. FTP et SMB sur n’importe quel port et appliquez la logique de détection et de journalisation appropriée. C’est pratique pour détecter les logiciels malveillants et les canaux CnC.
  • Scripts Lua – Suricata peut invoquer des scripts Lua qui fournissent une détection avancée des logiciels malveillants pour détecter et décoder le trafic de logiciels malveillants qui est autrement difficile à détecter.
  • Multi-threading – Suricata offre vitesse et importance dans la détermination du trafic réseau. Le moteur est développé pour appliquer la puissance de traitement accrue offerte par les chipsets matériels multicœurs modernes.

Installation de l’outil de détection d’intrusion Suricata sous Linux

Dans cette section, nous allons montrer comment installer Suricata sur des distributions basées sur Debian et RHEL.

Installer Suricata sur Debian/Ubuntu & Mint

Suricata est fourni par les dépôts Debian/Ubuntu et peut facilement être installé à l’aide du gestionnaire de paquets apt. Cependant, il convient de noter que cela n’installe pas la dernière version de Suricata. Pour installer la dernière version, vous devez l’installer à partir d’une source que nous aborderons plus loin dans ce guide.

Pour installer Suricata à l’aide du gestionnaire de paquets apt, exécutez la commande :

$ sudo apt install suricata -y

Suricata démarre automatiquement une fois installé. Vous pouvez le confirmer comme suit.

$ sudo systemctl status suricata

Installer Suricata sur RHEL, Rocky, Almalinux et Fedora

Pour installer Suricata sur des distributions RHEL telles que CentOS Stream, Rocky Linux, AlmaLinux, Fedora et RHEL, vous devez d’abord activer le référentiel EPEL.

$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  [RHEL 9]
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 8]
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 7]

Une fois EPEL activé, installez les packages requis suivants et ajoutez le référentiel OISF à votre système.

----------- On Fedora Systems ----------- 
sudo dnf install dnf-plugins-core
sudo  dnf copr enable @oisf/suricata-6.0

----------- On RHEL Systems ----------- 
sudo dnf install yum-plugin-copr
sudo dnf copr enable @oisf/suricata-6.0

Ensuite, installez Suricata à l’aide du gestionnaire de paquets dnf ou du gestionnaire de paquets yum comme indiqué.

$ sudo dnf install suricata -y
Or
sudo yum install suricata -y

Une fois Suricata installé, démarrez et vérifiez son état.

$ sudo systemctl start suricata
sudo systemctl status suricata

Installer Suricata à partir des sources sous Linux

Les référentiels de système d’exploitation par défaut ne fournissent pas la dernière version de Suricata. Si votre objectif est d’installer la dernière version de Suricata, vous devez l’installer à partir de la source.

Au moment de la rédaction de ce guide, la dernière version de Suricata est la 6.0.5. Pour installer Suricata à partir du code source sur les distributions Ubuntu/Debian et RHEL, installez les bibliothèques, outils de compilation et dépendances suivants.

----------- On Debian Systems ----------- 
sudo apt install rustc build-essential cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y

----------- On RHEL Systems ----------- 
sudo yum install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo lz4-devel -y

Ensuite, installez l’outil suricata-update pour mettre à jour les règles Suricata.

$ sudo apt install python3-pip           [On Debian]
sudo yum install python3-pip           [On RHEL]
pip3 install --upgrade suricata-update

Créez ensuite un lien symbolique vers /usr/bin/suricata-update.

$ sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

Rendez-vous maintenant sur la page de téléchargement officielle de Suricata et téléchargez le dernier fichier tarball pour Linux à l’aide de la commande wget.

$ wget https://www.openinfosecfoundation.org/download/suricata-6.0.6.tar.gz

Une fois téléchargé, extrayez le fichier tarball et installez-le.

$ sudo tar -xvf suricata-6.0.6.tar.gz
cd suricata-6.0.6
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install-full

Configuration de Suricata sous Linux

Pour commencer à configurer Suricata, nous devons spécifier l’adresse IP interne et le réseau externe. Pour ce faire, accédez au fichier de configuration.

$ sudo vim /etc/suricata/suricata.yaml

Pour la directive HOME_NET, spécifiez l’adresse IP de votre système Linux.

HOME_NET: "[173.82.235.7]"

Ensuite, définissez la directive EXTERNAL_NET sur « !$HOME_NET ».

EXTERNAL_NET: "!$HOME_NET"

Ensuite, spécifiez l’interface réseau sur laquelle Suricata inspectera le trafic réseau. Dans notre cas, il s’agit de l’interface eth0.

Vous pouvez vérifier votre interface réseau active à l’aide de la commande ip :

$ ip a

Dans le fichier de configuration, mettez à jour la directive d’interface avec le nom de l’interface réseau.

- interface: eth0

Ensuite, assurez-vous que l’attribut default-rule-path est défini sur /etc/suricata/rules.

Enregistrez ensuite les modifications et fermez le fichier de configuration. Redémarrez ensuite Suricata pour que les modifications s’appliquent.

$ sudo systemctl status suricata

Mise à jour des ensembles de règles Suricata sous Linux

Par défaut, Suricata est livré avec un ensemble limité de règles de détection situées dans le répertoire /etc/suricata/rules. Cependant, ceux-ci sont considérés comme faibles et inefficaces pour détecter les intrusions. Vous devez charger les règles de menace émergente (ET), qui sont considérées comme les ensembles de règles les plus complets pour Suricata.

Suricata fournit un outil connu sous le nom de suricata-update qui récupère les ensembles de règles des fournisseurs externes. Pour obtenir un ensemble de règles à jour pour votre serveur, exécutez la commande suivante.

$ sudo suricata-update -o /etc/suricata/rules

À partir de la sortie, vous pouvez voir suricata-update récupérer les règles ouvertes gratuites des menaces émergentes ET et les enregistrer dans le fichier de règles /etc/suricata/rules/suricata de Suricata. De plus, il indique le nombre de règles traitées. Dans cet exemple, un total de 35941 ont été ajoutés. Parmi ceux-ci, 28221 ont été activés, 18 ont été supprimés et 1249 ont été modifiés.

Ajout d’ensembles de règles Suricata sous Linux

L’outil suricata-update vous permet de récupérer des règles à partir de fournisseurs d’ensembles de règles. Certains sont gratuits comme l’ensemble ET Open, tandis que d’autres nécessitent un abonnement payant.

Pour répertorier l’ensemble par défaut des fournisseurs de règles, exécutez la commande suricata-update comme indiqué.

$ sudo suricata-update list-sources

Pour ajouter un ensemble de règles, par exemple, l’ensemble de règles tgreen/hunt, exécutez la commande suivante.

$ sudo suricata-update enable-source tgreen/hunting

Une fois que vous avez ajouté l’ensemble de règles, exécutez à nouveau la commande suricata-update avec l’indicateur -o /etc/suricata/rules.

$ sudo suricata-update -o /etc/suricata/rules

Tester les règles Suricata sous Linux

Avant de commencer à tester Suricata, il est recommandé de vérifier si la configuration est correcte. Pour ce faire, exécutez la commande suivante :

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

Assurez-vous qu’aucune erreur n’est signalée. Si vous utilisez RHEL, CentOS Stream, Fedora et Rocky Linux, démarrez et activez Suricata.

$ sudo systemctl start suricata 
sudo systemctl enable suricata 

Jusqu’à présent, nous avons réussi à installer, configurer Suricata et mettre à jour les ensembles de règles. L’ensemble de règles ET Open contient plus de 30 000 règles pour détecter le trafic malveillant. Dans cette section, nous allons mettre Suricata à l’épreuve et vérifier s’il peut détecter le trafic réseau suspect.

Nous allons tester l’ensemble de règles ET Open en simulant une intrusion comme recommandé par le guide de démarrage rapide de Suricata.

La fonctionnalité IDS sera testée avec une signature ID de 2100498 en envoyant une requête HTTP au site Web testmynids.org qui est un cadre NIDS (Network Intrusion and Detection System).

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

Vous devriez obtenir le résultat suivant.

uid=0(root) gid=0(root) groups=0(root)

La requête HTTP envoyée est conçue pour déclencher une alerte en imitant la sortie de la commande id qui peut s’exécuter sur un système distant compromis via un shell.

Passons maintenant au crible les journaux de Suricata pour trouver une alerte correspondante. Suricata est livré avec deux fichiers journaux qui sont activés par défaut.

/var/log/suricata/fast.log
/var/log/suricata/eve.log

Nous allons vérifier la présence d’une entrée de journal dans le fichier journal /var/log/suricata/fast.log qui correspond à la requête curl à l’aide de la commande grep. Nous rechercherons les entrées de journal à l’aide de l’identificateur de règle 2100498 de la documentation de démarrage rapide.

$ grep 2100948 /var/log/suricata/fast.log

Vous obtiendrez la sortie suivante qui signifie une intrusion. Ici, 173.82.235.7 est l’adresse IP publique du serveur.

09/09/2022-22:17:06.796434  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 13.226.210.123:80 -> 173.82.235.7:33822

Vous pouvez également vérifier dans le fichier journal /var/log/suricata/eve.log l’ID de signature de 2100498 comme indiqué.

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

Il s’agissait d’un guide complet sur la façon d’installer et de configurer Suricata sur Linux. Nous avons examiné différentes méthodes d’installation, comment configurer Suricata et mettre à jour les règles Suricata ainsi que comment gérer le service système Suricata et effectuer des tests d’intrusion réseau.

Nous espérons que vous pouvez désormais installer et utiliser confortablement Suricata pour protéger votre système contre les intrusions réseau ou le trafic malveillant.

Articles connexes: