GNU/Linux >> Tutoriels Linux >  >> Linux

Configuration de Suricata en tant que système de prévention des intrusions (IPS)

Avec la popularité croissante de la cybercriminalité, il est urgent que les entreprises disposent d'une meilleure protection contre les pirates. Un système de prévention des intrusions (IPS) est l'un des meilleurs moyens de se défendre contre les attaques informatiques. Mais avant de parcourir Internet à la recherche d'un IPS, essayez Suricata.

Dans ce didacticiel, vous apprendrez à configurer un IPS Suricata entièrement fonctionnel sur un serveur Linux pour protéger votre réseau contre les menaces en ligne.

Prêt? Lisez la suite et commencez à protéger votre réseau !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :

  • Un serveur Linux :cette démo utilise Ubuntu 20.04 LTS, mais n'importe quelle distribution Linux fonctionnera.
  • Un utilisateur non root avec des privilèges sudo.
  • 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. Généralement, plus vous prévoyez d'inspecter de trafic, plus vous allouerez de ressources à Suricata. Dans un environnement de développement, prévoyez d'utiliser au moins 2 processeurs et 8 Go de RAM pour commencer afin que Suricata puisse effectuer ses tâches sans compromettre la qualité de service pour tous les utilisateurs.

Installation de Suricata et ajout Référentiel PPA

Suricata n'est pas installé par défaut sur Ubuntu, mais l'installation de Suricata est similaire à la façon dont vous installez d'autres packages sur votre système.

1. Exécutez le apt update commande pour mettre à jour les packages disponibles dans votre système.

sudo apt update -y

2. Ensuite, exécutez le add-apt-repository commande pour ajouter le référentiel PPA maintenu par l'Open Information Security Foundation (OISF). En ajoutant le référentiel PPA, vous obtiendrez la dernière version stable de Suricata (ppa:oisf/suricata-stable ).

sudo add-apt-repository ppa:oisf/suricata-stable

3. Réexécutez le sudo apt update pour charger le référentiel Suricata nouvellement ajouté dans l'index de packages de votre système.

sudo apt update -y

4. Maintenant, exécutez le sudo apt policy pour vérifier que vous avez correctement ajouté le PPA Suricata. Assurez-vous que vous voyez Suricata PPA dans la liste comme indiqué ci-dessous avant d'installer Suricata

sudo apt policy

5. Exécutez la commande suivante pour install suricata sur votre système.

sudo apt install suricata -y

6. Une fois l'installation terminée, exécutez le systemctl status commande ci-dessous pour vérifier le suricata service status .

sudo systemctl status suricata

