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
MASTER2 SIR JOUR Année Académique :2020/2021 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
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
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
2.Installation et Configuration du serveur FTP
Définition
MASTER2 SIR JOUR 3
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
Configuration d'un FTP anonyme
MASTER2 SIR JOUR 4
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 :
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 :
MASTER2 SIR JOUR 5
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 :
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.
MASTER2 SIR JOUR 6
Pour configurer FTPS, modifiez /etc/vsftpd.conf et ajoutez en fin de fichier :
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
MASTER2 SIR JOUR 7
3.Installation et Configuration du serveur http
Définition
MASTER2 SIR JOUR 8
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 :
Saisissez la commande suivante : sudo apt-get install apache2
MASTER2 SIR JOUR 9
MASTER2 SIR JOUR 10
Configuration de la carte réseau
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.
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
MASTER2 SIR JOUR 13
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
Maintenant la carte eth1 peut accèder à l’internet.
Maintenant 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.
MASTER2 SIR JOUR 14
On ajoute une route pour le réseau 192.168.2.0/24
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
MASTER2 SIR JOUR 15
Teste de ping du serveur http sur la machine client
MASTER2 SIR JOUR 16
Ping du client sur le serveur FTP
MASTER2 SIR JOUR 17
Ping du serveur FTP sur le client
MASTER2 SIR JOUR 18
Connexion de la machine cliente au serveur FTP
Connexion de la machine cliente au serveur http
MASTER2 SIR JOUR 19
6 .Application des règles de filtrage avec iptables
MASTER2 SIR JOUR 20
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 :
MASTER2 SIR JOUR 21
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
MASTER2 SIR JOUR 22
Teste des règles
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 ca passe.
Teste de ping sur le serveur http
MASTER2 SIR JOUR 23
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 appliquer le
filtrage.
La requête ping sur le serveur http ne passe plus.
MASTER2 SIR JOUR 24
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
MASTER2 SIR JOUR 25
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 .
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.
MASTER2 SIR JOUR 26
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
MASTER2 SIR JOUR 27
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".
- 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 :
MASTER2 SIR JOUR 28
sudo apt-get install -y build-essential
libpcap-dev libpcre3-dev libdumbnet-dev bison
flex zlib1g-dev liblzma-dev openssl libssl-dev
Pour Ubuntu 14, nous devons compiler à partir des sources :
sudo apt-get install -y autoconf libtool pkg-config
MASTER2 SIR JOUR 29
cd ~/snort_src
wget
https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/n
ghttp2-1.17.0.tar.gz
MASTER2 SIR JOUR 30
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
MASTER2 SIR JOUR 31
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
MASTER2 SIR JOUR 32
Make
sudo make install
MASTER2 SIR JOUR 33
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
MASTER2 SIR JOUR 34
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
MASTER2 SIR JOUR 35
./configure
Make
sudo make install
MASTER2 SIR JOUR 36
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
MASTER2 SIR JOUR 37
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
MASTER2 SIR JOUR 38
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.
Commencons par mettre à jour les bibliothèques partagées à l'aide de la
commande ci-dessous.
MASTER2 SIR JOUR 39
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 :
MASTER2 SIR JOUR 40
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
MASTER2 SIR JOUR 41
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
MASTER2 SIR JOUR 42
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/
MASTER2 SIR JOUR 43
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 (plus de 500 lignes) et contient un certain nombre
d'options pour la configuration de Snort. Nous ne sommes intéressés que par
quelques paramètres pour le moment
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
MASTER2 SIR JOUR 44
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.
MASTER2 SIR JOUR 45
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 :
MASTER2 SIR JOUR 46
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
MASTER2 SIR JOUR 47
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.
MASTER2 SIR JOUR 48
Ensuite, nous devons éditer le snort.conf :
MASTER2 SIR JOUR 49
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
MASTER2 SIR JOUR 50
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.
MASTER2 SIR JOUR 51
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
MASTER2 SIR JOUR 52
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
MASTER2 SIR JOUR 53
É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
MASTER2 SIR JOUR 54
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).
MASTER2 SIR JOUR 55
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).
MASTER2 SIR JOUR 56
MASTER2 SIR JOUR 57
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. Si vous préférez installer les ensembles de règles manuellement,
consultez l'annexe : Installation des règles Snort Manuellement.
Installez les pré-requis PulledPork :
sudo apt-get install -y libcrypt-ssleay-perl liblwp-
useragent-determined-perl
MASTER2 SIR JOUR 58
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
MASTER2 SIR JOUR 59
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 :
MASTER2 SIR JOUR 60
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. J'ai inclus des
numéros de ligne pour vous aider à identifier l'emplacement de ces lignes dans
le fichier de configuration.
Pour obtenir un oinkcode il faut d’abord avoir un compte sur le site de snort
MASTER2 SIR JOUR 61
MASTER2 SIR JOUR 62
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
MASTER2 SIR JOUR 63
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
MASTER2 SIR JOUR 64
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
MASTER2 SIR JOUR 65
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 :
MASTER2 SIR JOUR 66
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
MASTER2 SIR JOUR 67
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
MASTER2 SIR JOUR 68
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
MASTER2 SIR JOUR 69
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';
MASTER2 SIR JOUR 70
$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
MASTER2 SIR JOUR 71
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
MASTER2 SIR JOUR 72
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. Si vous utilisez Ubuntu 16, vous
devriez aller voir mon article systemD au lieu de cet article.
Création des scripts de démarrage pour Ubuntu 14
Créez d'abord le script Snort Upstart :
sudo vi /etc/init/snort.conf
MASTER2 SIR JOUR 73
Nous allons insérer le contenu ci-dessous dans ce script Upstart. Notez que nous
utilisons les mêmes indicateurs que ceux que nous avons utilisés dans les articles
précédents, donc si Snort a fonctionné correctement pour vous plus tôt, vous ne
devriez pas avoir besoin de modifier l'un de ces indicateurs :
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
MASTER2 SIR JOUR 74
Avec le contenu suivant :
description "barnyard2 service"
stop on runlevel [!2345]
start on runlevel [2345]
script
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 :
MASTER2 SIR JOUR 75
MASTER2 SIR JOUR 76