Vous êtes sur la page 1sur 36

Snort

Rapport de stage

Eric Farman Responsables


Cursus AFPA TSRIT 2011 2012 En entreprise : Laurent Garcia
Lieu : Htel-de-Ville de Pertuis Afpa : Roland Martinet,
du 30/01/2012 au 16/02/2012 Bernard Bienaim, Ren Zinaeve

1
Remerciements
Je tiens remercier M. Roger Pellenc, Maire de pertuis qui a accept ma demande de stage. Je
remercie pour leur aide Laurent Garcia (responsable informatique le la Mairie de Pertuis), et Cdric
Meysson (du service informatique) qui ma plus particulirement paul pendant ce stage.
Je remercie galement lAfpa qui a financ ce stage.

2
Sommaire
Remerciements ....................................................................................................................................... 2
A propos de Snort .................................................................................................................................... 5
Que permet-il de faire exactement ? ...................................................................................................... 5
Primtres du stage ................................................................................................................................ 5
Prsentation de la Ville............................................................................................................................ 6
Prsentation du rseau de la Ville........................................................................................................... 6
Serveurs et interconnexion globale................................................................................................. 7
Systme de virtualisation ................................................................................................................ 7
Topologie communale ..................................................................................................................... 9
Architecture dans lhtel de ville................................................................................................... 10
Topologie de Snort ................................................................................................................................ 11
Modes dutilisation de Snort ................................................................................................................. 12
Mode sniffer .................................................................................................................................. 12
Mode Packet logger....................................................................................................................... 12
Mode NIDS (Network Intrusion Detection System) ...................................................................... 12
Mode IPS (IPS= Intrusion Prevention System) ou Snort inline ...................................................... 12
Installation Ubuntu et composants complmentaires.......................................................................... 12
Installation des fonctionnalits ncessaires...................................................................................... 12
Mettre jour la version dUbuntu .................................................................................................... 12
Composants pour Snort NIDS ................................................................................................................ 13
JpGraph.............................................................................................................................................. 13
Data acquisition API .......................................................................................................................... 13
Libnet ................................................................................................................................................. 13
Installation de Snort NIDS ..................................................................................................................... 14
Cration de la base de donnes ........................................................................................................ 14
Snort rules ......................................................................................................................................... 14
Barnyard2 .......................................................................................................................................... 14
Interfaces rseau ................................................................................................................................... 15
Les rgles ............................................................................................................................................... 16
Mise jour des rgles............................................................................................................................ 18
Oinkmaster .................................................................................................................................... 18
1. Mise jour du ruleset propos par Snort :.......................................................................... 18
2. Mise jour du ruleset propos par Emerging : ................................................................... 19
3. Mise jour du ruleset propos par Bleeding Snort :........................................................... 19

3
On peut prsent tester Snort en NIDS ............................................................................................ 20
Monitoring............................................................................................................................................. 20
Acid (Analysis Console for Intrusion Databases) ............................................................................... 20
Snort report ....................................................................................................................................... 22
Analyse de linterface ........................................................................................................................ 24
Attaques ............................................................................................................................................ 26
Quelques mots sur les techniques anti-Snort ................................................................................... 27
a. Attaque par dni de service....................................................................................................... 27
b. Attaque par insertion ................................................................................................................ 27
c. Attaque par vasion ................................................................................................................... 27
Snort inline ............................................................................................................................................ 28
Les pr-requis : .................................................................................................................................. 28
Une installation dUbuntu mise jour .......................................................................................... 28
Iptables .......................................................................................................................................... 28
Libnet ............................................................................................................................................. 28
Prce ................................................................................................................................................ 29
Libpcap .......................................................................................................................................... 29
Libdnet ........................................................................................................................................... 29
Installation de Snort inline ................................................................................................................ 29
Paramtrage ...................................................................................................................................... 30
Cration des rpertoires ............................................................................................................... 30
Fichiers de configuration ............................................................................................................... 30
Rgles ............................................................................................................................................ 30
Paramtrage du fichier de configuration principal ....................................................................... 30
Activation du mode d'interception ................................................................................................... 31
Activation de ip_queue ................................................................................................................. 31
Paramtrage de iptables ................................................................................................................... 31
Oinkmaster sur Snort inline............................................................................................................... 31
Test de Snort inline................................................................................................................................ 32
Mise en uvre prvoir ............................................................................................................... 33
Conclusion ......................................................................................................................................... 34
Lexique .............................................................................................................................................. 35
Annexes ................................................................................................................................................. 36
Annexe 1. ....................................................................................................................................... 36

4
A propos de Snort
En anglais, Snort signifie renifler . Snort est un systme de dtection
d'intrusion libre (ou NIDS) publi sous licence GNU GPL (Licence dfinissant le
mode dutilisation et de distribution des logiciels libres). l'origine crit par Martin Roesch, il
appartient actuellement Sourcefire. Des versions commerciales intgrant du matriel et des
services de supports sont vendues par Sourcefire. Snort est un des NIDS les plus performants. Il est
soutenu par une importante communaut qui contribue son succs.

Que permet-il de faire exactement ?


Snort capture des paquets sur un point dun rseau IP, analyse le flux obtenu en temps rel, et
compare le trafic rseau une base de donnes dattaques connues. Les attaques connues sont
rpertories dans des librairies de rgles mises jour par plusieurs communauts trs actives.

Signatures

Capture Analyse Alerte

Principe de lanalyse de Snort

Snort peut galement tre utilis avec d'autres modules compatibles (tels que des interfaces
graphiques, des actualisateurs de librairies dattaques indpendants, etc.)

