Vous êtes sur la page 1sur 75

République du Sénégal

Université Cheikh Anta Diop de Dakar


Faculté des sciences et techniques
Section informatique

TP Sécurité Réseau

Etudiant :
Khady Dioumel Dieng
Ndeye Sène
Birane Kebe Professeur :
Saliou Thioune Madame Maal

Master 2 : Sir Jour


Année Académique :2020/2021
KHADY DIOUMEL MASTER2 SIR JOUR 1
PLAN :
TP1 : Filtrage
1. Architecture de notre réseau
2. Installation et configuration du serveur FTP
3. Installation et configuration du serveur http
4. Configuration du firewall
5. Configuration de la machine cliente
6. Teste de connectivité entre les machines
7. Application des règles de filtrage avec iptables
8. Teste des règles de filtrages

TP2 : Mise en place d’un système de détection


d’intrusion dans un réseau
1. Qu’est-ce qu’un IDS
2. Présentation de SNORT
3. Installation de SNORT
4. Configuration de SNORT en tant que NIDS
5. Test des règles
6. Installation de Barnyard2
7. Installation de PulledPork
8. Installation de BASE
9. Création de scripts de démarrage pour Snort et Barnyard2
sur Ubuntu 14

KHADY DIOUMEL MASTER2 SIR JOUR 2


TP1 : Filtrage
1. Architecture de notre réseau
Dans notre architecture, on a un deux sous-réseaux : le sous-réseau A et le sous-
réseau B (192.168.2.0/24).

Un serveur firewall avec deux cartes réseaux et qui fera office d’un routeur. La
carte eth0 appartient au sous-réseau A, c’est pour accéder à internet et
communique avec le client et la carte eth1 appartient au sous-réseau B, c’est pour
communiquer avec le serveur http et le serveur ftp.

Sous-réseau B
Sous-réseau A

KHADY DIOUMEL MASTER2 SIR JOUR 3


2. Installation et Configuration du serveur FTP

Définition

Afin de stocker des fichiers sur un serveur et de les récupérer à partir de celui-ci,
le protocole de transfert FTP (File Transfer Protocol) basé sur TCP/IP a été
spécifié dans la RFC 959 en 1985. Ce protocole permet de transporter les données
via les ports 20 (client) et 21 (serveur) d’une part, et de créer, éditer et lire les
répertoires d’autre part. Pour utiliser une telle structure client-serveur, les
utilisateurs n’ont qu’à se connecter au serveur à l’aide d’un client FTP et d’un
compte utilisateur spécifique.

Installation du serveur FTP

vsftpd est un démon FTP disponible dans Ubuntu. Il est facile à installer, à
configurer et à entretenir. Pour installer vsftpd vous pouvez exécuter la
commande suivante : sudo apt install vsftpd

KHADY DIOUMEL MASTER2 SIR JOUR 4


Configuration d'un FTP anonyme

Par défaut, vsftpd n'est pas configuré pour permettre le téléchargement


anonyme. Si vous souhaitez activer le téléchargement anonyme, modifiez le
fichier de configuration /etc/vsftpd.conf en changeant :

KHADY DIOUMEL MASTER2 SIR JOUR 5


Configuration du serveur FTP avec authentification des utilisateurs

Par défaut, vsftpd est configuré pour authentifier les utilisateurs système et leur
permettre de télécharger des fichiers. Si vous voulez que les utilisateurs puissent
envoyer des fichiers sur le serveur, modifiez /etc/vsftpd.conf :

Maintenant lorsque des utilisateurs de votre système se connectent au FTP, leur


répertoire racine sera leur répertoire personnel (/home/user) dans lequel ils
pourront télécharger (download/upload), créer des répertoires etc…
De même, par défaut, les utilisateurs anonymes ne sont pas autorisés à envoyer
des fichiers vers le serveur FTP. Pour modifier ce paramètre, vous pouvez
supprimer le commentaire de la ligne suivante puis redémarrer vsftpd :

Sécuriser le serveur FTP

Des options de /etc/vsftpd.conf permettent de sécuriser un tant soit peu vsftpd.


Par exemple, les utilisateurs peuvent être confinés dans leur répertoire personnel
en dé-commentant :

KHADY DIOUMEL MASTER2 SIR JOUR 6


Après avoir dé-commenté l'option ci-dessus, créez le
fichier /etc/vsftpd.chroot_list contenant la liste des utilisateurs à restreindre.

De manière similaire, le fichier /etc/ftpusers contient les utilisateurs qui ne sont


pas autorisés à se connecter au serveur FTP. La liste par défaut inclut root,
daemon, nobody, etc. Écrivez dans cette liste les utilisateurs que vous ne souhaitez
pas voir connectés au FTP.

Pour configurer FTPS, modifiez /etc/vsftpd.conf et ajoutez en fin de fichier :

KHADY DIOUMEL MASTER2 SIR JOUR 7


Redémarrez maintenant vsftpd, et les utilisateurs non-anonymes seront désormais
forcés d'utiliser FTPS : sudo restart vsftpd

Configuration de la carte réseau

KHADY DIOUMEL MASTER2 SIR JOUR 8


3. Installation et Configuration du serveur http

Définition

