Sie sind auf Seite 1von 19

Lab 5 :

Installation et configuration du SNORT


sous linux
Table des matières
Liste des figures…………………………………………………………………………………………………………………………………i
Introduction............................................................................................................................................. 1
I. Présentation de SNORT ................................................................................................................... 1
1) Système de Détection d’Intrusion : IDS ....................................................................................... 2
2) Modes de fonctionnement de SNORT ......................................................................................... 3
3) L’emplacement de SNORT ........................................................................................................... 4
II. Installation du SNORT ...................................................................................................................... 5
1) Installation des prérequis ............................................................................................................ 5
2) Installation du snort-2.9.16.1 et daq-2.0.7.................................................................................. 6
III. Configuration du SNORT.............................................................................................................. 7
1) Configuration des règles.............................................................................................................. 7
2) Modification dans le fichier de configuration ............................................................................. 9
3) Exécution du script d’initialisation ............................................................................................ 10
4) Validation de la configuration ................................................................................................... 11
IV. Test de fonctionnement du SNORT ........................................................................................... 12
1) SNORT en mode écoute ............................................................................................................ 12
2) Détection d’intrusion à l’aide d’un fichier trace........................................................................ 14
Conclusion ............................................................................................................................................. 16

i
Liste des figures

Figure 1: Logo de SNORT ...................................................................................................................... 2


Figure 2: Fonctionnement de base de SNORT ........................................................................................ 2
Figure 3: Les positions possibles d’un NIDS .......................................................................................... 4
Figure 4: Vérification de l'installation des prérequis................................. Error! Bookmark not defined.
Figure 5: Contenu de /etc/snort ............................................................................................................... 9
Figure 6: Configuration du réseau ......................................................................................................... 10
Figure 7: Configuration des règles ........................................................................................................ 10
Figure 8: contenu du fichier /etc/sysconfig/snort ...................................... Error! Bookmark not defined.
Figure 9: Validation de la configuration ............................................................................................... 12
Figure 10: démarrage du SNORT ......................................................................................................... 12
Figure 11: Adresse IP de la machine ..................................................................................................... 13
Figure 12: Envoi d’une requête ping ..................................................................................................... 13
Figure 13: Capture de trafic par SNORT .............................................................................................. 13
Figure 14: Statistiques des actions réalisées sur les paquets capturés ................................................... 14
Figure 15: Classification des paquets capturés selon le protocole utilisé .............................................. 14
Figure 16: Fichier d’alertes ................................................................................................................... 15

ii
Installation et configuration de SNORT.

Introduction
L’ouverture d’un réseau local et son interconnexion avec le réseau Internet lui rend
potentiellement vulnérable à un grand nombre d’attaques. L’augmentation et la diversification
de ces attaques ainsi que l’apparition continue de nouvelles attaques aggravent la situation et le
risque en résultant devient très important.
Pour faire face à ce problème, on essaye d’éliminer les vulnérabilités et les faiblesses du réseau
avec la mise en place d’un système de sécurité comprenant de pare-feu et des mécanismes
d’authentification.
Bien qu’un système de sécurité soit implémenté, on ne peut pas garantir qu’aucune attaque
n’aura lieu. Partant de ce fait, il est donc indispensable de mettre en place un système de
détection d’intrusion.
Il existe principalement deux types d’IDS. Le premier type est formé par les détecteurs
d’intrusion basés sur l’hôte (HIDS), ceux-ci analysent et contrôlent uniquement l’activité et les
informations de l’hôte sur lequel est installé le HIDS. La deuxième catégorie est formée par les
détecteurs d’intrusion basés sur le réseau (NIDS). Ce deuxième type d’IDS sera présenté plus
tard dans ce présent rapport.
L’objet de ce travail est de présenter un exemple de logiciel libre NIDS qui est SNORT.
Dans la première partie, nous allons commencer par présenter SNORT. Ensuite, nous allons
présenter comment installer et configurer SNORT. Enfin, un exemple d’utilisation de ce logiciel
sera expliqué.