Snort est compatible avec la plus part des OS. Windows, Mac, Linux Ubuntu, CentOS, OpenSuSE

Primtres du stage
Pendant mon stage, je dois installer Snort, le paramtrer et le tester. Je dispose dun PC avec le
logiciel de vitalisation VirtualBox. Je dois raliser mon travail sur Linux Ubuntu.

En prambule : pour des raisons de scurit vidente, je noterai dans ce rapport les adresses IP du
rseau de la Ville de pertuis comme xxx.xxx.xxx.xxx/xx

5
Prsentation de la Ville

Jeffectue mon stage la Ville de Pertuis. Deux mots de prsentation :


Pertuis est une commune du sud Vaucluse, sur la Durance qui sert de limite avec les Bouches-du
Rhne. Une ville en dveloppement qui compte prs de 20 000 habitants. Son Maire est Roger
Pellenc dans son mandat actuel (2008-2014).

Prsentation du rseau de la Ville


Un petit descriptif sur linfrastructure rseau de la ville. Cest une topologie dite en toile tendue. Il
comprend peu prs 200 postes. Un rseau dont le cur est en gigabit desservant les lments du
rseau en FastEthernet.

Cinq plages dadresses IP sont rserves pour :


- quipement rseau (statique)
- Serveurs (statique)
- Utilisateurs DHCP
- Directeurs DHCP
- Service informatique (statique)

Deux serveurs NAS (Network Attached Storage) desservent les quipements de la commune.
Un lhtel de ville et lautre (en cours de dmnagement) au Centre de Gestion Urbain

6
Serveurs et interconnexion globale

Figure 1

Deux Serveurs de fichiers sur des sites distants (un la Police municipale et lautre au Centre
technique municipal). Ils garantissent une bande passante optimale. Ils sont galement des
rpliquats Active Directory, pour prvenir des coupures de liaison.

Un service applicatif pour le service ducation (en bas au centre sur la figure 1).

Serveur ESXI 4.1 hbergeant deux serveurs virtuels pour la sauvegarde et la supervision. La
sauvegarde effectue par Veeam Backup (sauvegarde des machines virtuelles de la baie.)

Systme de virtualisation
- Baie SAN Dell quallogic (Stockage des serveurs)
- 2 serveurs sous VMware
- 2 sous Hyper V (virtualisation version Windows)

7
Figure 2

Sous Hyper V :
- serveurs Citrix (Dport applicatif)

Sous VMware :
lActive Directory, le serveur DHCP, le serveur DNS, le serveur de messagerie, le serveur de bases de
donnes, le serveur WSUS (serveur mises jour), les serveurs applicatifs, les serveurs de fichiers.

8
Topologie communale

Figure 3

A lhtel de ville, quatre antennes wifi servent quatre sites distants, et une fibre optique reliant
l'annexe et le "donjon" (tour ancienne et point culminant au centre de Pertuis) sur lequel quatre
antennes servent quatre autres sites distants.

Les antennes sont des Alvarion (wimax) avec un cryptage de type AES 256 bits.

9
Architecture dans lhtel de ville

Ma situation
sur le rseau

Figure 4

Un routeur SFR relie le rseau linternet.

Un Pare feu Fortigate (en fait, ils sont deux en cluster par scurit),

Le Pare feu fait routeur vers la DMZ et le rseau mairie,

Un routeur en VPN relie le service Jeunesse.

10
Topologie de Snort
O positionner Snort ? Une vraie guerre de religion !

Exemple de rseau

Position 1 : Sur cette position, Snort va pouvoir dtecter l'ensemble des attaques frontales,
provenant de l'extrieur, en amont du firewall. Ainsi, beaucoup d'alertes seront remontes ce qui
rendra les logs difficilement consultables.

Position 2: Si Snort est plac sur la DMZ, il dtectera les attaques qui n'ont pas t filtres par le
firewall et qui relvent d'un certain niveau de comptence. Les logs seront ici plus clairs consulter
puisque les attaques bnignes ne seront pas recenses.

Position 3 : Snort peut ici rendre compte des attaques internes, provenant du rseau 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'intrieur. De plus, si des trojans ont contamin le parc informatique
(navigation peu mfiante sur internet) ils pourront tre ici facilement identifis pour tre ensuite
radiqus.

Ce dernier positionnement est celui que jai test pendant mon stage. Pourquoi ? Le temps du stage
ntant pas infini, jai choisi de mintresser la dtection des intrusions qui ont russi entrer dans
lenceinte du rseau. Le web regorge dactivits malveillantes qui ne nous concernent pas forcment.
Donc la position 3 me parait de loin la plus pertinente. De plus les failles les plus rpandues
proviennent gnralement de lintrieur de lentreprise, et non de lextrieur.

Dans lidal, il faudrait faire le mirroring du flux passant par un switch (manageables bien entendu) et
le soumettre lanalyse de Snort.

11
Modes dutilisation de Snort
Il existe 4 modes dexcutions de Snort :

Mode sniffer
Cest un snif de rseau classique. Inutile de sy attarder, dautres logiciels comme wireshark le font trs bien, et
la valeur relle de Snort nest pas l.

Mode Packet logger


De mme que le mode sniffer, sauf quil crit le rsultat de son observation dans un fichier log. Je ne my
attarderai pas plus.

Mode NIDS (Network Intrusion Detection System)


Cela devient plus intressant. Ce mode fait lobjet de mon stage. Il sagit de lutilisation de Snort avec analyse
du trafic aux vues de rgles de scurits actualises. Snort en NIDS a une valeur dobservation.

Mode IPS (IPS= Intrusion Prevention System) ou Snort inline