Apache est le serveur Web le plus couramment utilisé sur les systèmes Linux. Les
serveurs Web sont utilisés pour remettre des pages Web demandées par des
ordinateurs clients. Les clients demandent et affichent habituellement des pages
Web en utilisant des applications de navigation Web telles
que Firefox, Opera, Chromium, ou Internet Explorer.
Les utilisateurs saisissent une URL (adresse internet) pour pointer vers un serveur
web au moyen de son nom de domaine complet (FQDN) et un chemin d'accès à
la ressource requise.

Installation

Le serveur web Apache2 est disponible dans Ubuntu Linux. Pour installer
Apache2 :

KHADY DIOUMEL MASTER2 SIR JOUR 9


Saisissez la commande suivante : sudo apt-get install apache2

KHADY DIOUMEL MASTER2 SIR JOUR 10


Configuration de la carte réseau

KHADY DIOUMEL MASTER2 SIR JOUR 11


4. Configuration du serveur firewall

Définition

Un firewall est un appareil de sécurité réseau qui surveille le trafic réseau entrant
et sortant et autorise ou bloque les paquets de donnés en se basant sur un ensemble
de règles de sécurité. Il est chargé de dresser une barrière entre votre réseau interne
et le trafic entrant provenant de sources externes (comme Internet) afin de bloquer
le trafic malveillant des virus et des pirates.

Configuration des cartes réseaux

Notre firewall a deux cartes réseaux eth0 pour aller sur internet et eth1 qui
appartient au réseau 192.168.2.0/24.

KHADY DIOUMEL MASTER2 SIR JOUR 12


On active le Forward

Mais pour le moment la carte eth1 n’accède pas à internet pour qu’elle puisse y
accéder il faut qu’on fasse le routage.
Pour se faire il faut éditer le fichier /etc/sysctl.conf pour autoriser le forwarding
(on décommente la ligne : net.ipv4.ip_forward=1).
Il faut taper la commande : vi /etc/sysctl.conf

La deuxième commande est la commande iptables il faut identifier l’interface qui


est connecter à l’internet, dans notre cas c’est eth0 :

iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE

KHADY DIOUMEL MASTER2 SIR JOUR 13


Maintenant la carte eth1 peut accèder à l’internet.

Pour l’automatisation de la commande iptables, on peut soit créer un fichier et y


enregistrer les commande iptables ou on créer un script dans le repertoire
/etc/init .d/ correspondant pour que l’application de filtrage de paquets fonctionne
automatiquement, en suite on édite le fichier crée.

Pour inscrire en tant que service un script, dans le répertoire /etc/init .d/, il faut
utiliser :
Code bash: update-rc.d nom_du_script defaults
Dans notre cas j’ai créé un fichier /etc/iptables_regle pour enregistrer les règles
de filtrage.

On ajoute une route pour le réseau 192.168.2.0/24

KHADY DIOUMEL MASTER2 SIR JOUR 14


5. Configuration de la machine cliente

Pour la machine client, on doit lui ajouter une route c’est-à-dire un gateway qui
sera l’adresse IP de la carte de notre serveur firewall qui accède à internet, dans
notre cas c’est eth0

6. Teste de la connectivité entre les machines

Teste de ping de la machine client sur le serveur http

KHADY DIOUMEL MASTER2 SIR JOUR 15


Teste de ping du serveur http sur la machine client

KHADY DIOUMEL MASTER2 SIR JOUR 16


Ping du client sur le serveur FTP

KHADY DIOUMEL MASTER2 SIR JOUR 17


Ping du serveur FTP sur le client

Connexion de la machine cliente au serveur FTP

KHADY DIOUMEL MASTER2 SIR JOUR 18


Connexion de la machine cliente au serveur http

KHADY DIOUMEL MASTER2 SIR JOUR 19


7. Application des règles de filtrage avec iptables

On utilise la table FILTER qui contient les chaines de règles de filtrage et la


chaine FORWORD qui pour les règles à appliquer aux paquets qui traversent
(routage).

Pour le serveur Http

On veut permettre au client d’effectuer le service http sur le serveur http mais lui
refusait toute autre action sur le serveur http.

Voici les règles a appliqué pour effectuer cela :

➢ La première règle permet au client d’effectuer des requêtes http sur le


serveur http que ce soit sur le port 443 (sécurisé) ou le port 80 (non
sécurisé).

➢ La dernière règle interdit tous les trafics venant du client et dont la


destination est le serveur http.

Pour le serveur ftp

On veut empêcher au client d’effectuer le service ftp sur le serveur ftp mais lui
autoriser toute autre action sur le serveur ftp.

Voici les règles a appliqué pour effectuer cela :

KHADY DIOUMEL MASTER2 SIR JOUR 20


➢ La première règle interdire au client d’effectuer des requêtes ftp sur le
serveur ftp que ce soit sur le port 21 (d’écoute) ou 20 (données par défaut).

➢ La dernière règle autorise toute autre trafic venant du client et dont la


destination est le serveur ftp.

La capture ci-dessous montre l’ensemble des règles iptables que j’ai enregistré
dans le fichier /etc/iptables_regle.

On tape la commande cat /etc/iptables_regle

KHADY DIOUMEL MASTER2 SIR JOUR 21


8. Teste des règles de filtrage