I. Présentation de SNORT
SNORT, maintenu par Sourcefire, est un système de détection d'intrusion libre pour le réseau
(ou NIDS) publié sous licence GNU GPL. Sa configuration est gérée par des règles. Comme
tout logiciel Open Source, les règles de SNORT peuvent être éditées, modifiées et qu'une
communauté d'utilisateur partage librement.
SNORT est un des plus actifs NIDS Open Source et possède une communauté importante
contribuant à son succès. C'est également l’outil le plus utilisé en matière de détection
d'intrusion par beaucoup d'entreprises et organisations gouvernementales. Sa large utilisation

1
est due à ses performances et au fait qu’il est multiplateforme, et fonctionne sur la plupart des
OS (Windows, linux, mac, Solaris, BSD et certains routeurs).

Figure 1: Logo de SNORT

1) Système de Détection d’Intrusion : IDS


Un système de détection d'intrusion (Intrusion Detection System) est un mécanisme
destiné à repérer des activités anormales ou suspectes sur la cible analysée (un réseau ou
un hôte). Il permet ainsi d'avoir une connaissance sur les tentatives réussies comme
échouées des intrusions.

Un des IDS particuliers, on trouve les NIDS (Network Based Intrusion Detection System)
qui détectent les intrusions au niveau du réseau.

Comme étant un NIDS, SNORT commence par faire la capture de trafic réseau. Ayant
une large base de données des signatures d’attaques possibles, SNORT analyse la capture
de trafic. En se basant sur le principe de recherche de motif ou du pattern matching,
SNORT compare la capture à l’ensemble des motifs de signatures qu’il possède. Si une
corrélation entre une signature et la capture en question est trouvée, SNORT génère alors
une alerte. Cette alerte peut se faire de plusieurs façons : soit par l'envoi de mails
automatique, la sauvegarde de logs via le protocole syslog, ou plus généralement via la
sauvegarde de ces logs dans une base de données interne pour une lecture par un front-
end, ou l'utilisation de ces logs par des applications tierces.

Figure 2: Fonctionnement de base de SNORT

2
2) Modes de fonctionnement de SNORT
SNORT peut être configuré à fonctionner en 3 modes. Ces modes sont :

❖ Mode écoute ou Sniffer mode : Dans ce mode, SNORT va tout simplement


intercepter les paquets circulant sur le réseau et les afficher en temps réel sur
l’écran.
❖ Mode log de paquets ou Packet Logger mode : Le log de paquet permet
l'archivage des paquets circulant sur le réseau. Il est possible de limiter les
logs à certains critères, comme une plage d'adresse IP grâce à un certains
nombres d’options.
❖ Mode détection d’intrusion réseau ou Network Intrusion Detection System
(NIDS) mode : Le mode NIDS permet à SNORT d'adopter un comportement
particulier en cas de détection d'une succession de chaînes de caractères
(motif) dans les paquets interceptés, selon les règles définies dans les fichiers
d'extension ".rules".

Les règles de SNORT sont décrites dans un langage simple et composées de deux parties :
l’entête de la règle et les options de la règle.

L'entête de la règle contient alors :

❖ L'action de la règle ou la réaction de SNORT.


❖ Le protocole qui est utilisé pour la transmission des données pour lequel on
doit analyser les paquets (SNORT en considère trois: TCP, UDP et ICMP).
❖ Les adresses IP source et destination et leur masque.
❖ Les ports source et destination sur lesquels il faudra vérifier les paquets.

Les options de la règle contiennent :

❖ Le message d'alerte.
❖ Les conditions qui déterminent l'envoi de l'alerte en fonction du paquet
inspecté.

La définition de ces règles dépend de l’emplacement de notre NIDS SNORT dans le réseau.

3
3) L’emplacement de SNORT
Il existe plusieurs endroits stratégiques où il convient de placer un NIDS. Le schéma suivant
illustre un réseau local ainsi que les trois positions que peut y prendre un NIDS :

Figure 3: Les positions possibles d’un NIDS


Lorsque SNORT est placé dans la position (1), il va pouvoir détecter l'ensemble des attaques
frontales, provenant de l'extérieur, en amont du firewall. Ainsi, beaucoup d'alertes seront
remontées ce qui rendra les logs difficilement consultables. Cette position va de même,
augmenter le nombre de « faux positive » c'est-à-dire le nombre de fausses alertes générées
par SNORT.

