Snort est un système de prévention des intrusions réseau léger et open source permettant d'exécuter un système de détection des intrusions 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 les faiblesses 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 la politique réseau, les sondes SMB, les infections par des logiciels malveillants, un système compromis, une analyse furtive des ports, etc.
Dans ce tutoriel, nous apprenons à installer Snort 3 sur Ubuntu 20.04 .
Certaines des nouvelles fonctionnalités de Snort 3 :
- Prend en charge 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 d'attributs
- 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 contient le package snort. Le package snort disponible ici est l'ancienne version. Pour installer Snort 3, nous devons construire à partir de la source. 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 de 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 installer LibDAQ nous devrons le compiler 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.
Installez 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 dépôt 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. Accédez au répertoire de construction et compilez et installez Snort 3 en utilisant 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 est installé par défaut 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érifiez l'installation de Snort 3
snort -V
Sortie :
,,_ -> Snort++ <-
o" )~ Version 3.1.10.0
'''' By Martin Roesch & The Snort Team
http://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 la 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
Sortie :
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 les gros paquets, jusqu'à 1518 octets maximum. Vérifiez si cette fonctionnalité est activée avec la commande suivante.
ethtool -k eth0 | grep receive-offload
Si vous voyez cette sortie, cela signifie que GRO est activé alors que LRO est fixe ou que LRO est activé.
Sortie.
generic-receive-offload: on
large-receive-offload: on
Désactivez-le avec la commande suivante.
ethtool -K eth0 gro off lro off
Deuxièmement, assurez-vous 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
Recharger 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
Sortie.
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
Sortie.
● 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 :règles de communauté, règles enregistrées, règles d'abonné. 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 /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 la page de téléchargement officielle 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 créé précédemment /usr/local/etc/rules/
tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/
Snort 3 inclut deux fichiers de configuration principaux, snort_defaults.lua et snort.lua .
Le snort.lua contient la configuration principale de Snort, permettant l'implémentation et la configuration des préprocesseurs Snort, l'inclusion de 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 HOME_NET variable, et pointez EXTERNAL_NET variable à HOME_NET variable.
Enregistrez et quittez.
Vous pouvez également modifier les valeurs par défaut de Snort dans /usr/local/etc/snort/snort_defaults.lua et sous 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'
}
...
Enregistrez et quittez.
Exécuter Snort en tant que service
Si vous allez 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 utilisateur système sans connexion.
sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort
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
Sortie.
● 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'essaie 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, veuillez fournir vos commentaires et suggestions dans la section des commentaires.