Le mode IPS nest plus Snort a proprement parler. Il sagit dune autre version base sur Snort 2.6 appele
Snort inline. Cette version permet de modifier ou de rejeter des paquets. Je dcrirai rapidement sa mise en
place en fin de rapport.

Installation Ubuntu et composants complmentaires


Dans un premier temps, procder linstallation dUbuntu. Il sera ncessaire dadjoindre quelques
services la configuration de base pour permettre le bon fonctionnement de Snort.

Installation des fonctionnalits ncessaires


sudo apt-get install nmap
sudo apt-get install nbtscan
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install php5-mysql
sudo apt-get install php5-gd
sudo apt-get install libpcap0.8-dev
sudo apt-get install libpcre3-dev
sudo apt-get install g++
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libpcap-ruby
sudo apt-get install mysql-server
sudo apt-get install libmysqlclient16-dev

Mettre jour la version dUbuntu


sudo apt-get update
sudo apt-get upgrade

12
Composants pour Snort NIDS
JpGraph
Composant optionnel. Il permet de prsenter des graphiques sur la page daccueil de Snort.
Lien de tlchargement : http://hem.bredband.net/jpgraph/jpgraph-1.27.1.tar.gz
Tlchargement et installation :

sudo wget http://hem.bredband.net/jpgraph/jpgraph-1.27.1.tar.gz


sudo mkdir /var/www/jpgraph
sudo tar zxvf jpgraph-1.27.1.tar.gz
sudo cp -r jpgraph-1.27.1/src /var/www/jpgraph/

Data acquisition API


Indispensable pour les versions de Snort aprs la 2.9.0. Ce composant permet dacqurir des paquets sur le
rseau.
Tlcharger daq-0.6.2.tar.gz
http://www.snort.org/downloads/1339

Installation:

sudo tar zxvf daq-0.6.2.tar.gz


cd daq-0.6.2
sudo ./configure
sudo make
sudo make install

Libnet
Libnet, est une bibliothque opensource. Elle permet de fabriquer et d'injecter facilement des
paquets sur un rseau.
Tlcharger libnet-1.12
http://libnet.google.com/files/libnet-1.12.tgz
installation :

sudo tar zxvf libnet-1.12


cd libnet-1.12/
sudo make
sudo make install
sudo ln s /usr/local/lib/libnet.1.0.1 /usr/lib/ libnet.1

13
Installation de Snort NIDS
Tlcharger la dernire version stable, sur http://www.snort.org/snort-downloads (jutilise la version 2.9.2).
Une fois le fichier tlcharg, ouvrir un terminal et excuter les commandes suivantes :

sudo tar zxvf snort-2.9.2.tar.gz


cd snort-2.9.2
sudo ./configure --prefix=/usr/local/snort --enable-sourcefire
sudo make
sudo make install
sudo mkdir /var/log/snort
sudo mkdir /var/snort
sudo groupadd snort
sudo useradd -g snort snort
sudo chown snort:snort /var/log/snort

Cration de la base de donnes


Linstallation de Snort ncessite la mise en place dun serveur Mysql afin de permettre au NIDS de
stocker les alertes quil gnre mais aussi la console BASE ou Snort report de se connecter et
rcuprer ces alertes.

echo "create database snort;" | mysql -u root -p


mysql -u root -p -D snort < ./schemas/create_mysql

Transfrer les droits root de la base de donn sur lutilisateur snort :

echo "grant create, insert, select, delete, update on snort.* to snort@localhost identified by
'mon-mdp'" | mysql -u root -p

Snort rules
Afin de donner Snort une bonne acquitte dans son observation, il faut intgrer des rgles de
dtection, et les mises jour de ces rgles. Les rgles ruleset officielles sont proposes par Snort
ladresse suivante :
http://www.snort.org/snort-rules/ Le principal inconvnient : ils sont payants. Il y a toute fois un
ruleset disponible pour test lorsque lon sinscrit sur le site de Snort.

Barnyard2
Barnyard est une couche applicative qui exploite les vnements gnrs par Snort. Barnyard permet
de prendre en charge linscription des vnements en base de donnes et libre donc des ressources
Snort qui peut davantage se concentrer sur la dtection des intrusions.

14
Installation de la version courante:
sudo tar zxvf barnyard2-1.9.tar.gz
cd barnyard2-1.9
sudo ./configure --with-mysql
sudo make
sudo make install
sudo cp etc/barnyard2.conf /etc/snort
sudo mkdir /var/log/barnyard2
sudo chmod 666 /var/log/barnyard2
sudo touch /var/log/snort/barnyard2.waldo
sudo chown snort.snort /var/log/snort/barnyard2.waldo

Modifions le fichier /etc/snort/ barnyard2.conf


Remplacer :

#config hostname: snort


#config interface: eth1
#output database: log, mysql, user=root password=azerty dbname=db host=localhost
Par :
config hostname: localhost
config interface: eth1
output database: log, mysql, user=root password=azerty dbname=snort host=localhost

Interfaces rseau
Afin dutiliser Snort, il nous faut donc 2 interfaces rseau. La premire relie la console de
management, et la seconde au rseau sniffer.

Modification du fichier interfaces :


sudo vi /etc/network/interfaces

Et on remplace les lignes :


auto eth1
iface eth1 inet dhcp

Par :
auto eth1
iface eth1 inet static
address xxx.xxx.xxx.xxx

15
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx

On ajoute maintenant ces lignes qui permettront de dmarrer linterface avec son IP :
auto eth1
iface eth1 inet manual
ifconfig eth1 up

On enregistre et on relance :
sudo /etc/init.d/networking restart

Afin de lancer Snort automatiquement sur notre machine, on peut diter le fichier rc.local :