En position (2), SNORT est placé sur la DMZ. Il détectera les attaques qui n'ont pas été
filtrées par le firewall et qui relèvent d'un certain niveau de compétence. Les logs seront ici
plus clairs à consulter puisque les attaques bénignes ne seront pas recensées.

Lorsque SNORT est placé en amont des postes clientes en position (3), il peut se rendre
compte des attaques internes, provenant du réseau local de l'entreprise. Il peut être judicieux
d'en placer un à cet endroit étant donné le fait que 80% des attaques proviennent de l'intérieur.
De plus, si des chevaux de Troie (Trojans) ont contaminé les postes clientes suite à une
navigation peu méfiante sur internet par exemple, ils pourront être facilement identifiés pour
être ensuite éradiqués.

4
II. Installation du SNORT
Dans cette partie, nous détaillerons l'installation à partir des sources.

Cette installation comprend en fait deux étapes :

❖ L’installation des prérequis : Dans cette étape, nous avons installé tous les outils
nécessaires pour le bon fonctionnement du SNORT.
❖ L’installation du snort-2.9.16.1 et daq-2.0.7

1) Installation des prérequis


Il y a des programmes nécessaires au lancement du SNORT et dépend de la distribution linux
utilisée. Pour notre cas, nous avons installé cet outil sous la distribution Ubuntu 18.04. Nous
avons besoin donc d’installer les paquetages suivants :

• Gcc : GCC (GNU Compiler Collection) est une suite de logiciels libres de compilation.
On l'utilise dans le monde Linux dès que l'on veut transcrire du code source en langage
machine, c'est le plus répandu des compilateurs. La suite gère le C et ses dérivés mais aussi
le Java ou encore le Fortran. Le noyau Linux dépend dans sa compilation des possibilités
pointues de son compilateur C.

• Flex : outil de compilation par défaut sur les systèmes unix. Flex construit un analyseur
lexical à partir d’un ensemble de règles/actions décrites par des expressions régulières.

• Bison : de même Bison est un outil de compilation. Il construit un compilateur d’un


langage décrit par un ensemble de règles et actions d’un programme d’une grammaire
LARL.

• Zlib : est logiciel libre utilisé pour la compression des données.

• Pcap (packet capture) : est une interface de programmation permettant de capturer un


trafic réseau. Elle est implémentée sous les systèmes GNU/Linux, FreeBSD, NetBSD,
OpenBSD et Mac OS X par la bibliothèque libpcap.

• Pcre : Perl Compatible Regular Expression (PCRE) désigne un type d'expression


rationnelle compatible avec celles du langage Perl. PCRE désigne aussi la bibliothèque qui
implante ce type d'expressions rationnelles.

• Libdnet : libdnet fournit une interface simplifiée, portable à plusieurs routines de mise
en réseau de bas niveau, y compris le pare-feu de réseau, recherche d'interface réseau et la
manipulation, tunneling IP.
5
• Tcpdump : tcpdump est un analyseur de paquets en ligne de commande. Il permet
d'obtenir le détail du trafic visible depuis une interface réseau

Pour installer ces bibliothèques, on tape la commande suivante :

sudo apt install -y gcc libpcre3-dev zlib1g-dev libluajit-5.1-dev libpcap-dev openssl


libssl-dev libnghttp2-dev libdumbnet-dev bison flex libdnet autoconf libtool

2) Installation du snort-2.9.16.1 et daq-2.0.7


La première phase dans l’installation de l’outil SNORT est le téléchargement des deux
paquetages snort-2.9.16.1 et daq-2.0.7 depuis le site official du SNORT:
https://www.snort.org/downloads

Ensuite, il faut extraire ces deux paquetages dans le répertoire /usr/local/src. Le Data Aquisition
(DAq) package est une nouveauté de Snort 2.9.* Et il est impératif de le construire en premier:

mkdir ~/snort_src && cd ~/snort_src

wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz

tar -xvzf daq-2.0.7.tar.gz

wget https://www.snort.org/downloads/snort/snort-2.9.16.tar.gz

tar -xvzf snort-2.9.16.tar.gz

Afin de les installer, il est nécessaire de compiler snort-2.9.16.1 et daq-2.0.7 en faisant comme
suit :

cd daq-2.0.7

autoreconf -f -i

