Snort est un système de prévention d’intrusion réseau léger et open source pour l’exécution d’un système de détection d’intrusion réseau (NIDS). Snort est utilisé pour surveiller les données de paquet envoyées/reçues via une interface réseau spécifique. Les systèmes de détection d’intrusion réseau peuvent détecter les menaces ciblant la faiblesse et les vulnérabilités de votre système à l’aide de technologies de détection et d’analyse de protocole basées sur les signatures.
Lorsque le logiciel NIDS est installé et configuré correctement, il peut identifier différents types d’attaques et de suspicions, telles que les attaques CGI, les violations de politique réseau, les sondes SMB, les infections par des logiciels malveillants, un système compromis, une analyse de port furtive, etc.
Dans ce tutoriel, nous apprenons à installer Snort 3 au Ubuntu 20.04.
Certaines des nouvelles fonctionnalités de Snort 3:
- Prise en charge de plusieurs threads de traitement de paquets
- Permet le traitement de plusieurs paquets
- Générer automatiquement la documentation de référence
- Utiliser une configuration scriptable simple
- Rendre les composants clés enfichables
- Permet aux utilisateurs d’écrire leurs propres plugins
- Configuration partagée et table attributaire
- Permet aux règles de s’exécuter plus rapidement
Étape 1 : Mettre à jour le système
Tout d’abord, mettez à jour et mettez à niveau votre système Ubuntu
sudo apt update
sudo apt upgrade
Étape 2 : installer les dépendances requises
Le référentiel par défaut d’Ubuntu a un package snort. Le package snort disponible là-bas est l’ancienne version. Pour installer Snort 3, nous devons compiler à partir des sources. Avant d’installer Snort 3, nous devons installer les bibliothèques prérequises et requises.
Installez les packages de dépendances Snort 3 avec la commande suivante :
sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev
Une fois les dépendances installées, créez un répertoire dans lequel vous compilez et conservez les fichiers source pour Snort avec la commande suivante :
mkdir snort-source-files
cd snort-source-files
Ensuite, téléchargez et installez la dernière version de la bibliothèque Snort Data Acquisition (LibDAQ). Pour l’installation LibDAQ nous devrons le construire et l’installer à partir de la source avec la commande suivante.
git clone https://github.com/snort3/libdaq.git
cd libdaq
./bootstrap
./configure
make
make install
La dépendance suivante est Tcmalloc, qui optimisera l’allocation de mémoire et fournira une meilleure utilisation de la mémoire.
Installer Tcmalloc avec la commande suivante.
cd ../
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9/gperftools-2.9.tar.gz
tar xzf gperftools-2.9.tar.gz
cd gperftools-2.9/
./configure
make
make install
Étape 3 : Installez Snort 3 sur Ubuntu 20.04
Une fois les dépendances configurées, nous allons télécharger et installer Snort 3 sur Ubuntu 20.04.
01. Clone Snort 3 référentiel officiel GitHub.
cd ../
git clone git://github.com/snortadmin/snort3.git
02. Changez le répertoire en Snort3
cd snort3/
03. À partir de là, configurez et activez tcmalloc avec la commande suivante.
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
04. Naviguez jusqu’au répertoire build et compilez et installez Snort 3 à l’aide de make et make install avec la commande suivante.
cd build
make
make install
05. Une fois l’installation terminée, mettez à jour les bibliothèques partagées.
sudo ldconfig
Snort par défaut est installé dans le répertoire /usr/local/bin/snort, il est recommandé de créer un lien symbolique pour /usr/sbin/snort
sudo ln -s /usr/local/bin/snort /usr/sbin/snort
06. Vérifier l’installation de Snort 3
snort -V
Sortir:
,,_ -> Snort++ <-
o" )~ Version 3.1.10.0
'''' By Martin Roesch & The Snort Team
https://snort.org/contact#team
Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using DAQ version 3.0.4
Using LuaJIT version 2.1.0-beta3
Using OpenSSL 1.1.1f 31 Mar 2020
Using libpcap version 1.9.1 (with TPACKET_V3)
Using PCRE version 8.39 2016-06-14
Using ZLIB version 1.2.11
Using LZMA version 5.2.4
Si vous voyez une sortie similaire, alors Snort 3 est installé avec succès.
Configurer les cartes d’interface réseau
Trouvez l’interface sur laquelle Snort écoute le trafic réseau et activez promiscuité mode pour pouvoir voir tout le trafic réseau qui lui est envoyé.
ip link set dev eh0 promisc on
Vérifiez avec la commande suivante.
ip add sh eth0
Sortir:
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f2:3c:92:ed:7e:d8 brd ff:ff:ff:ff:ff:ff
inet 74.207.230.186/24 brd 74.207.230.255 scope global dynamic eth0
valid_lft 72073sec preferred_lft 72073sec
inet6 2600:3c02::f03c:92ff:feed:7ed8/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 60sec preferred_lft 20sec
inet6 fe80::f03c:92ff:feed:7ed8/64 scope link
valid_lft forever preferred_lft forever
Ensuite, désactivez le déchargement de l’interface pour empêcher Snort 3 de tronquer de gros paquets, jusqu’à 1518 octets. Vérifiez si cette fonctionnalité est activée avec la commande suivante.
ethtool -k eth0 | grep receive-offload
Si vous voyez cette sortie, GRO est activé alors que LRO est fixe ou LRO est activé.
Sortir.
generic-receive-offload: on
large-receive-offload: on
Désactivez-le avec la commande suivante.
ethtool -K eth0 gro off lro off
Deux garantissent que les modifications persistent lors du redémarrage du système, nous devrons créer et activer une unité de service systemd pour implémenter les modifications.
sudo nano /etc/systemd/system/snort3-nic.service
Collez la configuration suivante qui pointe vers votre interface réseau.
[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev eth0 promisc on
ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off
TimeoutStartSec=0
RemainAfterExit=yes
[Install]
WantedBy=default.target
Rechargez les paramètres de configuration de systemd :
sudo systemctl daemon-reload
Démarrez et activez le service au démarrage avec la commande suivante :
sudo systemctl enable --now snort3-nic.service
Sortir.
Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.
Vérifiez le snort3-nic.service avec :
sudo systemctl status snort3-nic.service
Sortir.
● snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
Loaded: loaded (/etc/systemd/system/snort3-nic.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2021-09-18 12:35:17 UTC; 4min 59s ago
Process: 182782 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0>
Process: 182783 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0>
Main PID: 182783 (code=exited, status=0/SUCCESS)
Sep 18 12:35:17 li72-186 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable >
Sep 18 12:35:17 li72-186 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable >
Installer les ensembles de règles de la communauté Snort 3
Dans Snort, les ensembles de règles sont le principal avantage du moteur de détection d’intrusion. Il existe trois types de règles Snort : les règles de la communauté, les règles enregistrées, les règles des abonnés. Les règles de la communauté sont soumises par la communauté open source ou les intégrateurs snort.
Nous allons montrer comment installer les règles de la communauté.
Tout d’abord, créez un répertoire pour les règles dans le /usr/local/etc/snort
mkdir /usr/local/etc/rules
Téléchargez les règles de la communauté Snort 3. Vous pouvez le trouver sur le site officiel Page de téléchargement de Snort3.
wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
Extrayez les règles téléchargées et placez-les dans le répertoire que nous avons précédemment créé /usr/local/etc/rules/
tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/
Snort 3 comprend deux fichiers de configuration principaux, snort_defaults.lua et snort.lua.
le snort.lua contient la configuration principale de Snort, permettant la mise en œuvre et la configuration des préprocesseurs Snort, l’inclusion des fichiers de règles, la journalisation, les filtres d’événements, la sortie, etc.
le snort_defaults.lua Les fichiers contiennent des valeurs par défaut telles que les chemins d’accès aux règles, l’AppID, les listes d’intelligence et les variables réseau.
Lorsque les fichiers de règles sont extraits et placés, nous allons configurer l’un de ces fichiers de configuration appelé snort.lua. Ouvrez le fichier avec votre éditeur préféré et vous verrez une configuration similaire.
... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting
HOME_NET = 'server_public_IP/32'
-- set up the external network addresses.
-- (leave as "any" in most situations)
EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ...
Définissez le réseau que vous souhaitez protéger contre les attaques comme valeur pour le HOME_NET variable et point EXTERNAL_NET variable à HOME_NET variable.
Save et sortie.
Vous pouvez également modifier les valeurs par défaut de Snort dans le fichier /usr/local/etc/snort/snort_defaults.lua et dans la section IPS, vous pouvez définir l’emplacement de vos règles.
ips =
{
-- use this to enable decoder and inspector alerts
--enable_builtin_rules = true,
-- use include for rules files; be sure to set your path
-- note that rules files can include other rules files
include="/usr/local/etc/rules/snort3-community-rules/snort3-community.rules"
}
...
Save et sortie.
Exécuter Snort en tant que service
Si vous envisagez d’exécuter Snort en tant que démon de service en arrière-plan, il est également possible de créer une unité de service systemd pour Snort. Il est prudent de l’exécuter en tant qu’utilisateur système non privilégié
Créez un compte d’utilisateur système sans connexion.
sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS renifler
Ensuite, créez une unité de service systemd pour que Snort soit exécuté en tant qu’utilisateur snort. Ajustez et faites correspondre à votre interface réseau.
sudo nano /etc/systemd/system/snort3.service
Collez la configuration suivante.
[Unit]
Description=Snort 3 NIDS Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eht0 -m 0x1b -u snort -g snort
[Install]
WantedBy=multi-user.target
Rechargez la configuration systemd.
sudo systemctl daemon-reload
Définissez la propriété et les autorisations sur le fichier journal.
sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort
Démarrez et activez Snort pour qu’il s’exécute au démarrage du système :
sudo systemctl enable --now snort3
Vérifiez l’état du service pour confirmer s’il est en cours d’exécution.
sudo systemctl status snort3
Sortir.
● snort3.service - Snort 3 NIDS Daemon
Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-09-18 12:44:32 UTC; 6s ago
Main PID: 182886 (snort)
Tasks: 2 (limit: 1071)
Memory: 62.6M
CGroup: /system.slice/snort3.service
└─182886 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none >
Sep 18 12:44:32 li72-186 systemd[1]: Started Snort 3 NIDS Daemon.
Conclusion
Dans ce tutoriel, comment installer le système de détection d’intrusion réseau Snort 3 sur Ubuntu 20.04.
Linux n’est pas à 100% à l’abri des virus et des choses suspectes, il est toujours préférable d’avoir un outil installé et de s’assurer que personne n’essaye quelque chose de suspect sur votre appareil et votre réseau. Autres alternatives pour Snort que vous pouvez étudier : Ossec, Palo Alto Networks Next-Generation Firewall, Next-Generation Intrusion Prevention System (NGIPS).
Merci d’avoir lu, s’il vous plaît fournir vos commentaires et suggestions dans la section des commentaires.