Sécurité réseau · 10 min read · Jan 10, 2026

Installer et configurer le système de détection d'intrusion Snort 3 sur Ubuntu 22.04

Snort est un système de prévention et de détection d’intrusion open source (IDS) pour se défendre contre les attaques DDoS. Il utilise des règles intégrées qui aident à définir l’activité réseau malveillante et utilise ces règles pour trouver des paquets qui correspondent à celles-ci et génère des alertes pour les utilisateurs. Snort peut identifier les dernières attaques, infections par des logiciels malveillants, systèmes compromis et violations de la politique réseau.

Fonctionnalités

  • Moniteur de trafic en temps réel.
  • Journalisation des paquets. Analyse de protocole.
  • Correspondance de contenu. Identification du système d’exploitation.
  • Peut être installé dans n’importe quel environnement réseau.
  • Crée des journaux.

Dans ce tutoriel, nous allons vous montrer comment installer Snort sur Ubuntu 22.04.

Prérequis

  • Un serveur exécutant Ubuntu 22.04.
  • Un mot de passe root configuré sur le serveur.

Installer les dépendances requises

Avant de commencer, vous devrez installer certaines dépendances sur votre serveur. Vous pouvez les installer toutes en exécutant la commande suivante :

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 libfl-dev -y

Une fois toutes les dépendances installées, vous pouvez passer à l’étape suivante.

Installer Snort DAQ

Ensuite, vous devrez installer la bibliothèque d’acquisition de données sur votre système. Par défaut, elle n’est pas disponible dans le dépôt par défaut d’Ubuntu. Vous devrez donc la compiler à partir de la source.

Tout d’abord, téléchargez Snort DAQ depuis Git avec la commande suivante :

git clone https://github.com/snort3/libdaq.git

Une fois le téléchargement terminé, naviguez vers le répertoire téléchargé et configurez-le avec la commande suivante :

cd libdaq  
./bootstrap  
./configure

Vous devriez voir la sortie suivante :

    cc:             gcc
    cppflags:       
    am_cppflags:     -fvisibility=hidden -Wall -Wmissing-declarations -Wpointer-arith -Wcast-align -Wcast-qual -Wformat -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wextra -Wsign-compare -Wno-unused-parameter -fno-strict-aliasing -fdiagnostics-show-option
    cflags:         -g -O2
    am_cflags:       -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wnested-externs
    ldflags:        
    am_ldflags:     
    libs:           

    code_coverage_enabled:  no
    code_coverage_cppflags: 
    code_coverage_cflags:   
    code_coverage_ldflags:  

    Build AFPacket DAQ module.. : yes
    Build BPF DAQ module....... : yes
    Build Divert DAQ module.... : no
    Build Dump DAQ module...... : yes
    Build FST DAQ module....... : yes
    Build netmap DAQ module.... : no
    Build NFQ DAQ module....... : yes
    Build PCAP DAQ module...... : yes
    Build Savefile DAQ module.. : yes
    Build Trace DAQ module..... : yes
    Build GWLB DAQ module...... : yes

Ensuite, installez-le avec la commande suivante :

make  
make install

Installer Gperftools

Tout d’abord, téléchargez la dernière version de Gperftools avec la commande suivante :

cd  
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz

Une fois le téléchargement terminé, extrayez le fichier téléchargé avec la commande suivante :

tar xzf gperftools-2.9.1.tar.gz

Ensuite, naviguez vers le répertoire téléchargé et compilez-le avec la commande suivante :

cd gperftools-2.9.1/  
./configure

Ensuite, installez-le avec la commande suivante :

make  
make install

Installer Snort

Ensuite, téléchargez la dernière version de Snort avec la commande suivante :

cd  
wget https://github.com/snort3/snort3/archive/refs/tags/3.1.43.0.tar.gz

Ensuite, extrayez le fichier téléchargé avec la commande suivante :

tar -xvzf 3.1.43.0.tar.gz

Ensuite, naviguez vers le répertoire extrait et configurez-le avec la commande suivante :

cd snort3-3.1.43.0  
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc

Vous obtiendrez la sortie suivante :

snort version 3.1.43.0

Install options:
    prefix:     /usr/local
    includes:   /usr/local/include/snort
    plugins:    /usr/local/lib/snort

Compiler options:
    CC:             /usr/bin/cc
    CXX:            /usr/bin/c++
    CFLAGS:            -fvisibility=hidden   -DNDEBUG -g -ggdb  -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free  -O2 -g -DNDEBUG
    CXXFLAGS:          -fvisibility=hidden   -DNDEBUG -g -ggdb  -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free  -O2 -g -DNDEBUG
    EXE_LDFLAGS:        
    MODULE_LDFLAGS:     

Feature options:
    DAQ Modules:    Static (afpacket;bpf;dump;fst;gwlb;nfq;pcap;savefile;trace)
    libatomic:      System-provided
    Hyperscan:      OFF
    ICONV:          ON
    Libunwind:      ON
    LZMA:           ON
    RPC DB:         Built-in
    SafeC:          OFF
    TCMalloc:       ON
    JEMalloc:       OFF
    UUID:           ON
-------------------------------------------------------

-- Configuring done
-- Generating done
-- Build files have been written to: /root/snort3-3.1.43.0/build

Ensuite, changez le répertoire vers le répertoire de construction et installez Snort avec la commande suivante :

cd build  
make  
make install  
ldconfig

Vous pouvez maintenant vérifier la version de Snort en utilisant la commande suivante :

snort -V