./configure && make && sudo make install

cd ../snort-2.9.16

./configure --enable-sourcefire && make && sudo make install

Les trois commandes configure, make et make install sont nécessaires dans le cas de
compilation des sources.

6
❖ Configure : Cette commande est un script permettant d'adapter le programme à la
machine courante
❖ Make : Cette commande peut prendre plusieurs minutes/heures selon la configuration
et le logiciel à compiler. En cas de problème, la compilation s'arrêtera en renvoyant
un message d'erreur. Si tout se passe normalement de nombreuses lignes vont être
affichées, puis le programme reviendra à la ligne de commande.
❖ Make install : permet d’installer l’application.

Afin de commencer la configuration nécessaire, il faut commencer par mettre à jour la liste des
librairies partagées et faire un lien symbolic vers le répertoire par défaut où Snort est installé
(/usr/local/bin/snort ).

Par la suite, il faut créer la structure de répertoirede SNORT.

sudo ldconfig

sudo ln -s /usr/local/bin/snort /usr/sbin/snort

sudo mkdir -p /etc/snort/rules

sudo mkdir /var/log/snort

sudo mkdir /usr/local/lib/snort_dynamicrule

III. Configuration du SNORT


1) Configuration des règles
Les règles de SNORT sont composées de deux parties distinctes : le header et les options.

❖ Le header permet de spécifier le type d’alerte à générer (alert, log et pass) et d’indiquer
les champs de base nécessaires au filtrage : le protocole ainsi que les adresses IP et
ports sources et destination.
❖ Les options, spécifiées entre parenthèses, permettent d’affiner l’analyse, en
décomposant la signature en différentes valeurs à observer parmi certains champs du
header ou parmi les données.

Exemple de règle