Ci-dessous, vous pouvez voir que le service Suricata est actif (en cours d'exécution).

Configurer Suricata

Le package Suricata est livré avec un fichier de configuration nommé suricata.yaml situé à /etc/suricata annuaire. Ce fichier de configuration a de nombreux paramètres différents pour de nombreux autres cas d'utilisation. Mais n'oubliez pas qu'il y a quelques paramètres dans le fichier de configuration par défaut que vous devez modifier avant d'utiliser Suricata.

Le mode par défaut pour Suricata est le mode de détection d'intrusion (IDS), qui se connecte, mais ne supprime aucun trafic. Ce mode est utilisé lors de la configuration et de la prise en main de Suricata. Une fois que vous serez plus à l'aise avec Suricata et que vous comprendrez mieux les types de trafic dont Suricata vous alertera, vous pourrez choisir d'activer le mode IPS.

Suricata ajoute un champ dans son format JSON (community flow ID). L'ID de flux de communauté est un champ de 8 octets qui vous permet de corréler les enregistrements générés par d'autres outils. Cette fonctionnalité est pratique lorsque vous utilisez Suricata en conjonction avec d'autres outils comme Bro ou Elasticsearch.

1. Ouvrez le fichier /etc/suricata/suricata.yaml fichier dans votre éditeur de texte préféré.

2. Trouvez une ligne indiquant community-id :false et changez-le en community-id :true . Enregistrez les modifications et quittez l'éditeur de texte.

Chaque fois que vous examinez des événements, vous verrez l'ID de flux de la communauté dans leur sortie JSON.

Ensuite, exécutez la commande suivante pour trouver un périphérique avec une route par défaut sur votre système (route show default ). Le -p flag indique le ip commande pour imprimer l'appareil d'une manière lisible par l'homme, tandis que le -j flag imprime la sortie JSON.

Suricata est configuré pour renifler les paquets de n'importe quelle interface réseau disponible par défaut. Mais vous pouvez modifier ce comportement et spécifier une interface que Suricata écoutera au démarrage.

 ip -p -j route show default

Comme vous le voyez ci-dessous, le dev Le paramètre spécifie l'interface que Suricata utilisera pour renifler les paquets. Dans cette démo, l'interface est eth0 , mais votre interface peut être différente, comme tun0, wlan0, etc.

4. Enfin, ouvrez le fichier /etc/suricata/suricata.yaml fichier de configuration, localisez l'interface paramètre sous le paquet af section et modifiez-la en conséquence. Dans cette démo, eth0 est utilisé comme interface pour renifler les paquets.

Enregistrez les modifications, mais gardez votre éditeur de texte ouvert pour le moment.

Configuration de la fonctionnalité de rechargement des règles en direct

Vous avez maintenant configuré Suricata, mais ce n'est que le début de la protection de votre réseau. En règle générale, vous souhaitez ajouter des règles sur place et recharger automatiquement les règles. Comment? La fonction de rechargement des règles en direct de Suricata vous permet de mettre à jour les règles à la volée. Par conséquent, vous n'avez pas besoin de redémarrer Suricata manuellement pour que les nouvelles règles prennent effet.

Ouvrez le fichier /etc/suricata/suricata.yaml fichier, copiez/collez les directives suivantes au bas du contenu du fichier et enregistrez les modifications. Ces directives vous permettent d'activer la fonctionnalité de rechargement des règles en direct.

Avec ce paramètre en place, lorsque vous modifiez/mettez à jour vos ensembles de règles, les modifications prendront effet sans redémarrer votre service Suricata.

detect-engine:
  - rule-reload: true

Exécutez maintenant le kill commande ci-dessous pour notifier votre processus Suricata ($(pidof suricata) ) pour mettre à jour les règles sans redémarrer.

La commande envoie un signal défini par l'utilisateur (-usr2 ) à l'ID de processus spécifié, Suricata effectue automatiquement ce qui suit :

  • Charger une nouvelle configuration pour mettre à jour les variables et les valeurs des règles.
  • Charger de nouvelles règles
  • Construire un nouveau moteur de détection
  • Permuter les anciens et les nouveaux moteurs de détection
  • Assurez-vous que tous les fils de discussion sont mis à jour
  • Libérez l'ancien moteur de détection
sudo kill -usr2 $(pidof suricata)

Mise à jour des ensembles de règles Suricata

La fonctionnalité de rechargement des règles en direct est prête, mais elle ne servira à rien si vous ne mettez pas à jour vos ensembles de règles. Par défaut, le package Suricata a un ensemble de règles limité qui ne détecte que les protocoles Internet les plus courants situés dans /etc/suricata/rules répertoire.

À ce stade, vous obtiendrez un message Aucun fichier de règles ne correspond au modèle message d'erreur, comme celui ci-dessous, chaque fois que vous essayez de démarrer et d'utiliser votre service Suricata. Ce message d'erreur indique qu'il n'y a pas d'ensemble de règles à utiliser pour Suricata.

Pour corriger cette erreur, fournissez des fichiers d'ensemble de règles à votre instance Suricata. Heureusement, Suricata a un outil nommé suricata-update qui vous aidera à récupérer davantage d'ensembles de règles auprès de fournisseurs tiers.

1. Exécutez la commande ci-dessous pour obtenir une mise à jour pour votre instance Suricata.

sudo suricata-update

Comme vous pouvez le voir ci-dessous, la sortie indique que le suricata-update La commande a récupéré les règles en se connectant à https://rules.emergingthreats.net/open/. La commande enregistre ensuite les nouvelles règles dans le répertoire /var/lib/suricata/rules/ .

La sortie imprime également les éléments suivants :

  • Le nombre total (31737 ) d'ensembles de règles
  • Le nombre de règles activées (24 355 )
  • Le nombre de combien sont ajoutés (31737 )/supprimé(0 ).

Ensuite, exécutez la commande ci-dessous pour répertorier tous les fournisseurs d'ensembles de règles (list-sources ).

Le suricata-update La commande récupère les ensembles de règles de nombreux fournisseurs, y compris les fournisseurs gratuits et commerciaux.

sudo suricata-update list-sources

Ci-dessous, vous pouvez voir une petite partie de la liste. Notez un nom d'ensemble de règles à partir duquel vous souhaitez que Suricata récupère spécifiquement les ensembles de règles. Ce tutoriel récupère et/open ensembles de règles pour la démonstration (troisième étape).

3. Exécutez la commande ci-dessous pour récupérer et inclure (enable-source ) le et/open ensembles de règles à vos règles Suricata.

sudo suricata-update enable-source et/open

Enfin, relancez le suricata-update commande pour charger le jeu de règles nouvellement sélectionné.

sudo suricata-update

Validation de la configuration Suricata

Vous avez configuré Suricata et même ajouté des ensembles de règles, il est donc temps de valider vos modifications et de vous assurer que tout fonctionne comme prévu. Le package Suricata dispose d'un service de validation intégré qui vous permet de voir tout écart par rapport à la configuration actuelle.

Exécutez le suricata commande ci-dessous pour valider les changements dans le fichier de configuration de Suricata (-c /etc/suricata/suricata.yaml ). La commande affiche également tous les messages de validation (-v ).

Le -T indique à Suricata de s'exécuter en mode "test" et "top down". Les deux modes ont des règles plus strictes pour faire correspondre les paquets et sont moins susceptibles de faire un faux positif.

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

Étant donné que Suricata est un pare-feu hautement configurable, le test peut prendre plusieurs minutes. S'il n'y a pas d'erreurs, vous verrez une sortie similaire à celle ci-dessous qui affiche un complet message.

Si votre fichier de configuration contient des erreurs similaires à celle ci-dessous, Suricata imprimera chaque erreur, en indiquant les lignes spécifiques causant des problèmes. Si vous obtenez ces erreurs, corrigez chaque problème de configuration un par un jusqu'à ce que la validation soit réussie.

Tester les règles de Suricata

Maintenant que vos fichiers de configuration Suricata sont validés, vous pouvez exécuter Suricata pour voir qu'ils fonctionnent correctement. Vous utiliserez Suricata pour tester l'ET Open (2100498) avec le curl commande pour détecter les activités/trafic suspects.

À l'heure actuelle, votre instance Suricata contient plus de 30 000 règles que Suricata a extraites de divers ensembles de règles. Donc, un test complet de toutes les règles avec leur explication ne rentrera pas dans ce tutoriel.

1. Exécutez le curl commande ci-dessous pour générer du trafic/requêtes/activités HTTP à partir du site Web TestMyNIDS. TestMyNIDS est un projet d'apprentissage en ligne dédié à la prise en charge des tests, de la validation et de la comparaison NIDS. Le site Web offre une plate-forme unique pour l'analyse comparative des SNID et des outils connexes.

Vous pouvez utiliser ce site Web pour tester toute activité/trafic suspect afin de voir si votre ensemble de règles configuré fonctionne comme prévu.

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

Les données de réponse sont conçues pour déclencher une fausse alerte prétendant être une racine Linux/Unix utilisateur. Et cette racine l'utilisateur se trouve sur un système qui pourrait être compromis.

Ensuite, exécutez le grep commande ci-dessous pour examiner le fast.log fichier dans le /var/log/suricata/ répertoire pour un message d'alerte correspondant 2100498 . Cette commande vérifie le fichier journal pour l'alerte utilisateur.

Outre le fichier fast.log, un autre fichier journal à surveiller est le eve.log dans le même répertoire.

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

Vous verrez une sortie similaire à celle ci-dessous qui affiche l'adresse IPv4 publique de votre système.

3. Maintenant, exécutez le jq commande ci-dessous pour examiner le eve.log dossier. Le eve.log Le fichier est également utilisé pour la journalisation des événements mais au format JSON (/var/log/suricata/eve.json ). C'est le eve.json et fast.log fichiers que vous référencerez pour le trafic suspect et les tentatives bloquées. Une fois trouvé, prenez les mesures nécessaires.

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

Ci-dessous, vous pouvez voir "signature_id":2100498 dans la sortie, qui est l'ID de signature d'alerte que vous avez spécifié dans la commande.

Vous pouvez également voir le "community_id" :"1:ETRbv54GHTVCayHTUR5OIovK4gh2=" dans la sortie, qui est l'ID de flux communautaire que vous avez configuré dans /etc/suricata/suricata.yaml dossier.

Cet community_id est pratique lorsque vous utilisez Suricata en conjonction avec d'autres outils comme Elasticsearch pour obtenir une "pile de surveillance de la sécurité" complète à un coût raisonnablement faible.

Conclusion

Tout au long de ce didacticiel, vous avez appris à installer et à configurer Suricata avec des ensembles de règles pour protéger votre réseau. Vous avez également testé si les ensembles de règles fonctionnent en générant du trafic sur votre réseau.

À ce stade, Suricata fonctionne parfaitement avec votre ensemble de règles personnalisées pour détecter les activités/trafic suspects sur votre réseau.

Maintenant, pourquoi ne pas tirer parti de ces nouvelles connaissances ? Peut-être commencer par installer et configurer Suricata, Zeek, la pile Elasticsearch pour mettre en place une "pile de surveillance de la sécurité" complète ?


Linux
  1. Installation et configuration de php 7x sur Centos 8

  2. Comment installer denyhosts sur Ubuntu Linux 17.04 (outil de sécurité de prévention des intrusions pour SSH et plus)

  3. Le caisson de basses du système surround 5.1 ne fonctionne pas ?

  4. Accorder l'accès sudo dans Debian et le système d'exploitation Ubuntu

  5. Configuration de sudo pour activer les commandes pour les utilisateurs non root sous Linux

Comment installer Xfce Desktop sur AlmaLinux 8

Comment installer Suricata sur CentOS 8

Comment installer Suricata sur Ubuntu 20.04 LTS

Tutoriel Tripwire :Système de détection d'intrusion basé sur l'hôte Linux

Comment ajouter ou créer un utilisateur sudo dans le système Linux [Quickstart]

L'utilisateur unique d'un système *nix doit-il avoir deux comptes ?