sudo vi /etc/rc.local

On colle les lignes suivantes aprs exit 0 :

ifconfig eth1 up
/usr/local/snort/bin/snort -D -u snort -g snort \
-c /usr/local/snort/etc/snort.conf -i eth1
/usr/local/bin/barnyard2 -c /usr/local/snort/etc/barnyard2.conf \
-G /usr/local/snort/etc/gen-msg.map \
-S /usr/local/snort/etc/sid-msg.map \
-d /var/log/snort \
-f snort.u2 \
-w /var/log/snort/barnyard2.waldo \
-D

On enregistre et on quitte le fichier. Dsormais, en redmarrant ou en utilisant la commande ci-


dessous, on lance Snort :
sudo /etc/init.d/rc.local start

Les rgles
Une convention permet de normaliser lcriture des rgles. Une rgle Snort est compose de deux
parties prsentes sous le format suivant : Header (options).

action protocole adress1 port1 direction adresse2 port2 Options (msg, content .etc)

La partie header dcrit laction, la direction et les adresses sources et destinations des changes
rseau.

16
- Le champ action peut prendre plusieurs valeurs selon laction mener par Snort en dtectant
des paquets rseau rpondant au critre dfinie dans la rgle. Ces valeurs sont les suivantes :
alert : gnre une alerte et log le paquet
log : log le paquet
pass : ignore le paquet
activate : active une rgle dynamique
dynamic : dfinie une rgle dynamique

- Le champ protocole dcrit le protocole utilis pour la communication. Snort supporte les
protocoles IP (TCP, UDP), ICMP.

- Les champs direction renseignent Snort sur la direction des changes rseau ( ->, <->, <- ).

- Les champs adress/port dcrivent les adresses IP et les ports des machines qui changent des
donnes sur le rseau.

- La partie options, elle renseigne Snort sur les caractristiques des paquets signaler et garantissent
une meilleure granularit pour dfinir et appliquer les rgles mais aussi dclencher les actions
quelles dcrivent.

- La partie options est constitue de plusieurs champs qui assurent lanalyse du contenu des paquets
rseau avec plus de finesse. Notons que la manipulation de ces champs ncessite une grande
matrise des protocoles rseau pour pouvoir dcrire les signatures des attaques dtecter.

Pour chaque option le format est nom option : valeur1 [, valeur2,] ci-dessous quelques options
utilises dans la cration des rgles.

msg : spcifie le message qui sera affich dans le log et dans lalerte
reference : fait rfrence aux sites expliquant lattaque dtecte (bugtraq , CVE, etc.)
classtype : dfinit la classe de lattaque (troyen, shellcode etc)
ttl : spcifie la valeur du TTL du paquet
flags : spcifie la prsence dun flag TCP dans le paquet (SYN, Fin, etc)
..etc

Notons que ces options sont intressantes pour dcrire avec prcision les attaques. Donc plus vous
matrisez le formalisme de description des attaques par le biais de ces rgles plus vous aurez des
alertes prcises et vous vitez les faux positifs (flux sain comme analys comme tant une attaque).

17
Analyse de rgle:

alert tcp $EXTERNAL_NET any -> HTTP_SERVERS 80 (msg : web attack code execution ;
uricontent :/bin/sh ; nocase ; classtype : web-application-attacks ; sid :1518 ; rev :1 ; )

Options (msg,
action protocole adress1 port1 direction adresse2 port2
content .etc)
web attack
alert tcp $EXTERNAL_NET any -> HTTP_SERVERS 80
code execution

Cette rgle permet de dtecter des attaques du rseau externe qui consiste excuter une
commande sur le serveur web.

Mise jour des rgles


Snort est une coquille vide sans les librairies de dfinitions rgles dobjets malveillants. Ce sont un
peu comme les dfinitions mettre jour dun antivirus. Un script Pearl conseill par Snort pour
cette mise jour est Oinkmaster. A son lancement, il va tlcharger le ruleset (paquet de rgles),
indique les rpertoires de dcompression et de dploiement de ces rgles. Oinkmaster peut donc
aller chercher les rgles officielles de Snort (actualises et performantes mais payantes) ou des rgles
alternatives (par ex. Bleedingsnort, offert gratuitement par une communaut active et vitamine.)

Oinkmaster
Installation :

sudo apt-get install oinkmaster

Cration des emplacements et des droits pour les tlchargement/dploiement du ruleset :


sudo mkdir /var/log/snortrules/backup
sudo mkdir /var/log/snortrules/rules
sudo chmod 777 /usr/local/snort /etc/snort.conf

1. Mise jour du ruleset propos par Snort :


En sinscrivant sur le site de Snort, on peut obtenir un Oinkcode qui permet Oinkmaster de
demander des rgles de faon identifie. Cela prend la forme dans oinkmaster.conf:
url = http://www.snort.org/pub-bin/oinkmaster.cgi/*************/snortrules-snapshot-2900.tar.gz
(Le Oinkcode tant reprsent par les **********)

En lanant Oinkmaster par la ligne suivante, la mise jour du ruleset seffectue correctement :
oinkmaster.pl -o /etc/snort/rules -b /etc/snort/backup 2>&1

18
La dernire instruction ci-dessus signifie que nous lanons le script perl oinkmaster, les rgles sont
places dans le dossier /etc/snort/rules et si il y a des changements dans les nouvelles rgles, les
rgles courantes vont tre sauvegardes dans le dossier /etc/snort/backup.