Vous obtiendrez la sortie suivante :

   ,,_     -*> Snort++ <*-
  o"  )~   Version 3.1.43.0
   ''''    Par Martin Roesch & L'équipe Snort
           http://snort.org/contact#team
           Copyright (C) 2014-2022 Cisco et/ou ses affiliés. Tous droits réservés.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Utilisation de la version DAQ 3.0.9
           Utilisation de la version LuaJIT 2.1.0-beta3
           Utilisation d'OpenSSL 3.0.2 15 Mar 2022
           Utilisation de libpcap version 1.10.1 (avec TPACKET_V3)
           Utilisation de PCRE version 8.39 2016-06-14
           Utilisation de ZLIB version 1.2.11
           Utilisation de LZMA version 5.2.5

Configurer Snort

Tout d’abord, vous devrez définir votre interface réseau en mode promiscuous afin qu’elle puisse voir tout le trafic réseau qui lui est envoyé.

Vous pouvez le définir en utilisant la commande suivante :

ip link set dev eth0 promisc on

Vous pouvez maintenant le vérifier avec la commande suivante :

ip add sh eth0

Ensuite, vous devrez également désactiver l’Interface Offloading. Tout d’abord, vérifiez si cette fonctionnalité est activée ou non en utilisant la commande suivante :

ethtool -k eth0 | grep receive-offload

Vous obtiendrez la sortie suivante :

generic-receive-offload: on
large-receive-offload: off [fixed]

Vous pouvez maintenant le désactiver en utilisant la commande suivante :

ethtool -K eth0 gro off lro off

Créer un fichier de service Systemd pour Snort NIC

Ensuite, vous devrez créer un fichier de service systemd pour Snort NIC.

nano /etc/systemd/system/snort3-nic.service

Ajoutez les lignes suivantes :

[Unit]
Description=Définir Snort 3 NIC en mode promiscuous et désactiver GRO, LRO au démarrage
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

Enregistrez et fermez le fichier, puis rechargez le démon systemd pour appliquer les modifications :

systemctl daemon-reload

Ensuite, démarrez et activez Snort avec la commande suivante :

systemctl start snort3-nic.service  
systemctl enable snort3-nic.service

Vous pouvez vérifier l’état de Snort avec la commande suivante :

systemctl status snort3-nic.service

Vous obtiendrez la sortie suivante :

? snort3-nic.service - Définir Snort 3 NIC en mode promiscuous et désactiver GRO, LRO au démarrage
     Loaded: loaded (/etc/systemd/system/snort3-nic.service; disabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-11 16:24:15 UTC; 6s ago
    Process: 95745 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0/SUCCESS)
    Process: 95746 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0/SUCCESS)
   Main PID: 95746 (code=exited, status=0/SUCCESS)
        CPU: 11ms

Oct 11 16:24:15 ubuntu2204 systemd[1]: Starting Définir Snort 3 NIC en mode promiscuous et désactiver GRO, LRO au démarrage...
Oct 11 16:24:15 ubuntu2204 systemd[1]: Finished Définir Snort 3 NIC en mode promiscuous et désactiver GRO, LRO au démarrage.

Installer les règles Snort

Les règles sont très importantes pour le moteur de détection d’intrusion de Snort. Tout d’abord, créez un répertoire pour stocker toutes les règles :

mkdir /usr/local/etc/rules

Ensuite, téléchargez les règles communautaires avec la commande suivante :

wget -qO- https://www.snort.org/downloads/community/snort3-community-rules.tar.gz | tar xz -C /usr/local/etc/rules/

Ensuite, éditez le fichier de configuration principal de Snort :

nano /usr/local/etc/snort/snort.lua

Définissez votre réseau comme indiqué ci-dessous :

HOME_NET = '192.168.56.124/32'
EXTERNAL_NET = '!$HOME_NET'

Ensuite, définissez votre chemin de règles Snort :

ips =
{
    -- utilisez ceci pour activer les alertes de décodeur et d'inspecteur
    --enable_builtin_rules = true,

    -- utilisez include pour les fichiers de règles ; assurez-vous de définir votre chemin
    -- notez que les fichiers de règles peuvent inclure d'autres fichiers de règles
    -- (voir aussi les variables de chemin connexes en haut de snort_defaults.lua)

    variables = default_variables,
    rules = [[
    include /usr/local/etc/rules/snort3-community-rules/snort3-community.rules
    ]]

}

Enregistrez et fermez le fichier lorsque vous avez terminé.

Installer Snort OpenAppID

OpenAppID est un plugin qui permet à Snort de détecter diverses applications, Facebook, Netflix, Twitter et Reddit, utilisées dans le réseau.

Vous pouvez le télécharger avec la commande suivante :

wget https://www.snort.org/downloads/openappid/26425 -O OpenAppId-26425.tgz

Une fois le téléchargement terminé, extrayez le fichier téléchargé avec la commande suivante :

tar -xzvf OpenAppId-26425.tgz

Ensuite, copiez le fichier binaire OpenAppID dans le répertoire système :

cp -R odp /usr/local/lib/

Ensuite, éditez le fichier de configuration de Snort et définissez votre emplacement OpenAppID :

nano /usr/local/etc/snort/snort.lua

Changez les lignes suivantes :

appid =
{
    app_detector_dir = '/usr/local/lib',
    log_stats = true,

}

Enregistrez et fermez le fichier, puis créez un répertoire de journaux Snort :

mkdir /var/log/snort

Enfin, vérifiez le fichier de configuration de Snort avec la commande suivante :

snort -c /usr/local/etc/snort/snort.lua

Si tout va bien, vous obtiendrez la sortie suivante :

--------------------------------------------------
fast pattern groups
                      src: 59
                      dst: 158
                      any: 4
                to_server: 56
                to_client: 39
--------------------------------------------------
search engine
                instances: 316
                 patterns: 10282
            pattern chars: 166369
               num states: 112212
         num match states: 9885
             memory scale: MB
             total memory: 3.42574
           pattern memory: 0.550588
        match list memory: 1.25256
        transition memory: 1.58402
        fast pattern only: 6822
--------------------------------------------------
pcap DAQ configuré pour passif.

Snort a validé avec succès la configuration (avec 0 avertissements).
o")~   Snort sortant

Créer des règles personnalisées Snort

Vous pouvez également créer vos propres règles personnalisées selon vos besoins. Créons une règle personnalisée pour les requêtes ICMP entrantes :

nano /usr/local/etc/rules/local.rules

Ajoutez la ligne suivante :

alert icmp any any -> $HOME_NET any (msg:"Test de connexion ICMP"; sid:1000001; rev:1;)

Ensuite, vérifiez les règles avec la commande suivante :

snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules

Vous obtiendrez la sortie suivante :

search engine
                instances: 316
                 patterns: 10282
            pattern chars: 166369
               num states: 112212
         num match states: 9885
             memory scale: MB
             total memory: 3.42574
           pattern memory: 0.550588
        match list memory: 1.25256
        transition memory: 1.58402
        fast pattern only: 6822
--------------------------------------------------
pcap DAQ configuré pour passif.

Snort a validé avec succès la configuration (avec 0 avertissements).
o")~   Snort sortant

Ensuite, exécutez la commande suivante pour démarrer Snort sur votre interface réseau en utilisant vos règles personnalisées :

snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i eth0 -A alert_fast -s 65535 -k none

Ensuite, ouvrez une autre interface de terminal et pinguez votre serveur. Vous devriez voir l’erreur ICMP sur le premier terminal :

10/11-16:45:23.848071 [] [1:1000001:1] "Test de connexion ICMP" [] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:23.848071 [] [1:384:8] "PROTOCOL-ICMP PING" [] [Classification: Activité diverse] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [] [1:366:11] "PROTOCOL-ICMP PING Unix" [] [Classification: Activité diverse] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [] [1:1000001:1] "Test de connexion ICMP" [] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [] [1:384:8] "PROTOCOL-ICMP PING" [] [Classification: Activité diverse] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
^C signal d'interruption capté
== arrêt
10/11-16:45:25.353007 [] [1:366:11] "PROTOCOL-ICMP PING Unix" [] [Classification: Activité diverse] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:25.353007 [] [1:1000001:1] "Test de connexion ICMP" [] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:25.353007 [] [1:384:8] "PROTOCOL-ICMP PING" [**] [Classification: Activité diverse] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18

Créer un fichier de service Systemd pour Snort

Ensuite, créez un fichier de service systemd pour gérer Snort via systemd.

nano /etc/systemd/system/snort3.service

Ajoutez les configurations suivantes :

[Unit]
Description=Daemon Snort
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 eth0 -m 0x1b -u root -g root
ExecStop=/bin/kill -9 $MAINPID

[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier, puis rechargez le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarrez et activez le service Snort avec la commande suivante :

systemctl enable --now snort3

Vous pouvez maintenant vérifier l’état de Snort en utilisant la commande suivante :

systemctl status snort3

Vous obtiendrez la sortie suivante :

? snort3.service - Daemon Snort
     Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-11 16:48:28 UTC; 17s ago
   Main PID: 95898 (snort)
      Tasks: 2 (limit: 4579)
     Memory: 233.6M
        CPU: 2.007s
     CGroup: /system.slice/snort3.service
             ??95898 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eth0 -m 0x1b -u root -g >

Oct 11 16:48:29 ubuntu2204 snort[95898]:          num match states: 9885
Oct 11 16:48:29 ubuntu2204 snort[95898]:              memory scale: MB
Oct 11 16:48:29 ubuntu2204 snort[95898]:              total memory: 3.42574
Oct 11 16:48:29 ubuntu2204 snort[95898]:            pattern memory: 0.550588
Oct 11 16:48:29 ubuntu2204 snort[95898]:         match list memory: 1.25256
Oct 11 16:48:29 ubuntu2204 snort[95898]:         transition memory: 1.58402
Oct 11 16:48:29 ubuntu2204 snort[95898]:         fast pattern only: 6822
Oct 11 16:48:29 ubuntu2204 snort[95898]: --------------------------------------------------
Oct 11 16:48:29 ubuntu2204 snort[95898]: pcap DAQ configuré pour passif.
Oct 11 16:48:29 ubuntu2204 snort[95898]: Début du traitement des paquets

Conclusion

Félicitations ! Vous avez réussi à installer et configurer Snort 3 sur Ubuntu 22.04. Vous pouvez maintenant mettre en œuvre Snort dans votre organisation et la protéger contre les attaques DDoS. N’hésitez pas à me poser des questions si vous en avez.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.