Sur le serveur FTP

➢ Dans le cadre en rouge, avant qu’on applique le filtrage, on voie que le


client arrive à se connecté au serveur ftp.

➢ Dans le cadre en bleu, c’est après avoir appliqué le filtrage, on voie que le
client n’arrive plus à se connecte au serveur ftp.

➢ Dans le cadre en vert, le client lance une requête ping au serveur ftp et ça
passe.

KHADY DIOUMEL MASTER2 SIR JOUR 22


Teste de ping sur le serveur http

➢ Sur le cadre en vert, on a le résultat de la requête ping avant l’application


des règles de filtrage. La requête ping sur serveur http passe.

➢ Sur le cadre en bleu, on a le résultat de la requête ping après avoir appliqué


le filtrage. La requête ping sur le serveur http ne passe plus.

KHADY DIOUMEL MASTER2 SIR JOUR 23


TP2 : Mise en place d’un système de détection
d’intrusion dans un réseau
1. Qu‘est-ce qu’un IDS
Un système de détection d'intrusion (ou IDS : Intrusion détection 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éussie comme échouées des intrusions.

Les systèmes de détection d'intrusion vont se baser sur l'écriture de règles de


filtrage écrites par les utilisateurs pour effectuer leurs analyses.

Certains IDS ont la possibilité de répondre aux menaces qu'ils ont détectées, ces
IDS avec capacité de réponse sont des systèmes de prévention d'intrusion.

Pourquoi faut-il mettre un IDS

Schématiquement il existe deux types de sécurité en informatique que sont la


sécurité active et la sécurité passive. La sécurité active regroupe les actions sur
les flux (autorisations et interdictions etc. ...) ; on y retrouve les pares-feux, les
relais applicatifs, les relayeurs de messagerie etc... La sécurité passive, elle n'agit
pas sur les flux entrants. Elle permet de reconnaître les flux hostiles. On y
retrouve les IDS.

En effet la sécurité active n'est pas suffisante puisque le pare-feu ne peut contrer
toutes les menaces, les techniques d’hacking sont en constante innovation et il
existe de potentielles failles selon les fonctionnalités des systèmes sans compter
que ces failles sont inhérentes pour certains OS. Les IDS permettent de remonter
la source des attaques, la détection des techniques employées et les traces en cas
d'intrusion qui constituent des preuves tangibles. Ils sont une aide indispensable
pour se prémunir des intrusions en prenant des mesures de sécurité adéquates .

KHADY DIOUMEL MASTER2 SIR JOUR 24


2. Présentation de SNORT
Il existe plusieurs logiciels de détection d'intrusion mais notre choix c'est porté
sur snort.
SNORT est un IDS open source disponible sur les plateformes Windows, linux
et mac et offre une mise en œuvre basique rapide. De nouveaux plugins et règles
sont régulièrement proposés. Les documentions pour comprendre et
implémenter SNORT sont nombreux et les fichiers d'alertes utilisables pour sa
configuration sont très complets (entêtes des paquets, lien vers la description de
l'attaque...).
Snort est un système de détection d'intrusion (ou NIDS) libre publié sous
licence GNU GPL. À l'origine écrit par Marty Roesch , il appartient
actuellement à Sourcefire. Des versions commerciales intégrant du matériel et
des services de supports sont vendues par Sourcefire. Snort est un des plus actifs
NIDS Open Source et possède une communauté importante contribuant à son
succès.

KHADY DIOUMEL MASTER2 SIR JOUR 25


Fonctionnement de SNORT

SNORT permet d'analyser le trafic réseau de type IP, il peut être configuré pour
fonctionner en trois modes :

- Le mode sniffer : dans ce mode, SNORT lit les paquets circulant sur le réseau
et les affiche d'une façon continue sur l'écran ;

- Le mode « packet logger » : dans ce mode SNORT journalise le trafic réseau


dans des répertoires sur le disque ;

- Le mode détecteur d'intrusion réseau (NIDS) : dans ce mode, SNORT analyse


le trafic du réseau, compare ce trafic à des règles déjà définies par l'utilisateur et
établit des actions à exécuter ;

Avantages

Snort est un logiciel libre qui concurrence habilement les outils de détection
d'intrusion commerciaux.

Le format ouvert de ses signatures est donc rapidement devenu un standard que
les IDS commerciaux commencent à intégrer. Cela représente un avantage
important, il s'agit là d'une des principales raisons du succès de Snort. En effet,
les IDS commerciaux ont tendance à cacher le contenu de leurs signatures (la
séquence précise que recherche le logiciel pour identifier une attaque), cela
oblige les clients à dépendre d'eux pour bénéficier de nouvelles règles de
détections d'intrusions. Snort, lui, offre un format ouvert et documenté qui
permet d'écrire les règles de son choix.

Un autre avantage est la gratuité au niveau des licences qui permet d'installer des
sondes Snort en tout point du réseau.

Inconvénients

- SNORT a plus tendance que d'autres IDS à fournir des fausses alertes (en
moyenne, 70% des alertes remontées sont fausses), par exemple à cause de
petites signatures comme phf qui déclenchent une alerte alors que cela peut être
une simple requête contenant les mots "dhfudge" ou "muphf".

KHADY DIOUMEL MASTER2 SIR JOUR 26