Par dfaut, certains fichiers de Snort (rgles, ) sont conservs, et protgs de toute nouvelle mise
jour. Ainsi, par exemple, snort.conf est exclu de la mise jour, ce qui permet de conserver
notamment les paramtres du fichier de configuration. Si jamais une nouvelle version du fichier tait
tlcharge, toutes les donnes seraient perdues, car rcrites par le nouveau. Pour viter cela, il
faut diter le fichier de configuration de Oinkmaster :
skipfile local.rules

2. Mise jour du ruleset propos par Emerging :


Ouvrir comme ci-dessus oinkmaster.conf et ajouter le lien de tlchargement suivant :
http://emergingthreats.net/rules/emerging.rules.tar.gz

Pas besoin de senregistrer

3. Mise jour du ruleset propos par Bleeding Snort :


Ouvrir comme ci-dessus oinkmaster.conf et mettre le lien de tlchargement suivant :
url = http://www.bleedingsnort.com/downloads/bleeding.rules.tar.gz
Ajouter ensuite les lignes suivantes au fichier /usr/local/snort /etc/snort.conf
include $RULE_PATH/bleeding.rules
include $RULE_PATH/bleeding-attack_response.rules
include $RULE_PATH/bleeding-dos.rules
include $RULE_PATH/bleeding-drop.rules
include $RULE_PATH/bleeding-dshield.rules
include $RULE_PATH/bleeding-exploit.rules
include $RULE_PATH/bleeding-game.rules
include $RULE_PATH/bleeding-inappropriate.rules
include $RULE_PATH/bleeding-malware.rules
include $RULE_PATH/bleeding-p2p.rules
include $RULE_PATH/bleeding-scan.rules
include $RULE_PATH/bleeding-virus.rules
include $RULE_PATH/bleeding-web.rules

En lanant Oinkmaster par la ligne suivante, la mise jour du ruleset seffectue correctement :

sudo oinkmaster -o /usr/local/snort/rules -b /usr/local/snort/backup 2>&1

19
On peut prsent tester Snort en NIDS

En entrant la commande :
sudo /usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth1
ou sudo /etc/init.d/rc.local start

Snort sinitialise correctement

On obtient notre premier rapport (visible en Annexe 1)

Mais ceci est un peu austre. Nous pouvons donc observer les rapports de Snort sur des interfaces
graphiques telles que ACID ou Snort report.

Monitoring
Acid (Analysis Console for Intrusion Databases)
Cette application permet de synthtiser les alertes gnres par Snort. Elle possde quelques
options confortables telles que lenvoi par email de rapports.

20
Installation :

sudo apt-get -y install acidbase

Pendant linstallation, une fentre souvre et demande les rfrences de la base de donne (nom de
la base de donne, Login, mot de passe)

Interface graphique de linstallation

Lancement :

sudo sed -i "s#allow\ from\ 127.0.0.0/255.0.0.0#allow\ from\ 127.0.0.0/255.0.0.0\


xxx.xxx.xxx.xxx/255.255.xxx.xxx#" /etc/acidbase/apache.conf

sudo /etc/init.d/apache2 restart

Accs linterface par le navigateur web : http://localhost/acidbase

21
Nous obtenons :

Un rsum des alertes est galement disponible. Mais il est plus parlant sur Snort report.

Snort report
Tlcharger la dernire version stable sur : http://www.symmetrixtech.com
Actuellement la version 1.3.3
Dcompresser dans /var/www/
sudo tar zxvf snortreport-1.3.3.tar.gz -C /var/www/

Configurer laccs la base de donnes dans le fichier snortreport/srconf.php en configurant les


variables suivantes (Snortreport est dploy dans le rpertoire /var/www/snortreport) :

$pass : Prcisez le mot de passe daccs la base

Spcifier le chemin de jpgraph :

JPGRAPH_PATH : ../../../usr/share/jpgraph

22
On peut dsormais avoir une interface graphique en ouvrant le navigateur web ladresse :

http:// xxx.xxx.xxx.xxx/snortreport-1.3.3/alerts.php

Jai eu un bug ce niveau :


Un message derreur bloquait laffichage de ma page :
ERROR: snort_stream5_tcp.c(906) Could not initialize tcp session memory pool.Fatal Error,
Quitting..

Rsolution du problme :
- Ma version dUbuntu fonctionnait avec 256 Mo de Ram, je lai pass 1024.
- Jai rduit le nombre maximum de connexions TCP dans le paramtrage de Snort :

vi /usr/local/snort/etc/snort.conf
preprocessor stream5_global: track_tcp yes, \
track_udp yes, \
track_icmp no, \
max_tcp 262144, \ ----------> Modifi en max_tcp 162144, \
max_udp 131072, \

Je reprends donc

En tapant lURL : http:// xxx.xxx.xxx.xxx/snortreport-1.3.3/alerts.php, on obtient linterface graphique


prsente sur la page suivante.

23
Analyse de linterface

(Rapport obtenu lemplacement trs scuris de ma situation sur le rseau)