Alert tcp any any -> 192.168.1.0/24 80 (flags :A ;\content : “passwd”; msg: “détection de
`passwd’ “ ;)

7
Cette règle permet de générer un message d’alerte “détection de passwd” lorsque le trafic à
destination d’une machine du réseau local 192.168.1.0/24 vers le port 80, contient la chaîne «
passwd » (spécifié par l’utilisation du mot-clé « content »), et que le flag ACK du header TCP
est activé (flags : A).

Les règles basiques pour le fonctionnement du SNORT sont disponibles sur le site officiel du
SNORT. Nous devons donc télécharger le paquetage snortrules-snapshot-29160.tar.gz via
l’URL suivant https://www.snort.org/downloads.

Avant tous, nous configurons les permissions d’accès pour les différents répertoires de SNORT
en exécutant les commandes suivantes :

sudo chmod -R 5775 /etc/snort

sudo chmod -R 5775 /var/log/snort

sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules

sudo chown -R snort:snort /etc/snort

sudo chown -R snort:snort /var/log/snort

sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules

wget https://www.snort.org/rules/snortrules-snapshot-29160.tar.gz?oinkcode=oinkcode -O
~/registered.tar.gz

sudo tar -xvf ~/registered.tar.gz -C /etc/snort

NB : Remplacer le oinkcode en rouge avec votre code personnel (après inscription sur le site
officiel de snort).

Dans l’étape de la configuration, il est nécessaire de se déplacer dans le répertoire /etc. Pour
éviter toute sorte de confusion entre les fichiers, on crée un répertoire nommé snort et on place

sudo touch /etc/snort/rules/white_list.rules

sudo touch /etc/snort/rules/black_list.rules

sudo touch /etc/snort/rules/local.rules

sudo cp ~/snort_src/snort-2.9.16/etc/*.conf* /etc/snort

sudo cp ~/snort_src/snort-2.9.16/etc/*.map /etc/snort

8
dedans tous les fichiers de configuration relatifs au snort. Puis, on extrait les règles et on crée
deux fichiers white_list.rules et black_list.rules.

Après ces modifications, le contenu du /etc/snort sera comme suit :

Figure 4: Contenu de /etc/snort


• Rules : Contient les fichiers qui définissent tous règles. Les fichiers .rules contenus dans
/etc/snort/rules/ sont des fichiers contenant, des règles pour un usage bien particulier.

• So_rules (Shared Object Rules)

• Preproc_rules contient les règles relatives aux préprocesseurs.

Remarque : Les préprocesseurs permettent d’étendre les fonctionnalités de SNORT. Ils sont
exécutés avant le lancement du moteur de détection et après le décodage du paquet IP. Le paquet
IP peut être modifié ou analysé de plusieurs manières en utilisant le mécanisme de
préprocesseur.

2) Modification dans le fichier de configuration


Pour configurer SNORT, il faut éditer le fichier /etc/snort/snort.conf. Avant cette étape, il est
nécessaire de créer un utilisateur et un groupe SNORT (si ce n’est pas déjà fait).

#useradd snort -u 40000 –d /var/log/snort –s /sbin/nologin –c SNORT_IDS

#groupadd –g 40000 snort

#cd /etc/snort

#chown –R snort :snort *

Ces commandes permettent de créer un utilisateur et un groupe snort pour qu’il soit le
propriétaire du répertoire /etc/snort.

Dans le fichier de configuration, nous nous intéressons à deux sections :

❖ Configuration réseau

9
Cette section nous permet d'indiquer à SNORT les réseaux sur lesquels il doit être à l'écoute. Il
peut notamment surveiller une seule adresse IP ou un groupe d'adresse IP associés aux machines
sur le réseau. Dans notre cas, on va configurer la sonde SNORT pour sniffer la totalité du réseau
192.168.1.0/24. Pour ce faire nous avons modifié la variable HOME_NET et
EXTERNAL_NET du fichier de configuration: ipvar HOME_NET 192.168.1.0/24 et ipvar
EXTERNAL_NET !$HOME_NET.

Figure 5: Configuration du réseau

❖ Configuration des règles

SNORT peut détecter des attaques et signaler des alertes quand l'une d'entre elle surgit. Il doit
savoir où se trouvent les règles sur le système de fichier. Pour ce faire, il faut modifier les
variables RULE_PATH, SO_RULE_PATH et PREPROC_RULE dans le fichier «
/etc/snort/rules ».

Figure 6: Configuration des règles

3) Exécution du script d’initialisation


Le script d’initialisation est aussi disponible sur le site pour éviter de taper plusieurs
commandes. Le script doit être téléchargé, mis sous le répertoire /etc/init.d et nommé snort.

Maintenant, on crée un lien symbolique dans /usr/sbin pour pointer sur le fichier binaire du
SNORT en utilisant les commandes suivantes:

#cd /usr/sbin

#ln –s /usr/local/bin/snort snort

#chmod 700 snort

10
Tous les fichiers spécifiques du SNORT doivent être propriétaire à l’utilisateur snort avec un
droit d’accès 700.

#cd /var/log

#mkdir snort

#chmod 700 snort

#chown snort:snort snort

#cd /usr/local/lib

#chown -R snort:snort snort*

#chown -R snort:snort snort_dynamic*

#chown -R snort:snort pkgconfig

#chmod -R 700 snort*

#chmod -R 700 pkgconfig

#cd /usr/local/bin

#chown -R snort:snort daq-modules-config

#chown -R snort:snort u2*

#chmod -R 700 daq-modules-config

#chmod 700 u2*

#cd /etc

#chown -R snort:snort snort

#chmod -R 700 snort

4) Validation de la configuration
Pour vérifier si la configuration est validée ou non, on tape la commande suivante :

#cd /usr/local/bin

#./snort –T –i p3p1 –u snort –g snort –c /etc/snort/snort.conf

Pour exécuter les commandes du SNORT, il faut être sous le répertoire /usr/local/bin car il
contient l’exécutable du SNORT.

La commande ./snort –T –i p3p1 –u snort –g snort –c /etc/snort/snort.conf permet de tester


la validation de la configuration.

• -T : permet de faire le diagnostic du fichier de configuration

• -i : permet de spécifier l’interface du réseau

11
• -u : permet de spécifier le nom de l’utilisateur

• -g : permet de spécifier le groupe

• -c : permet de spécifier le fichier de configuration

L’exécution de cette commande, permet d’afficher le résultat suivant :

Figure 7: Validation de la configuration


Tant que la configuration est bien validée, on peut démarrer le SNORT à l’aide de la commande
suivante ./snort start. Mais, il faut qu’on soit dans le répertoire /etc/init.d:

Figure 8: démarrage du SNORT

IV. Test de fonctionnement du SNORT


1) SNORT en mode écoute
Le premier test de SNORT que nous avons fait est le test de mode sniffing. Ce mode devient
fonctionnel en tapant la commande snort –v. Lorsqu’on est en train d’observer les paquets
circulant à travers le réseau, on envoie une requête ping à l’hôte contenant SNORT.

❖ Lancement du mode d’écoute :

# cd /usr/local/bin

# snort –v –i p3p1 –u snort –g snort –c /etc/snort/snort.conf

Une fois cette commande est tapée, SNORT lance sa sonde pour sniffer et capturer le trafic
circulant dans le réseau spécifié dans le fichier de configuration.

❖ Envoi de la requête ping

12
A partir d’une autre machine, on envoie une requête ping pour s’assurer que du bon
fonctionnement de SNORT.

Tout d’abord, on a vérifié l’adresse IP de la machine pour être sûr que le paquet détecté est
celui de notre machine

Figure 9: Adresse IP de la machine


Puis, on envoie la requête :

Figure 10: Envoi d’une requête ping


❖ Observation des paquets ICMP

De l’autre côté, on observe le trafic capturé :

Figure 11: Capture de trafic par SNORT


Lorsqu’on arrête l’exécution de SNORT en mode écoute, un rapport de statistiques est généré.

13
Figure 12: Statistiques des actions réalisées sur les paquets capturés
SNORT classe les paquets reçus selon le protocole utilisé.

Figure 13: Classification des paquets capturés selon le protocole utilisé


A noter que SNORT génère d’autres types de statistiques par exemple selon le type
d’applications (il s’agit d’une application cliente ou d’une application venant de la part d’un
serveur), le type d’alertes, nombre et type de sessions ouvertes etc…

2) Détection d’intrusion à l’aide d’un fichier trace


Pour tester SNORT, on peut travailler sur le trafic circulant en temps réel ou sur un fichier où
le trafic est archivé et enregistré. Dans ce rapport, on va utiliser un fichier qui contient une trace
d’attaque intitulé « attack-trace.pcap_ ». Ce fichier peut être téléchargé à partir de ce site :
http://www.honeynet.org/node/504.

Pour identifier les adresses IP des machines hôtes impliquées dans cet échange de trafic, on va
utiliser l’outil tshark qui est un outil d’analyse de trafic réseau. Pour ce faire, on va utiliser la
commande suivante :

14
Figure 15 : Adresses IP des machines participantes à l’échange de trafic.

Tshark a donné une liste d’adresses IP qu’il a pu identifier dans le fichier de trace. Maintenant
pour identifier l’adresse IP de la machine attaquante, on utilise cette commande :

Snort –A full –q –r attack-trace.pcap_ -l /var/log/snort –c /etc/snort/snort.conf

Snort [option]:

• -A full: ajoute l’alerte au fichier des alertes avec l’entête complet et décodé ainsi
que le message d’alerte.
• -q: ne pas afficher la bannière et l'initialisation d'informations.
• -r: lire le fichier de capture. Snort sera en mesure de lire et de traiter le fichier
passé en argument.
• -l /var/log/snort: définir le répertoire de log dans / var / log / snort.

Nous affichons le fichier d’alertes.

Figure 14: Fichier d’alertes

15
D’après ce message d’alerte, nous pouvons conclure que la machine attaquante opère avec un
OS Windows et a comme adresse IP 98.114.205.102. Le message d’alertes contient aussi un
lien qui explique la vulnérabilité exploitée (Dans ce cas, la vulnérabilité est le débordement de
tampon dans la pile) ainsi que l’attaque réalisée.

Conclusion
Durant ce travail, nous avons présenté un outil de détection d'intrusions libre qui est SNORT.
SNORT est un IDS très puissant et performant. Il est l'outil le plus utilisé dans ce domaine.
De même, nous avons détaillé la méthode d'installation de SNORT ainsi que sa configuration.
Bien qu'il soit un IDS plus précisément un NIDS, SNORT peut être configuré à fonctionner
en tant qu'un IPS et se comportera de manière proactive plutôt que réactif. Cela est réalisé par
l'intégration de SNORT-inline.

16

Das könnte Ihnen auch gefallen