- Ne peut pas traiter les flux cryptés car la signature de ces attaques dépend
évidemment du type de cryptage et aussi

Évidemment de la clé employée (c'est une des raisons). Mais de toute manière, à
ma connaissance, aucun IDS ne sait traiter des flux cryptés.

- Un IDS fonctionne en mode binaire : il traduit toute requête comme une


intrusion ou comme une trame "permise".

Il n'existe pas d'intermédiaire entre les deux. Tout ce qui est possible, est de
donner un degré d'importance aux alertes

3. Installation de SNORT
Pour commencer nous avons utilisé Ubuntu 14

La configuration de Snort sur Ubuntu à partir du code source se compose de


quelques étapes : télécharger le code, le configurer, compiler le code, l'installer
dans un répertoire approprié et enfin configurer les règles de détection.

Nous allons commencer par créer un dossier de téléchargement temporaire dans


notre répertoire personnel, puis se placer sur ce dossier avec la commande ci-
dessous.

mkdir ~/snort_src

cd ~/snort_src

Ensuite, nous allons installer tous les prérequis des référentiels Ubuntu :

sudo apt-get install -y build-essential


libpcap-dev libpcre3-dev libdumbnet-dev bison
flex zlib1g-dev liblzma-dev openssl libssl-dev

KHADY DIOUMEL MASTER2 SIR JOUR 27


Pour Ubuntu 14, nous devons compiler à partir des sources :

sudo apt-get install -y autoconf libtool pkg-config

KHADY DIOUMEL MASTER2 SIR JOUR 28


cd ~/snort_src

wget
https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/n
ghttp2-1.17.0.tar.gz

KHADY DIOUMEL MASTER2 SIR JOUR 29


Le téléchargement ne prendra que quelques secondes. Une fois terminé, on
extraie le code source et accédez au nouveau répertoire avec les commandes
suivantes.

tar -xzvf nghttp2-1.17.0.tar.gz

cd nghttp2-1.17.0

KHADY DIOUMEL MASTER2 SIR JOUR 30


6

La dernière version nécessite une étape supplémentaire pour reconfigurer


automatiquement le DAQ avant d'exécuter la configuration. Utilisons la
commande ci-dessous qui nécessite l'installation d'autoconf et de libtool.

autoreconf -i –force

automake
autoconf

Ensuite, on va exécuter le script de configuration en utilisant ses valeurs par


défaut, puis compilez le programme avec make et installez enfin DAQ.

./configure --enable-lib-only

KHADY DIOUMEL MASTER2 SIR JOUR 31


Make

sudo make install

KHADY DIOUMEL MASTER2 SIR JOUR 32


Snort lui-même utilise quelque chose appelé bibliothèque d'acquisition de
données (DAQ) pour faire des appels abstraits aux bibliothèques de capture de
paquets. Téléchargez le dernier package source DAQ sur le site Web de Snort
avec la commande wget en dessous. Remplacez le numéro de version dans la
commande si une source plus récente est disponible.

cd ~/snort_src

Ensuite, téléchargez le code source de Snort avec wget.

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

KHADY DIOUMEL MASTER2 SIR JOUR 33


Une fois le téléchargement terminé, extrayez la source et accédez au nouveau
répertoire avec ces commandes.

tar -xvzf daq-2.0.7.tar.gz

cd daq-2.0.7

KHADY DIOUMEL MASTER2 SIR JOUR 34


./configure

Make

sudo make install

KHADY DIOUMEL MASTER2 SIR JOUR 35


Avec le DAQ installé, vous pouvez commencer avec Snort, revenez au dossier
de téléchargement.

cd ~/snort_src

Ensuite, on va télécharger le code source de Snort avec wget. Vous pouvez


trouver le dernier numéro de version sur la page de téléchargement de Snort.
Remplacez-le dans la commande suivante si nécessaire.

wget https://snort.org/downloads/snort/snort-
2.9.18.tar.gz

KHADY DIOUMEL MASTER2 SIR JOUR 36


Une fois le téléchargement terminé, extrayez la source et accédez au nouveau
répertoire avec ces commandes.

tar -xvzf snort-2.9.18.tar.gz

cd snort-2.9.18

Configurez ensuite l'installation avec sourcefire activé, exécutez make et make


install.

./configure --enable-sourcefire

KHADY DIOUMEL MASTER2 SIR JOUR 37


Make

sudo make install

Ensuite, on doit configurer Snort pour notre système. Cela inclut la modification
de certains fichiers de configuration, le téléchargement des règles que Snort
suivra et l'utilisation de Snort pour un test.

Commençons par mettre à jour les bibliothèques partagées à l'aide de la


commande ci-dessous.

KHADY DIOUMEL MASTER2 SIR JOUR 38


sudo ldconfig

Puisque l'installation de Snort place le binaire Snort dans /usr/local/bin/snort,


c'est une bonne politique de créer un lien symbolique vers /usr/sbin/snort :

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

La dernière étape de notre installation de Snort consiste à tester que le binaire


Snort fonctionne. Exécutons Snort avec l’otption -V, ce qui amène Snort à
afficher le numéro de version :

4. Configuration de SNORT en tant que NIDS


Dans cette partie, nous allons configurer Snort pour qu'il s'exécute en tant que
NIDS en créant les fichiers et dossiers que Snort attend lorsqu'il s'exécute en tant
que NIDS.
Tout d'abord, pour des raisons de sécurité, nous souhaitons que Snort s'exécute
en tant qu'utilisateur non privilégié. Nous créons un utilisateur et un groupe
snort à cet effet :

KHADY DIOUMEL MASTER2 SIR JOUR 39


sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g
snort
Ensuite, nous devons créer un certain nombre de fichiers et de dossiers que
Snort attend lors de l'exécution en mode NIDS. Nous changerons ensuite la
propriété de ces fichiers pour notre nouvel utilisateur snort. Snort stocke les
fichiers de configuration dans /etc/snort, les règles dans /etc/snort/rules,
/usr/local/lib/snort_dynamicrules, et stocke ses journaux dans /var/log/snort :
Créez les répertoires Snort :
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/rules/iplists

sudo mkdir /etc/snort/preproc_rules


sudo mkdir /usr/local/lib/snort_dynamicrules
sudo mkdir /etc/snort/so_rules

Créons des fichiers qui stockent les règles et les listes d'adresses IP
sudo touch /etc/snort/rules/iplists/black_list.rules
sudo touch /etc/snort/rules/iplists/white_list.rules

KHADY DIOUMEL MASTER2 SIR JOUR 40


sudo touch /etc/snort/rules/local.rules
sudo touch /etc/snort/sid-msg.map

sudo mkdir /var/log/snort


sudo mkdir /var/log/snort/archived_logs

Définissez les autorisations pour les nouveaux répertoires en conséquence.


sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /var/log/snort/archived_logs

sudo chmod -R 5775 /etc/snort/so_rules


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

KHADY DIOUMEL MASTER2 SIR JOUR 41


Changer de propriétaire sur les dossiers :
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

Exécutez les commandes ci-dessous pour déplacer les fichiers répertoriés ci-
dessus dans le dossier /etc/snort :
cd ~/snort_src/snort-2.9.18/etc/

sudo cp *.conf* /etc/snort


sudo cp *.map /etc/snort
sudo cp *.dtd /etc/snort

cd ~/snort_src/snort-2.9.18/src/dynamic-
preprocessors/build/usr/local/lib/snort_dynamic
preprocessor/
sudo cp *
/usr/local/lib/snort_dynamicpreprocessor/

KHADY DIOUMEL MASTER2 SIR JOUR 42


Le dossier de configuration de Snort et la structure de fichiers devraient
maintenant ressembler à ce qui suit

Modification du fichier de configuration Snort


Le fichier de configuration de Snort est stocké dans /etc/snort/snort.conf et
contient tous les paramètres que Snort utilisera lorsqu'il sera exécuté en mode
NIDS. C'est un gros fichier et contient un certain nombre d'options pour la
configuration de Snort.
Tout d'abord, nous devons commenter les lignes qui amènent Snort à importer
l'ensemble de fichiers de règles par défaut. Nous le faisons parce que nous
utiliserons PulledPork pour gérer nos ensembles de règles, ce qui enregistre

KHADY DIOUMEL MASTER2 SIR JOUR 43


toutes les règles dans un seul fichier. Le moyen le plus simple de commenter
toutes ces lignes est d'utiliser sed pour ajouter le caractère "#" (dièse) à ces
lignes. Ceci est accompli en exécutant la commande suivante :
sudo sed -i 's/include \$RULE\_PATH/#include
\$RULE\_PATH/' /etc/snort/snort.conf

Ensuite, nous devons éditer manuellement quelques lignes dans le fichier


snort.conf. Utilisez vi (ou votre éditeur préféré) pour éditer
/etc/snort/snort.conf :
sudo vi /etc/snort/snort.conf

Recherchez les sections ci-dessous dans le fichier de configuration et modifiez


les paramètres pour refléter les exemples ici.

KHADY DIOUMEL MASTER2 SIR JOUR 44


Une fois que avez terminé avec le fichier de configuration, enregistrez les
modifications et quittez l'éditeur.

Exécutons la commande suivante pour que Snort teste le fichier de


configuration :
sudo snort -T -c /etc/snort/snort.conf -i eth0

5. Test des règles


Tout d'abord, nous devons éditer le fichier local.rules :
sudo vi /etc/snort/rules/local.rules

Saisissez le texte suivant et enregistrez le fichier :

KHADY DIOUMEL MASTER2 SIR JOUR 45


alert icmp any any -> $HOME_NET any (msg:"ICMP test detected";
GID:1; sid:10000001; rev:001; classtype:icmp-event;)

Enregistrez le fichier local.rules et quittez l'éditeur.


Démarrez Snort avec les options de la console -A pour imprimer les alertes sur
stdout. Vous devrez sélectionner la bonne interface réseau avec l'adresse IP
publique de votre serveur, par exemple eth0.

Exécutez Snort avec la commande ci-dessous, en modifiant les paramètres selon


les besoins spécifiques à votre configuration
sudo /usr/local/bin/snort -A console -q -u
snort -g snort -c /etc/snort/snort.conf -i eth0
Une fois que vous avez démarré Snort avec la commande ci-dessus, vous devez
utiliser un autre ordinateur ou une autre fenêtre de terminal pour envoyer un
ping à l'interface sur laquelle vous avez demandé à Snort d'écouter.
Ping

KHADY DIOUMEL MASTER2 SIR JOUR 46


Vous devez utiliser ctrl-c pour arrêter snort de s'exécuter après la sortie ci- vous
Nous avions créé avec succès une règle pour que Snort soit alerté.

6. Installation de Barnyard2
Il est gourmand en ressources pour Snort d'écrire des événements en mode
lisible par l'homme, soit sur la console, soit sur du texte fichiers, comme nous
l'avons fait ci-dessus. Idéalement, nous aimerions que les événements Snort
soient stockés dans une base de données MySQL afin que nous peut afficher,
rechercher et profiler les événements. Pour obtenir efficacement les événements
Snort dans une base de données MySQL, nous utilisons Barnyard2. Nous
configurons Snort pour générer des événements sous forme binaire dans un
dossier, puis nous faisons lire Barnyard2 ces événements de manière asynchrone
et les insérer dans notre base de données MySQL.
Installez d'abord les prérequis Barnyard2 :
sudo apt-get install -y mysql-server libmysqlclient-
dev mysql-client autoconf libtool

Vous serez invité à saisir le mot de passe root MySQL.

KHADY DIOUMEL MASTER2 SIR JOUR 47


Ensuite, nous devons éditer le snort.conf :

KHADY DIOUMEL MASTER2 SIR JOUR 48


sudo vi /etc/snort/snort.conf

Nous devons ajouter une ligne qui dit à Snort de sortir les événements sous
forme binaire (afin que Barnyard2 puisse les lire). Après la ligne 520 dans
/etc/snort/snort.conf (une ligne qui est un exemple commenté), ajoutez la ligne
suivante et enregistrez le fichier :
output unified2: filename snort.u2, limit 128

Ensuite, nous devons obtenir, configurer et installer Barnyard2


cd ~/snort_src
wget https://github.com/firnsy/barnyard2/archive/master.tar.gz
-O barnyard2-Master.tar.gz

KHADY DIOUMEL MASTER2 SIR JOUR 49


tar zxvf barnyard2-Master.tar.gz

cd barnyard2-master

autoreconf -fvi -I ./m4

Barnyard2 a besoin d'accéder à la bibliothèque dnet.h, que nous avons installée


plus tôt avec le package Ubuntu libdumbnet.

KHADY DIOUMEL MASTER2 SIR JOUR 50


Cependant, Barnyard2 attend un nom de fichier différent pour cette
bibliothèque. Créez un lien logiciel de dnet.h vers dubmnet.h:
sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h
sudo ldconfig

Selon l'architecture de votre système (x86 ou x64), choisissez d'exécuter l'une


des lignes suivantes pour indiquer à Barnyard2 où se trouvent les bibliothèques
MySQL :
./configure --with-mysql --with-mysql-
libraries=/usr/lib/x86_64-linux-gnu

Continuez ensuite l'installation :


Make
sudo make install

KHADY DIOUMEL MASTER2 SIR JOUR 51


Barnyard2 est maintenant installé dans /usr/local/bin/barnyard2. Testez pour
vous assurer que Barnyard2 est correctement installé en exécutant :

Pour configurer Snort pour utiliser Barnyard2, nous devons copier quelques
fichiers du package source :

sudo cp ~/snort_src/barnyard2-
master/etc/barnyard2.conf /etc/snort/

sudo mkdir /var/log/barnyard2


sudo chown snort.snort /var/log/barnyard2

sudo touch /var/log/snort/barnyard2.waldo


sudo chown snort.snort /var/log/snort/barnyard2.waldo

KHADY DIOUMEL MASTER2 SIR JOUR 52


Étant donné que Barnyard2 enregistre les alertes dans notre base de données
MySQL, nous devons créer cette base de données, ainsi qu'un utilisateur
MySQL « snort » pour accéder à cette base de données. Exécutez les
commandes suivantes pour créer la base de données et l'utilisateur MySQL.

$ mysql -u root -p

mysql> create database snort;


mysql> use snort;
mysql> source ~/snort_src/barnyard2-
master/schemas/create_mysql
mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY
'MYSQLSNORTPASSWORD';
mysql> grant create, insert, select, delete, update
on snort.* to 'snort'@'localhost';
mysql> exit

KHADY DIOUMEL MASTER2 SIR JOUR 53


Maintenant que la base de données Snort a été créée, nous devons informer
Barnyard2 des détails de la base de données. Modifiez le fichier de
configuration Barnyard2 :
sudo vi /etc/snort/barnyard2.conf

et à la fin du fichier, ajoutez cette ligne :


output database: log, mysql, user=snort
password=MYSQLSNORTPASSWORD dbname=snort host=localhost
sensor name=sensor01

Le mot de passe étant dans le fichier barnyard2.conf, nous devons empêcher les
autres utilisateurs de le lire :

Exécutez Snort en mode alerte (la commande que nous exécutons ci-dessous est
la façon dont Snort sera normalement exécuté lorsque nous le configurerons
en tant que démon, sauf que nous n'utilisons pas le drapeau -D qui le fait
s'exécuter en tant que démon).
KHADY DIOUMEL MASTER2 SIR JOUR 54
sudo /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Exécutez Barnyard2 avec la commande suivante :


sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w
/var/log/snort/barnyard2.waldo \ -g snort -u snort

Ping l'adresse IP de l'interface spécifiée ci-dessus (eth0).

KHADY DIOUMEL MASTER2 SIR JOUR 55


KHADY DIOUMEL MASTER2 SIR JOUR 56
Une fois que vous appuyez sur Ctrl-c pour arrêter barnyard2, il imprimera des
informations sur les enregistrements qu'il a traités.
Nous voulons maintenant vérifier la base de données MySQL pour voir si
Barnyard2 a écrit les événements. Exécutez ce qui suit commande pour
interroger la base de données MySQL, vous serez invité à saisir le mot de passe
utilisateur MySQL snort :
mysql -u snort -p -D snort -e "select count(*) from
event"

7. Installation de PulledPork
PulledPork est un script perl qui téléchargera, combinera et installera/mettra à
jour des ensembles de règles snort à partir de divers emplacements à l'usage de
Snort.
Installez les prérequis PulledPork :
sudo apt-get install -y libcrypt-ssleay-perl liblwp-
useragent-determined-perl

KHADY DIOUMEL MASTER2 SIR JOUR 57


Téléchargez la dernière version de PulledPork et installez-la. Ici, nous copions le
fichier perl réel dans /usr/local/bin et les fichiers de configuration nécessaires
dans /etc/snort :
cd ~/snort_src

wget
https://github.com/shirkdog/pulledpork/archive/master
.tar.gz -O pulledpork-master.tar.gz

tar xzvf pulledpork-master.tar.gz

KHADY DIOUMEL MASTER2 SIR JOUR 58


cd pulledpork-master/

sudo cp pulledpork.pl /usr/local/bin


sudo chmod +x /usr/local/bin/pulledpork.pl
sudo cp etc/*.conf /etc/snort

Testez que PulledPork s'exécute en exécutant la commande suivante, en


recherchant la sortie ci-dessous :

KHADY DIOUMEL MASTER2 SIR JOUR 59


Maintenant que nous sommes sûrs que PulledPork fonctionne, nous devons le
configurer :
Apportez les modifications suivantes au fichier pullpork.conf. Partout où vous
voyez ‹oinkcode›, entrez votre oinkcode sur le site Web de Snort.
Pour obtenir un oinkcode il faut d’abord avoir un compte sur le site de snort

KHADY DIOUMEL MASTER2 SIR JOUR 60


KHADY DIOUMEL MASTER2 SIR JOUR 61
Une fois qu’on a notre oinkcode on peut commencer les modifications sur le
fichier
sudo vi /etc/snort/pulledpork.conf

Ligne 19 : saisissez votre oinkcode le cas échéant (ou commentez s'il n'y a pas
de oinkcode)

Ligne 29 : Dé-commenter pour l'ensemble de règles sur les menaces émergentes


(non testé avec ce guide)

Ligne 74 : remplacez par : rule_path=/etc/snort/rules/snort.rules

Ligne 89 : remplacez-le par : local_rules=/etc/snort/rules/local.rules

KHADY DIOUMEL MASTER2 SIR JOUR 62


Ligne 92 : remplacez-le par : sid_msg=/etc/snort/sid-msg.map

Ligne 96 : remplacez par : sid_msg_version=2

Ligne 119 : remplacez par : config_path=/etc/snort/snort.conf

Ligne 133 : remplacez par : distro=Ubuntu-12-04

Ligne 141 : remplacez par : black_list=/etc/snort/rules/iplists/black_list.rules

KHADY DIOUMEL MASTER2 SIR JOUR 63


Ligne 150 : remplacez par : IPRVersion=/etc/snort/rules/iplists

Exécutez la commande suivante :


sudo /usr/local/bin/pulledpork.pl -c
/etc/snort/pulledpork.conf -l

Après l'exécution de cette commande (cela prend un certain temps), vous


devriez maintenant voir snort.rules dans /etc/snort/rules, et .so rules dans
/usr/local/lib/snort_dynamicrules. Pulled Pork combine tous les ensembles de
règles qu'il télécharge dans ces deux fichiers. Vous devez vous assurer d'ajouter
la ligne : include $RULE_PATH/snort.rules au fichier snort.conf, ou les règles
de porc tiré ne seront jamais lues en mémoire au démarrage de Snort :
sudo vi /etc/snort/snort.conf

KHADY DIOUMEL MASTER2 SIR JOUR 64


Ajoutez la ligne suivante pour permettre à snort d'utiliser les règles téléchargées
par PulledPork (ligne 547), après la ligne pour local.rules :

Puisque nous avons modifié snort.conf, nous devons tester que Snort se charge
correctement en mode NIDS avec les règles PulledPork incluses :
sudo snort -T -c /etc/snort/snort.conf -i eth0

Le nombre d'événements signalés doit être supérieur à ce que vous avez vu la


dernière fois que vous avez exécuté cette commande. Maintenant que nous
sommes sûrs que PulledPork fonctionne correctement, nous voulons ajouter
PulledPork à la crontab de root pour qu'il s'exécute quotidiennement :

Arrêtez les démons en cours d'exécution des tests précédents :

KHADY DIOUMEL MASTER2 SIR JOUR 65


8. Installation de BASE
BASE est une interface graphique Web simple pour Snort. Les produits
alternatifs incluent Snorby, Splunk, Sguil, AlienVault OSSIM et tout serveur
syslog.
Il y a une légère différence entre BASE sur Ubuntu 14 et 16 : BASE nécessite
PHP 5, qui n'est pas disponible dans les archives Ubuntu 16 (Ubuntu est passé à
PHP 7 dans cette version), nous devons donc utiliser un PPA sur Ubuntu 16
pour installer les packages php 5 :
dans Ubuntu 14, on peut juste installer les librairies nécessaires :
sudo apt-get install -y apache2 libapache2-mod-php5
php5 php5-mysql php5-common php5-gd php5-cli php-pear

KHADY DIOUMEL MASTER2 SIR JOUR 66


prochaine installation Pear image Graph :
sudo pear install -f --alldeps Image_Graph

Téléchargez et installez ADODB


cd ~/snort_src
wget
https://sourceforge.net/projects/adodb/files/adodb-
php5-only/adodb-520-for-php5/adodb-5.20.8.tar.gz

tar -xvzf adodb-5.20.8.tar.gz

KHADY DIOUMEL MASTER2 SIR JOUR 67


sudo mv adodb5 /var/adodb
sudo chmod -R 755 /var/adodb

Téléchargez BASE et copiez sur Apache root


cd ~/snort_src
wget
http://sourceforge.net/projects/secureideas/files/BAS
E/base-1.4.5/base-1.4.5.tar.gz

tar xzvf base-1.4.5.tar.gz

KHADY DIOUMEL MASTER2 SIR JOUR 68


sudo mv base-1.4.5 /var/www/html/base/

Créez le fichier de configuration BASE :


cd /var/www/html/base
sudo cp base_conf.php.dist base_conf.php

Modifiez maintenant le fichier de configuration :


sudo vi /var/www/html/base/base_conf.php

$BASE_urlpath = '/base';

$DBlib_path = '/var/adodb/';

$alert_dbname = 'snort';

KHADY DIOUMEL MASTER2 SIR JOUR 69


$alert_host = 'localhost';
$alert_port = '';
$alert_user = 'snort';
$alert_password = 'MySqlSNORTpassword';

Dans le fichier de base conf.php, vous voudrez également commenter la ligne


457 (nous ne voulons pas de la police DejaVuSans) et décommenter (supprimer
les deux barres obliques inverses) de la ligne 459, permettant une police vide. La
section pour les polices (à partir de la ligne 456) devrait ressembler à ceci :

Définissez des autorisations sur le dossier BASE, et comme le mot de passe se


trouve dans le fichier de base conf.php, nous devons empêcher les autres
utilisateurs de le lire :
sudo chown -R www-data:www-data /var/www/html/base
sudo chmod o-r /var/www/html/base/base_conf.php

Redémarrer Apache
sudo service apache2 restart

KHADY DIOUMEL MASTER2 SIR JOUR 70


La dernière étape pour configurer BASE se fait via http :
Accédez à http://ServerIP/base/index.php et cliquez sur le lien de la page de
configuration (remplacez ServerIP par l'IP de votre serveur Snort).

Cliquez sur le bouton Créer BASE AG en haut à droite de la page.

Cliquez sur le lien de la page principale

KHADY DIOUMEL MASTER2 SIR JOUR 71


9. Création de scripts de démarrage pour Snort et
Barnyard2 sur Ubuntu 14

Nous allons finaliser la configuration de notre service Snort en créant des scripts
Upstart pour les démons Snort et Barnyard2.

Création des scripts de démarrage pour Ubuntu 14


Créez d'abord le script Snort Upstart :
sudo vi /etc/init/snort.conf

Nous allons insérer le contenu ci-dessous dans ce script Upstart.

KHADY DIOUMEL MASTER2 SIR JOUR 72


description "Snort NIDS service"
stop on runlevel [!2345]
start on runlevel [2345]
script
exec /usr/sbin/snort -q -u snort -g snort -c
/etc/snort/snort.conf -i eth0 -D
end script

Maintenant, rendez le script exécutable et dites à Upstart que le script existe :


sudo chmod +x /etc/init/snort.conf
initctl list | grep snort
snort stop/waiting

Script pour barnyard


sudo vi /etc/init/barnyard2.conf

Avec le contenu suivant :


description "barnyard2 service"
stop on runlevel [!2345]
start on runlevel [2345]
script

KHADY DIOUMEL MASTER2 SIR JOUR 73


exec /usr/local/bin/barnyard2 -c
/etc/snort/barnyard2.conf -d /var/log/snort -f
snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -
u snort -D -a /var/log/snort/archived_logs
end script

Maintenant, rendez le script exécutable et dites à Upstart que le script existe :

sudo chmod +x /etc/init/barnyard2.conf


initctl list | grep barnyard
barnyard2 stop/waiting

Redémarrez l'ordinateur et vérifiez que les deux services sont démarrés :

KHADY DIOUMEL MASTER2 SIR JOUR 74


KHADY DIOUMEL MASTER2 SIR JOUR 75

Vous aimerez peut-être aussi