On observe sur ce rsultat que lon peut focaliser la plage de temps que lon dsire analyser. Ici :
- une alerte ICMP Destination Unreachable Port Unreachable . Renseignement pris, cette alerte
prvient dune attaque par dni de service (ou, attaque ayant pour but de rendre indisponible un
service, d'empcher les utilisateurs lgitimes d'un service de l'utiliser.)

- une alerte ICMP Ping : Peut prvenir une attaque par saturation du rseau (Une machine A usurpe
une IP et envoie une requte un serveur Broadcast. Celui-ci inonde le rseau de requtes. Si cette
opration se renouvelle frquemment, le rseau se voit brid)

- une alerte ICMP Echo Reply : Un attaquant distant peut utiliser une requte de ce type pour
dterminer des htes actifs en prlude une attaque.

24
En cliquant sur Summary , on obtient le dtail :

xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx

On prcise en cliquant sur une adresse IP (Dest IP que je masque ici), pour obtenir le dtail :

xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx

25
Attaques
Jallais dire Ah, enfin
Malgr ma situation relativement protge, au bout de 3 jours dexploitation, une bonne alerte :

Rapport dactivit par Snort report

Les attaques sont rpertories en quatre niveaux de 1 (alerte srieuse) 4 (alerte bnigne)
Donc, ici plusieurs attaques niveau 1 et 2 ont t dtectes.
SHELLCODE NOOP : Il sagit l dune attaque visant permettre un attaquant de prendre la main sur
des donnes ou usurper une identit. Ce qui lui permet dexcuter des codes de son choix.

26
Par exemple SHELLCODE Sun Sparc setupid :
(Setupid = set up user ID) Lattaquant peut le loguer en root et prendre donc tous les privilges. Cette
attaque cible souvent le service DNS, le service mail,

SHELLCODE Digital UNIX NOOP :


L'attaquant peut tre en mesure d'accder distance au systme ou avoir la possibilit d'excuter du
code arbitraire avec les privilges d'un utilisateur du systme.

Quelques mots sur les techniques anti-Snort


Snort constitue un moyen scuritaire qui rend plus difficile le piratage. Ainsi les
pirates ont compris la ncessit de trouver des moyens doutrepasser les
mcanismes de scurit assurs par Snort afin dattaquer sans se faire
remarquer. En effet, il existe des techniques qui visent contourner Snort. Ces techniques se
prsentent sous trois catgories :

a. Attaque par dni de service


permet de rendre Snort inoprant en le saturant.

b. Attaque par insertion


Insertion de trafic afin de djouer Snort en lui faisant croire un trafic lgitime. Le principe de ces
techniques est dinjecter une attaque parmi beaucoup dinformations sans incidences. Les signes de
lattaque napparaissent donc pas Snort mais quand les donnes atteignent la cible, seule
linformation malintentionne est accepte par le systme.

c. Attaque par vasion


cette technique est linverse de lattaque par insertion. Ici le principe est de faire passer des donnes
superflues qui sont ignores par Snort mais prises en compte par les systmes cibls.

Bien videment, avant de commencer lancer des attaques anti-Snort, il faut dtecter au pralable
son existence sur le rseau cibl. Pour ceci les pirates utilisent certaines techniques qui rvlent
lexistence dun IDS en observant certains comportements sur le rseau cibl, notamment lexistence
dune interface en mode promiscuit, la mesure du temps de latence etc..

27
Snort inline
Rappel : Le mode IPS (Systme de prvention d'intrusion) nest plus Snort a proprement parler. Il
sagit dune autre version base sur Snort 2.6. Cette version permet de modifier ou de rejeter des
paquets. Je rsume ici les tapes de linstallation.

Cette version ne se base plus sur la librairie libpcap comme Snort, mais sur iptables. Iptables est un
logiciel libre sous Linux grce auquel l'administrateur systme peut configurer les chanes et rgles
dans le pare-feu Netfilter.

Afin de tester cette version, il faut donc repartir sur une nouvelle installation dUbuntu.

Les pr-requis :
Une installation dUbuntu mise jour
(Ainsi quelle est dcrite prcdemment pour Snort)

Iptables
Dsinstallation pralable de la version de base iptables

# apt-get --purge remove iptables

Installation partir des sources

# cd /usr/local/src/
# wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.3.2.tar.bz2
# bzip2 -cd iptables-1.4.3.2.tar.bz2 | tar xvf -
# cd iptables-1.4.3.2/
# make install-devel

Attention : Compiler avec l'option --enable-libipq permet d'assurer l'installation de libipq sur laquelle
Snort inline se base.

Libnet
# cd /usr/local/src/
# wget http://freefr.dl.sourceforge.net/sourceforge/libnet-dev/libnet-1.1.3.tar.gz
# tar xzvf libnet-1.1.3.tar.gz
# cd libnet-1.1.3/
# ./configure
# make
# make install

28
Prce
Pcre (Perl-Compatible Regular Expressions) correspond la bibliothque d'expressions rgulires
compatible avec Perl. Pour l'installer :

# cd /usr/local/src/
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz
# tar xzvf pcre-7.9.tar.gz
# cd pcre-7.9/
# ./configure
# make
# make install

Libpcap
# cd /usr/local/src/
# wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
# tar xzvf libpcap-1.0.0.tar.gz
# cd libpcap-1.0.0/
# ./configure
# make
# make install

Libdnet
# cd /usr/local/src/
# wget http://prdownloads.sourceforge.net/libdnet/libdnet-1.11.tar.gz?download
# tar xzvf libdnet-1.11.tar.gz
# cd libdnet-1.11/
# ./configure
# make
# make install

Installation de Snort inline


# cd /usr/local/src/
# wget http://prdownloads.sourceforge.net/snort-inline/snort_inline-2.6.1.5.tar.gz?download
# mv snort_inline-2.6.1.5.tar.gz?download snort_inline-2.6.1.5.tar.gz
# tar xzvf snort_inline-2.6.1.5.tar.gz
# cd snort_inline-2.6.1.5/
# ./configure
# make
# make install

29
Paramtrage
Cration des rpertoires
# mkdir -p /etc/snort_inline/rules/
# mkdir /var/log/snort_inline/

Fichiers de configuration
# cp /usr/local/src/snort_inline-2.6.1.5/etc/* /etc/snort_inline/

Rgles
# cd /usr/local/src/snort_inline-2.6.1.5/etc/
# cp classification.config reference.config /etc/snort_inline/rules/

Paramtrage du fichier de configuration principal


# cd /etc/snort_inline/
# vim snort_inline.conf

Modifications apporter :

Remplacer :

# var HOME_NET any


# var EXTERNAL_NET any

Par :

# var HOME_NET xxx.xxx.xxx.xxx/xx


# var EXTERNAL_NET !$HOME_NET

Et

Remplacer :

# var RULE_PATH /etc/snort_inline/drop-rules

par :

# var RULE_PATH /etc/snort_inline/rules

30
Activation du mode d'interception
Activation de ip_queue
Afin que snort_inline intercepte tout le trafic, il est ncessaire d'activer ip_queue comme suit :

# modprobe ip_queue

Vrifier que ip_queue est actif :

# lsmod | grep ip_queue


ip_queue 13268 0

Lobtention dun rsultat montre que ip_queue est actif.

Paramtrage de iptables
Afin que iptables envoie le trafic web (port tcp/80) ip_queue, on utilise la commande suivante :

# iptables -I INPUT -p tcp --dport 80 -j QUEUE

Oinkmaster sur Snort inline


Nous avons vu dans la configuration de Snort quoi correspondait Oinkmaster. Il sagit donc dun
module qui va nous permettre de mettre jour les bibliothques dattaques rfrences. En
sinscrivant sur snort.org, on peut demander un oinkcode dont je vais me servir ci-dessous pour
pouvoir obtenir une bibliothque de dfinitions dattaques. Dans Snort inline jintgre Oinkmaster
de la faon suivante :

# cd /etc/snort_inline/
# wget http://www.snort.org/pub-bin/oinkmaster.cgi/<mon oinkcode perso>/snortrules-snapshot-
2.6.tar.gz
# tar xvzf snortrules-snapshot-2900.tar.gz

31
Test de Snort inline
En lanant Snort inline avec la commande :

# snort_inline -c /etc/snort_inline/snort_inline.conf -Q -N -l /var/log/snort_inline/ -t


/var/log/snort_inline/ -v

Jobtiens quelques erreurs provenant des fichiers de rgles. Une cinquantaine sur plus de mille trois
cent. Jai comment ces rgles car elles ne sont vraiment modifiables que par les experts qui les ont
crites. Je peux ainsi poursuivre mon test de Snort inline.

Snort inline sinitialise correctement

Et il commence son analyse

32
Mise en uvre prvoir
Snort Inline doit vrifier les paquets avant de dcider sil faut les accepter ou les refuser. Il doit tre
plac idalement aprs le firewall le long du brin rseau. Voir ci-dessous la diffrence entre le
positionnement de Snort et Snort inline.

Snort NIDS Snort inline IPS

Internet Internet

Je poursuivrai cette installation par intrt personnel.

33
Conclusion
Snort est un outil trs intressant dans la mise en place d'une scurit rseau. Grce aux
communauts trs actives qui crent les librairies dattaques. Snort permet de voir avec une bonne
acuit de quoi il faut se protger. Il est souligner limportance dune bonne mise jour de ces
librairies. De plus Snort plac dans lenceinte dun rseau permet de dtecter les failles les plus
rpandues qui proviennent gnralement de lintrieur de lentreprise, et non de lextrieur. Ce
systme de dtection multiplateforme est en perptuelle volution et semble un des meilleurs outils
dans la connaissance des vulnrabilits auxquelles on est expos.

A un niveau plus personnel, jai normment apprci ce stage. Il ma dj permis de me familiariser


un peu plus avec le monde Linux. Il ma galement permit dobserver le fonctionnement du service
informatique de la ville de Pertuis. Cela ma rellement enthousiasm et ma confort dans mon
envie de poursuivre dans cette direction. Mon seul regret est de navoir pas pu mimmerger plus
dans lactivit du service.

34
Lexique

Terme Dfinition

Citrix Entreprise amricaine qui propose des technologies de virtualisation de postes


de travail, d'applications et de serveurs, des technologies d'infrastructure
rseau.
Dport applicatif Dsigne le fait de confier lexcution des applications et le stockage de donnes
ct serveur et non plus sur un poste informatique final. Ce dernier aura pour
tche principal laffichage de lespace de travail.
DHCP Systme dattribution dadresses IP dans une plage dfinie sur un rseau. Ces
adresses sont dites dynamiques et son oppos aux adresses statiques.
DMZ En informatique, une zone dmilitarise (de l'anglais demilitarized zone) est un
sous-rseau spar du rseau local et isol de celui-ci et d'Internet par un pare-
feu. Ce sous-rseau contient les machines tant susceptibles d'tre accdes
depuis Internet.
ICMP Internet Control Message Protocol est un protocole est utilis pour vhiculer
des messages de contrle et d'erreur.
IPS Intrusion Prevention System.
Mirroring Rplication des donnes en temps rel. Il peut tre appliqu par exemple au
flux transitant par un switch, ou aux donnes un disque dur ou un volume
NAS (Network Attached Storage) ou serveur de stockage en rseau est un serveur de
fichiers autonome, reli un rseau dont la principale fonction est le stockage
de donnes en un volume centralis pour des clients rseau htrognes.
NIDS Network Intrusion Detection System. Systme de dtection dintrusion dans un
rseau local.
Rgle En anglais Rule. Ici, elle est lcriture codifie dune attaque dfinie. Le ruleset
tant un ensemble de ces rgles.
Sniffer Ou renifler. Captation de paquets qui transitent sur un rseau local.
topologie en Structure de rseau constitue d'une topologie en toile principale dont chacun
toile tendue des nuds d'extrmit, correspondant un poste de travail, est aussi le centre
de sa propre topologie en toile.
Ubuntu Fond sur la distribution Linux Debian, est un systme dexploitation libre.
Virtualisation La virtualisation consiste faire fonctionner un ou plusieurs systmes
d'exploitation sur un ordinateur ou sur un serveur, au lieu d'en installer un seul
par machine.
VMware, Logiciels de virtualisation. Hyper V est un produit Microsoft.
VirtualBox,
Hyper V

35
Annexes
Annexe 1.
============================ Pkts/min: 1615 Dropped: 0 ( 0.000%)
Run time for packet processing Pkts/sec: 25 Filtered: 0 ( 0.000%)
was 952.603434 seconds Packet I/O Totals: Outstanding: 0 ( 0.000%)
Snort processed 24227 packets. Received: 24227 Injected: 0
Snort ran for 0 days 0 hours 15 Analyzed: 24227 (100.000%)
minutes 52 seconds
============================ Alerts: 717 ( 2.960%) UDP Sessions Created: 40
Breakdown by protocol (includes Logged: 717 ( 2.960%) UDP Sessions Deleted: 40
rebuilt packets): Passed: 0 ( 0.000%) UDP Timeouts: 0
Eth: 24227 (100.000%) Limits: UDP Discards: 0
VLAN: 0 ( 0.000%) Match: 0 Events: 0
IP4: 3908 ( 16.131%) Queue: 0 Internal Events: 0
Frag: 0 ( 0.000%) Log: 0 TCP Port Filter
ICMP: 0 ( 0.000%) Event: 0 Dropped: 0
UDP: 2763 ( 11.405%) Alert: 0 Inspected: 0
TCP: 814 ( 3.360%) Verdicts: Tracked: 392
IP6: 520 ( 2.146%) Allow: 24227 (100.000%) UDP Port Filter
IP6 Ext: 546 ( 2.254%) Block: 0 ( 0.000%) Dropped: 0
IP6 Opts: 26 ( 0.107%) Replace: 0 ( 0.000%) Inspected: 3148
Frag6: 0 ( 0.000%) Whitelist: 0 ( 0.000%) Tracked: 40
ICMP6: 47 ( 0.194%) Blacklist: 0 ( 0.000%) ============================
UDP6: 473 ( 1.952%) Ignore: 0 ( 0.000%) HTTP Inspect - encodings (Note:
TCP6: 0 ( 0.000%) ============================ stream-reassembled packets
Teredo: 0 ( 0.000%) Frag3 statistics: included):
ICMP-IP: 0 ( 0.000%) Total Fragments: 0 POST methods: 0
EAPOL: 0 ( 0.000%) Frags Reassembled: 0 GET methods: 0
IP4/IP4: 0 ( 0.000%) Discards: 0 HTTP Request Headers
IP4/IP6: 0 ( 0.000%) Memory Faults: 0 extracted: 0
IP6/IP4: 0 ( 0.000%) Timeouts: 0 HTTP Request Cookies
IP6/IP6: 0 ( 0.000%) Overlaps: 0 extracted: 0
GRE: 0 ( 0.000%) Anomalies: 0 Post parameters extracted: 0
GRE Eth: 0 ( 0.000%) Alerts: 0 HTTP response Headers
GRE VLAN: 0 ( 0.000%) Drops: 0 extracted: 0
GRE IP4: 0 ( 0.000%) FragTrackers Added: 0 HTTP Response Cookies
GRE IP6: 0 ( 0.000%) FragTrackers Dumped: 0 extracted: 0
GRE IP6 Ext: 0 ( 0.000%) FragTrackers Auto Freed: 0 Unicode: 0
GRE PPTP: 0 ( 0.000%) Frag Nodes Inserted: 0 Double unicode: 0
GRE ARP: 0 ( 0.000%) Frag Nodes Deleted: 0 Non-ASCII representable: 0
GRE IPX: 0 ( 0.000%) =========================== Directory traversals: 0
GRE Loop: 0 ( 0.000%) Stream5 statistics: Extra slashes ("//"): 0
MPLS: 0 ( 0.000%) Total sessions: 40 Self-referencing paths ("./"): 0
ARP: 19033 ( 78.561%) TCP sessions: 0 HTTP Response Gzip packets
IPX: 0 ( 0.000%) UDP sessions: 40 extracted: 0
Eth Loop: 0 ( 0.000%) ICMP sessions: 0 Gzip Compressed Data
Eth Disc: 0 ( 0.000%) IP sessions: 0 Processed: n/a
IP4 Disc: 92 ( 0.380%) TCP Prunes: 0 Gzip Decompressed Data
IP6 Disc: 0 ( 0.000%) UDP Prunes: 0 Processed: n/a
TCP Disc: 0 ( 0.000%) ICMP Prunes: 0 Total packets processed:
UDP Disc: 0 ( 0.000%) IP Prunes: 0 250
ICMP Disc: 0 ( 0.000%) TCP StreamTrackers Created: 0 ============================
All Discard: 92 ( 0.380%) TCP StreamTrackers Deleted: 0 dcerpc2 Preprocessor Statistics
Other: 1005 ( 4.148%) TCP Timeouts: 0 Total sessions: 0
Bad Chk Sum: 470 ( 1.940%) TCP Overlaps: 0 ============================
Bad TTL: 0 ( 0.000%) TCP Segments Queued: 0 Snort exiting
S5 G 1: 0 ( 0.000%) TCP Segments Released: 0
S5 G 2: 0 ( 0.000%) TCP Rebuilt Packets: 0
Total: 24227 TCP Segments Used: 0
============================ TCP Discards: 0
Action Stats: TCP Gaps: 0

36