You are on page 1of 26

A.

MAKIOU
IDS/IPS avec SNORT
source : www.nbs-system.com

1. Introduction sur les IDS
Aujourdhui les systmes dinformation des entreprises sont de plus en plus ouverts sur le rseau des rseaux (Intenet). Ainsi la mise en place des mesures scuritaires
devient une condition ncessaire, mais pas suffisante pour se protger des risques prsents sur la toile internet.
Ainsi les entreprises commencent prendre conscience de limportance de la scurit informatique et intgrent des mcanismes de scurit dans leurs architectures rseaux.
De plus la mise en place dune politique de scurit informatique autour de ces systmes dinformation et dtecter dventuel les intrusions devient une ncessit pour estimer
la compltude de cette politique de scurit.
Dans cette perspective, outre la mise en place de pare-feux et des systmes dauthentification scuriss, les systmes de dtection dintrusions (IDS) et les systmes de
protection dintrusions (IPS) interviennent pour assurer une protection efficace face aux tentatives intrusives des systmes dinformation. Cependant cette protection rvle
certaines limites dues la multitude des techniques et des possibilits de contournement mais aussi la complexit des choix au niveau de la politique de scurit adopter et
des obligations vis--vis des dispositions lgales (Sarbane Oxley, BALE II ).
Le but de cet article est, tout dabord, de vous donner un ordre dide sur les techniques utilises par les systmes de dtection/protection dintrusions pour assurer la
protection face aux intrusions. Ensuite, vous montrer comment russir la mise en place dun IDS, notamment Snort et tendre sa fonctionnalit en IPS grce Snortsam.
Enfin vous prsenter les limites de cette solution.
2. Prsentation gnrale des IDS et IPS
Nous appellons un IDS (Intrusion Detection System) un mcanisme permettant dcouter le trafic rseau et de contrler les activits rseau afin de reprer toutes activits
anormales ou suspectes et ainsi remonter des alertes sur les tentatives dintrusion un systme informatique. Quant lIPS (Intrusion Prevention System), il gre les mmes
tches quun IDS, sauf quil mne des actions pour la protection du systme informatique contre les risques intrusifs.
Un IDS est constitu essentiellement dun sniffer coupl avec un moteur qui analyse du trafic selon des rgles. Ces rgles donnent une description des caractristiques des
trafics rseau signaler. Ainsi un IDS remplit des fonctionnalits de contrle rseau et ragit selon la nature du trafic.
Notons quun IDS ne remplace, en aucun cas, un pare-feu ou tout autre mcanisme de scurisation des systmes dinformation. Cependant il renforce la scurit en ajoutant
une couche de scurit et permettant ainsi la mise en place dune dfense en profondeur sur larchitecture rseau.
1. Les types des IDS/IPS
La diversit des attaques utilises par les pirates et des failles exploites par ces attaques sur les diffrents niveaux des systmes dinformations justifie lexistence de
plusieurs types des IDS/IPS. En effet, pour assurer le bon fonctionnement de ces mcanismes, il faut savoir valuer les risques encourus par votre systme dinformation et
classifier ces risques afin de dterminer le type de systme de dtection/Prvention dintrusion mettre en place.
Ainsi plusieurs types dIDS/IPS existent pour rpondre des problmatiques prcises selon le contexte dutilisation de ces derniers et les fonctions quils doivent remplir. Ci-
dessous nous citons les diffrents types des IDS et nous dtaillons leurs caractristiques principales.
Les systmes de dtection dintrusions rseau (NIDS) :
Ce type dIDS coute tout le trafic rseau, analyse de manire passive les flux et dtecte les intrusions en temps rel afin de gnrer des alertes. Ce type dIDS est le
plus utilis des IDS, ainsi nous allons nous concentrer essentiellement sur ce type dans notre document, notamment limplmentation du NIDS Snort.
Les systmes de dtection dintrusions de type hte (HIDS) :
Un HIDS est plus li une machine qu son rseau. Il permet danalyser, non seulement, le trafic rseau, mais aussi lactivit se passant sur la machine. Le but de ce
type dIDS est dassurer lintgrit des donnes dun systme et analyser le flux relatif une machine ainsi que ces journaux. Il existe plusieurs solutions qui proposent
cette fonctionnalit, par exemple les HIDS Samhain ou Tripwire. Toutefois, ce type dIDS prsente une limitation qui se traduit par la ncessit davoir un systme sain
pour vrifier lintgrit des donnes et donc un HIDS devient inefficace dans le cas ou il est implment sur un systme dj infect.
Les systmes de dtection dintrusions hybrides :
Ce type dIDS est utilis dans un environnement dcentralis. Il centralise les informations en provenance de plusieurs emplacements (senseurs) sur le rseau. Le but
de ce type dIDS est davoir une vision globale sur les composants constituants un systme dinformation en permettant une supervision centralise en matires
dalertes dintrusions remontes par les NIDS et les HIDS prsents sur larchitecture du rseau supervis.
Les systmes de prvention dintrusions (IPS) :
Les systmes de prvention dintrusions sont des systmes de dtection dintrusions particuliers qui permettent, en plus de reprer les tentatives dintrusion un
systme, dagir pour contrer ces tentatives. En effet, les IPS constituent des IDS actifs qui tentent de bloquer les intrusions. Cependant, les IPS ne sont pas une
solution parfaite comme nous pourrions le penser, ces derniers prsentent certaines limitations, notamment le blocage de toute activit qui leurs semblent suspecte.
Or il est impossible didentifier de manire fiable toutes les attaques informatiques.
De plus les pirates peuvent utiliser cette fonctionnalit de blocage assure par les IPS pour mettre hors service un systme. Ainsi les IPS se transforment en vecteurs
dattaques qui peuvent nuire au bon fonctionnement dun systme dinformation. Par ailleurs, un IPS est peu discret puisquil montre sa prsence chaque blocage
dattaques. Ainsi, un pirate peut dtecter sa prsence sur le rseau et tente de trouver une faille ou des techniques pour contourner les restrictions imposer par lIPS
en question.
Les systmes de prvention dintrusions Kernel (KIDS /KIPS) :
Ce type dIDS fait partie de la famille des HIDS. Cependant, sa fonctionnalit principale est de dtecter les intrusions au niveau noyau. Lutilisation dun KIPS savre
parfois ncessaire selon le niveau de scurit apporter pour une machine et permet de reconnatre, non seulement les caractristiques des failles prsentes sur un
systme, mais aussi dinterdire lOS dexcuter des appels systmes qui peuvent savrer dangereux ou qui visent la compromission du systme.
Toutefois un ralentissement dans le fonctionnement peut tre observ sur un systme protg par un KIPS. En effet, ce dernier analyse les appels systmes et bloque
tout accs suspect au systme. Ainsi les KIPS sont des solutions rarement utiliss sur des serveurs souvent sollicits. Un exemple de KIPS est SecureIIS qui
constitue une surcouche des serveurs web IIS de Microsoft.

2. Les mthodes de dtection
Pour bien manipuler un systme de dtection dintrusion. Il est important de comprendre son fonctionnement interne et les mthodes que ce dernier utilise pour dtecter les
tentatives dintrusions dans le cas dun IDS et pour les bloquer dans le cas dun IPS.
Cest dans cette perspective que nous allons vous prsenter, sans rentrer dans les dtails, les deux approches principales utilises pour la dtection des intrusions aux
systmes dinformation. En effet, plusieurs techniques sont utilises pour assurer cette fonctionnalit selon lapproche utilise pour assurer la dtection dintrusions.
Approche par scnario:
Cette technique ncessite une connaissance pralable des techniques dattaques utilises par les pirates pour pouvoir en dduire des scnarios typiques. Elle est dite
sans tat stateless puisquelle ne tient pas compte des activits passes sur le systme et sappuie, comme pour les anti virus, sur une base de signatures
dattaques pour pouvoir reprer des tentatives dintrusions et remonter des alertes, notamment en se basant sur un ensemble de caractres permettant didentifier une
activit intrusive ou en analysant la conformit protocolaire des paquets.
Ainsi cette technique prsente un inconvnient principal qui se traduit par le niveau de prcision des signatures dattaques. De plus le niveau de dtection des
attaques dpend imprativement de la manire dont elles sont gres, les mises jour de la base des signatures et du nombre des rgles prsentes pour grer les
alertes.

En gnral, cette approche se base principalement sur des techniques de recherche de motifs statiques ou dynamiques, ainsi que sur une analyse protocolaire pour
vrifier la conformit (par rapport aux RFC) des flux qui circulent sur le rseau.
Approche comportementale:
Cette approche sappuie principalement sur lanalyse du comportement pass des utilisateurs, des services ou des applications. Elle permet dtablir une certaine
corrlation entre les diffrents vnements sur un systme et ainsi dtecter des anomalies qui mnent la dtection de tentatives intrusives sur ce dernier. En effet,
cette approche dfinie un comportement normal du systme et considre toute dviation par rapport ce comportement comme tant suspecte.
De plus il est ncessaire de modliser des comportements normaux pour le systme protger en dfinissant un profil systme qualifi comme profil normal. Par
ailleurs, cette approche permet de dtecter des attaques non connues, contrairement lapproche par scnario prsent ci -dessus, puisquelle utilise des techniques
heuristiques, probabilistes ou statistiques pour la dtection des tentatives intrusives. Cependant les IDS, qui adoptent cette approche, sont dots de fonctionnalits
dadaptation et dapprentissage afin de dfinir un comportement normal du systme. Du coup la mise en place de cette approche ncessite plus de temps pour arriver
couvrir la totalit des systmes protger.
En gnral, les IDS mlangent les diffrentes techniques de dtection par scnario ou par anomalie en proposant des combinaisons entre la recherche des motifs,
lanalyse protocolaire et la dtection danomalies.

3. Dploiement dun NIDS
Le dploiement dun IDS nest pas suffisant pour assurer la scurit. Ainsi il faut toujours penser aux actions habituelles, notamment lisolement des systmes utilisant internet
(DMZ), la robustesse de la politique des mots de passe et la gestion des mises jour applicatives.
Un autre point important prendre en compte est la veille sur la bonne configuration de lIDS. Par exemple si le rseau est sous Windows, la configuration destine aux
systmes Unix savrent inutiles pour la dtection des tentatives dintrusion dun parc informatique Windows. Du coup il est ncessaire de faire une configuration en fonction de
lOS, des applications et du matriel utilis.
De plus lemplacement des senseurs lors du dploiement dun IDS est trs important et permet de rpondre certaines problmatiques selon la position du senseur. Le
schma ci-dessous vous montre les positions possibles pour placer un IDS.

Position 1:

Tout le trafic entre internet et le rseau interne ou la DMZ est analys. Par contre le trafic entre le rseau interne et la DMZ est invisible pour lIDS. De plus mettre un
senseur cette position gnre des fichiers de log complets, mais trop complexe analyser.

Position 2:

Seul le trafic entre la DMZ et internet ou le rseau interne est analys. De plus, placer un senseur cet emplacement nous permet de dtecter les attaques non filtr
par le pare-feu et donc minimise le trafic rseau analyser. Cependant le trafic entre le rseau interne et internet nest pas visible pour lIDS.

Position 3:

Placer le senseur cette position nous assure une analyse du trafic sur le rseau interne et la dtection des attaques au niveau du rseau interne. Dans notre cas
nous allons vous prsenter linstallation de Snort sur un rseau local. Ce choix nous est apparu judicieux car la majorit des attaques proviennent de lintrieur
(Troyen, Virus, etc.).
En gnral, il est souvent prfrable de placer le senseur aprs le firewall du ct interne. Ainsi seuls les flux accepts par le firewall sont analyss et donc nous obtenons une
forte rduction en matire de charge des sondes de lIDS.
De plus le choix matriel a galement une grande importance puisque le trafic rseau doit tre reu par les sondes IDS pour lanalyser quelque soit le destinataire. Du coup le
choix dun switch ou dun hub doit tre fait pour assurer cette fonctionnalit. Cependant, sans rentrer dans les dtails, dautres problmatiques peuvent surgir selon la nature du
rseau surveiller, notamment lorsque les flux sont crypts ainsi que la scurisation des sondes et des alertes quelles gnrent qui constitue elle-mme une problmatique,
part, grer.
3. Mise en oeuvre dun NIDS
Maintenant que nous avons vu le but, le fonctionnement mais aussi certaines faiblesses des IDS, Nous allons mettre en place une solution NIDS bas sur le logiciel Snort et la
console BASE (Basic Analysis and Security Engine) pour analyser et superviser les alertes remontes par notre NIDS. Le choix de Snort, en particulier, est justifi par le fait
que nous trouvons que cette solution peut tre adapte pour une entreprise quelque soit sa taille (TPE, PME ), mais aussi la disponibilit de nombreuses rgles dans la
communaut de Snort et des projets comme Oinkmaster qui grent la mise jour des signatures et fournissent un nombre important de rgles optimises et efficaces pour la
dtection des intrusions.
De plus Snort dispose dun ensemble de plugins qui aident tendre ses fonctionnalits, notamment Snortsam qui ajoute des fonctionnalits permettant Snort de jouer le rle
dun IPS. Nous allons aborder cette facette plus loin dans cet article mais nous prfrons attirer votre attention sur les diffrentes possibilits quoffre ce logiciel afin de pouvoir
adapter votre configuration aux besoins de votre systme dinformation.
Les tapes suivantes montrent tape par tape la dmarche suivre pour russir linstallation de notre NIDS.
1. Installation de Mysql
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 de se
connecter et rcuprer ces alertes.
Cette installation a t faite sur une distribution Ubuntu 9.10. Vous pouvez procder une installation manuelle ou par package pour installer les diffrents logiciels ncessaires
pour la mise en place de Snort.
La premire tape consiste installer le serveur et le client Mysql. Et dy apporter la configuration ncessaire pour assurer le fonctionnement de Snort.
$ sudo apt-get install mysql-server mysql-client
Ensuite il faut crer deux bases de donnes snort et archive . Ces bases de donnes vont vous servir pour stocker/archiver les alertes remontes par Snort.
$ mysql u root p
mysql> CREATE DATABASE snort;
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE on snort.* to snort;
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE on snort.* to snort@localhost;
mysql> set password for snort=PASSWORD(password);
mysql> set password for snort@localhost=PASSWORD(password);
mysql> flush privileges;
mysql> exit

Vous devez faire la mme chose pour la base de donnes archive.
$ mysql u root p
mysql> CREATE DATABASE archive;
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE on archive.* to snort;
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE on archive.* to snort@localhost;
mysql> set password for archive=PASSWORD(password);
mysql> set password for archive@localhost=PASSWORD(password);
mysql> flush privileges;
mysql> exit

Une fois que vous avez cr les bases de donnes, vous allez procder la cration du schma des donnes pour ces bases. Pour se faire deux mthodes existent :
En important le schma des donnes partir du rpertoire dinstallation de Snort.
cat create_mysql | mysql u snort D snort p
Si Snort (snort-mysql) a t tlcharg partir du dpt Ubuntu.
$ zcat /usr/share/doc/snort-mysql/create_mysql.gz | mysql u snort D snort p
Aprs vous pouvez vrifier si les bases sont bien cres et que le schma a bien t import.
$ mysql u root p
mysql> show databases ;
mysql> use snort ;
mysql> show tables ;

Si tout sest bien pass vous devez avoir comme rsultat :

| Tables_in_snort |

| data
| detail
| encoding
| event
| icmphdr
| iphdr
| opt
| reference
| reference_system
| schema
| sensor
| sig_class
| sig_reference
| signature
| tcphdr
| udphdr

16 rows in set (0.00 sec)

Ensuite, il faut vrifier si lutilisateur snort a un mot de passe et toutes les permissions ncessaires pour accder la base de donnes.
Si tout sest bien pass vous devez avoir comme rsultat :
mysql> show grants for snort;

| Grants for snort@% |

GRANT USAGE ON *.* TO snort@'% IDENTIFIED BY PASSWORD hash du mot de passe
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `snort`.* TO snort@'%

2 rows in set (0.00 sec)

Enfin, il ne faut pas oublier de redmarrer le serveur Mysql pour quil prenne en compte les modifications apportes aux bases de donnes.
$ /etc/init.d/mysql restart
Si vous tes arrivs ce stade l, vous tes sur de la bonne configuration de votre serveur Mysql. Du coup vous pouvez passer ltape suivante qui consiste installer
apache pour la console BASE.
2. Mise en place dApache-PHP
La console BASE est une interface crite en PHP, donc qui ncessite un serveur web supportant PHP. Pour cette installation nous avons choisi dinstaller un serveur apache2
ainsi que tous les modules et les extensions ncessaires pour assurer le fonctionnement de BASE.
$ sudo apt-get install apache2 php5-mysql libphp-adodb php-mail- mime php-mail
Apache2 : serveur web.
Php5 : module PHP.
Php5-mysql : interface PHP/MYSQL
Libphp-adodb : librairie dabstraction de base de donnes pour PHP.
Php-mail : extension PHP
Tout dabord, configurez le serveur pour couter sur ladresse de la boucle local (127.0.0.1). Ainsi le serveur web nest visible que sur la machine locale. Pensez galement
changer la configuration pour supporter HTTPS dans le cas o vous activez SSL, BASE continuera fonctionner.
$ sudo nano /etc/apache2/ports.conf
listen 127.0.0.1 :80
Listen 127.0.0.1 :443

Ensuite assurez-vous que le module PHP est activ.
$ a2enmod php5
Module php5 already enabled
Si vous avez le rsultat ci-dessus, vous tes sur que tout est bien install, pensez donc redmarrer Apache pour la prise en compte de la nouvelle configuration.
$ /etc/init.d/apache restart
Enfin, allez sur votre navigateur prfr et vrifiez que vous pouvez vous connecter ladresse 127.0.0.1.
3. Mise en place de Base
BASE est une interface graphique crite en PHP utilise pour afficher les alertes gnres par lIDS Snort et stockes dans la base de donnes. Elle signifie Basic Analysis
and Security Engine.Vous pouvez la tlcharger sur le site :http://sourceforge.net/projects/secureideas/files
Une fois vous avez tlcharg BASE, dcompressez les fichiers dans le dossier du serveur web.
$ tar xzvf base-x.y.z.tar .gz
$ mv /home/user/Desktop/base-x.y.z /var/www/base
Ensuite vous pouvez passer la configuration de BASE. Vous aurez besoin de ADOdb (Active Data Objects Data Base) pour BASE, vous pouvez la tlcharger sur
: http://adodb.sourceforge.net/#download. Comme prcdemment vous devez dcompresser les fichiers dans le dossier base.
$ unzip adodb5.zip
$ mv /home/user/Desktop/adodb5 /var/www/base
Une fois, vous avez russi ces tapes, vous pouvez lancer lassistant et procder linstallation de BASE. Mais avant de lancer lassistant noubliez pas de faire le changement
ci-dessous pour permettre lutilisateur web (www-data) dcrire dans le dossier BASE.
$ chown R www-data /var/www/base
Aprs vous pouvez lancer lassistant en ouvrant le navigateur web et slectionner le dossier BASE sur ladresse : http://localhost/base/setup.php.

Vous obtiendrez la premire page de lassistant qui vrifie que les paramtres ncessaires la configuration sont mis en place.
Ensuite lassistant vous demande de choisir la langue et le chemin pour accder adodb5.

Aprs lassistant vous invite introduire les paramtres du serveur Mysql dans la configuration.

Ensuite vous paramtrer les champs dauthentification pour accder la console BASE.

Une fois que les paramtres dauthentification sont mis en place, lassistant vous demande de crer les tables de la base de donnes de BASE.

Enfin vous serez redirigs vers la page dauthentification qui vous propose de vous authentifier afin daccder la console pour superviser les alertes remontes par Snort.

Avant den finir avec la configuration de BASE, nous souhaitons attirer votre attention sur certains paramtres qui rendent lutilisation de BASE une exprience agrable et
justifient le choix dutiliser cette console plutt que dautres.
En effet, BASE offre la possibilit de gnrer des graphiques permettant de voir lvolution de nombres des alertes remonter par Snort. Pour se faire il faut installer quelques
packages.
$ sudo apt-get install php-pear
$ sudo apt-get install php-gd
$ sudo pear install force Image_Color
$ sudo pear install force Images_Canvas
$ sudo pear install force Images_Graph
Les commandes ci-dessus installent les librairies et les dpendances ncessaires pour BASE pour la gnration des graphes.
BASE propose aussi de visualiser les alertes colores afin de classifier les alertes selon leurs degrs de criticit. Vous pouvez activer cette fonctionnalit en paramtrant la
variable $colored_alerts dans le fichier base_conf.php
$ nano /var/www/base/base_conf.php

$colored_alerts=1 ;

4. Mise en place de Snort
Vous pouvez installer Snort laide dun package ou manuellement. Dans notre cas nous allons installer Snort laide dun package snort-mysql. Cela vous garantie, dune
manire simple, dinstaller Snort pour interagir avec le serveur Mysql afin de stocker les alertes.
$ sudo apt-get install snort-mysql
Ensuite assurez-vous que linstallation sest bien droule et vrifier que vous avez la dernire version du logiciel avant de passer la configuration de ce dernier.
La configuration de snort devient une tche facile une fois que vous avez russis toutes les tapes prcdentes. En effet cette tape consiste diter le ficher
/etc/snort/snort.conf pour y mettre les bons paramtres afin de permettre Snort de commencer son analyse sur votre rseau.
$ sudo cp /etc/snort/snort.conf /etc/snort/snort.conf.old
$ sudo nano /etc/snort/snort.conf

#configuration du rseau surveiller
var HOME_NET [192 .168.0.0/24] votre rseau/netmask
var HTTP_SEVERS X.X.X.X #adresses ip des serveurs http]
var DNS_SEVERS X.X.X.X #adresses ip des serveurs DNS]
var SMTP_SEVERS X.X.X.X #adresses ip des serveurs SMTP]
var SQL_SEVERS X.X.X.X #[adresses ip des serveurs SQL]
var SNMP_SERVERS X.X.X.X # [adresses ip des serveurs SNMP]

#Chemins vers les rgles
var RULE_PATH /etc/snort/rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

#paramtre pour MYSQL
output database: log, mysql, user=snort password=password dbname=snort host=127.0.0.1
ruletype redalert
{
type alert
output alert_syslog: LOG_AUTH LOG ALERT
output database: log, mysql, user=snortuser password=snortpassword dbname=snort host=localhost
}

Une fois vous avez paramtr Snort. Vous pouvez le lancer et visualiser les alertes quil remonte en utilisant la console BASE.
$ sudo snort u snort -c /etc/snort/snort.conf
Si tout sest bien pass vous pouvez vous connecter la console BASE afin de vrifier si elle prend en compte les alertes remontes par Snort. Ainsi vous pouvez voir un
rsultat similaire celui prsent ci-dessous.

Comme pour tout systme informatique, ou presque, il existe des failles ou des techniques exploitables pour outrepasser ces systmes sans se faire dtecter. Ainsi il faut
penser la gestion des mises jour au niveau logiciel mais aussi au niveau des rgles utilises pour la dtection des attaques.
En effet, vous pouvez utiliser plusieurs mthodes pour mettre jour votre IDS. Ceci en faisant la veille sur lvolution des dveloppements de votre IDS et installer les mises
jour ncessaires pour le faire passer la dernire version disponible. Veiller mettre jour les rgles en les tlchargeant sur le site de votre IDS ou en installant des outils
automatisant cette tche comme Oinkmaster pour Snort. Nous nallons pas vous prsenter comment faire usage de Oinkmaster puisque vous pouvez trouver une
documentation complte sur le site du projet : http://oinkmaster.sourceforge.net/docs.shtml.
Notons quen plus des rgles prtes proposes par Snort, vous pouvez crire vos propres rgles afin dadapter cette solution votre architecture rseau. Ainsi nous allons
vous prsenter comment crer des rgles afin de bnficier de cette fonctionnalit.
5. Cration de nouvelles rgles
Il peut tre intressant dadapter au mieux Snort au rseau quil doit surveiller. Du coup Snort vous offre la possibilit de crer des rgles capables de rpondre cette
fonctionnalit. Ainsi, par convention, nous proposons de placer les rgles dans le fichier local rules. Notons que ces rgles doivent tre compltement crites sur une seule
ligne puisque lanalyseur de rgles de Snort ne sait pas comment traiter des rgles sur plusieurs lignes.
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.
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
..etc
Le champ protocole dcrit le protocole utilis pour la communication. Snort supporte les protocoles TCP, UDP, ICMP et IP.
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.
Quant 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 matriser le formalisme de description des attaques par le biais de ces
rgles plus vous aurez des alertes prcises et vous vitez les faux positifs.
Exemple de rgles :
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 ; )
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: WEB-MISC /etc/passwd ;flags: A ;
content: /etc/passwd ; nocase; classtype:attempted-recon; sid:1122; rev:1;)
Ces deux rgles permettent de dtecter des attaques du rseau externe. La premire dtecte une attaque qui consiste excuter une commande sur le serveur web. Quant
la deuxime, elle dtecte des tentatives de rcupration des fichiers sensibles afin de les exploiter pour gagner des privilges sur les machines du rseau interne.
4. Snortsam
Comme nous lavons dj voqu le dploiement dun IDS constitue une couche de scurit de plus pour protger votre rseau. Cependant cette solution permet juste de
dtecter des ventuelles tentatives dintrusions sur votre systme dinformation. Ainsi Snortsam intervient pour tendre les fonctionnalits de Snort en IPS et interagir avec
votre pare-feu et bloquer les tentatives dintrusions.
Snortsam est un plugin Snort qui fonctionne avec deux parties: le plugin pour Snort et un agent intelligent qui tourne comme un service sur le(s) firewall(s). Il permet de bloquer
des adresses IP sur pare-feu en analysant les alertes relev par Snort et indiquant aux agents Snortsam les adresses que ces derniers fournissent au pare-feu afin de les
bloquer. Ce plugin supporte plusieurs types de pare-feu, dans notre cas nous allons utiliser iptables
Lavantage de SnortSam, cest que lagent avec lequel il fonctionne fourni plusieurs fonctionnalits que dautres mcanismes de blocage automatiss ne proposent pas,
comme:
Une liste blanche dadresse IP qui ne seront jamais bloques.
Un systme de plage horaire pour bloquer les utilisateurs.
Des rgles de blocage spcifiques, comme les rgles de blocage dpendant de lheure.
Une liste de filtrage de SID autoriss ou non, base sur lentit.
Un moteur de dtection dattaque qui essaye dattnuer le risque dun Deni de service interne larchitecture IDS.
Un systme de blocage prventif des rptitions (mmes adresses IP) avec une fentre modifiable pour amliorer les performances.
Une communication chiffre en TwoFish entre Snort et lagent SnortSam.
Un vrai support dOPSEC en utilisant le SDK de Checkpoint (plugin OPSEC)
Le Multi-Thread pour traiter plus vite et simultanment les blocages sur plusieurs appareils
Lenregistrement des fichiers et la notification dvnements par email.
Et la possibilit dutiliser larchitecture client/serveur (snortsam/snort) pour les grands rseaux de manire optimiser les remontes dinformation du rseau.
De plus, SnortSam est un programme compltement gratuit et open-source. Il peut tre compil sur plusieurs plateformes et linteraction devrait fonctionner travers ces
diffrentes plateformes (selon lauteur).
1. Installation de Snortsam
Vous pouvez trouver tous les fichiers ncessaires la configuration de SnortSam sur le site http://www.snortsam.net/files . Ainsi la premire tape consiste rcuprer la
dernire version stable du plugin. Ainsi vous pouvez compiler et installer les agents comme indiquer ci-dessous.
$ tar xzvf snortsam-src-2.69.tar.gz
$ cd snortsam-src-2.69
$ chmod x makesnortsam.sh
$ ./makesnortsam.sh

Done.
$ cp snortsam /bin
Ensuite rcuprer le patch ncessaire pour la version de lIDS Snort dont vous disposer, appliquer le patch et recompiler Snort.
$ wget http://www.snortsam.net/files/snort-plugin/snortsam-2.8.6.diff.gz
$ gunzip snortsam-2.8.6.diff.gz
$ patch p1 /usr/local/src/snort < snortsam-2.8.6.diff
$ cd /usr/local/src/snort
$ ./autojunk
$ ./configure with-mysql
$ make
$ make install
Si tout se passe bien vous auvez votre Snort compiler avec le plugin snortsam et un agent snortsam prt tre dploy.
2. Configuration de Snortsam
La configuration de Snortsam ncessite la configuration de Snort pour prendre en compte la nouvelle fonctionnalit assure par le plugin et la configurati on des agents pour
pouvoir communiquer avec le plugin et assurer le blocage des adresses IP.
Ainsi vous pouvez configurer Snort en ditant le fichier snort.conf comme indiqu si-dessous :
$ vi /etc/snort/snort.conf

output alert_fwsam: localhost/myhostpass remotehost:remoteport/remotehostpass

La ligne si dessous indique snort les agents Snortsam avec qui il doit communiquer afin de leur fournir les adresses IP bloquer.
Localhost : premier agent local communiquant avec le port par dfaut et le mot de passe myhostpass
Remotehost : le deuxime agent distant communiquant avec le port remoteport et le mot de pass remotehostpass .
Vous pouvez ajouter plus dagents selon le nombre des agents dploy sur votre rseau.
Ensuite il faut configurer les agents afin de garantir la communication entre lIDS et ces derniers. Pour se faire ditez le fichier snortsam.conf sur les machines des agents
comme indiqu ci-dessous :
$ vi /etc/snortsam.conf
.
#accepter les connexion en provenance de lIDS
accept 192.168.X.X, mypass #adresse IP IDS / mot de passe indiquer dans snort.conf
# adresse IP ne pas bloquer
dontblock

#fichier de log
Logfile /var/log/snortsam.log
# niveau de log vous pouvez choisir entre 3 niveaux
loglevel 3
# snortsam en mode dmon
deamon
# notification par email
email
# choix du firewall
#iptables
Iptables eth0 /var/log/iptables-snortsam.log
Une fois vous avez dit les fichiers de configuration, la dernire tape consiste diter les rgles snort qui entraneront le blocage ct pare-feu. Cette configuration ncessite
lajout du champ fwsam dans les lignes des rgles en question.
Exemple :
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg: WEB-ATTACKS /bin/ps
command attempt ; flow:to_server,established; uricontent: ps ; nocase; sid:1329; classtype:web-application-
attack; rev:4; fwsam: src[in], 5 minutes; )
En effet en peut rsumer la syntaxe du champ en : fwsam : qui[comment], dure
Qui : ce paramtre peut prendre une des valeurs src, source, dst, dest ou destination selon la machine bloquer.
Comment : peut tre initialis In, out, src, dest, either, both, this ou conn pour dfinir le type des paquets rejeter.
Dure : dfinit la dure du blocage des adresses IP en question.
Une fois toutes les configurations cites ci-dessus ont t mises en place, vous pouvez lancer les agents snortsam ainsi que lIDS Snort et vrifier que tout est bien dploy et
que la communication est assure entre les diffrentes parties de notre IPS. Pour se faire suivez les tapes ci-dessous.
$ snortsam /etc/snortsam.conf
$ snort u snort c /etc/snort/snort.conf&
Ensuite vrifier le fichier de log de snortsam pour vrifier que votre configuration est bien prise en charge par les diffrents lments de lIPS.
$ cat /var/log/snortsam.conf
2010/07/13, 11:54:05, -, 1, snortsam, Starting to listen for Snort alerts.
2010/07/13, 11:55:18, 192.168.X.X, 3, snortsam, Accepted connection from 192.168.X.X.
2010/07/13, 11:55:18, 192.168.X.X, 3, snortsam, Adding sensor 192.168.X.X to list.
Si tout sest bien pass vous devez avoir un message comme ci-dessus, sinon allez revrifier votre configuration.
3. Cas dutilisation
Cette partie consiste vous donner un cas dutilisation de Snortsam. Vous pouvez vous en inspirer pour adapter la configuration au besoin de votre rseau. Dans notre cas
nous allons essayer de bloquer une attaque remonte par Snort.
Pour ceci nous observons les alertes remontes sur linterface web de BASE. Pour dtecter les attaques sur notre rseau et configurer Snort afin de communiquer avec lagent
snortsam et bloquer ladresse IP source de cette attaque.

Dans ce cas de figure nous remarquons que linterface base nous a remonte une alerte sur une attaque dtecter par Snort.
Ainsi nous allons voir si la rgle de dtection de ce type dattaque est configure pour bloquer ladresse source de cette attaque. Sinon nous allons ajouter le champ fwsam
pour permettre snort de communiquer avec lagent snortsam au niveau du pare-feu et bloquer laccs ladresse en question.
$ cat /etc/snort/rules/icmp.rules | grep ICMP\ L3retriever alert icmp $EXTERNAL_NET any -> $HOME_NET
any (msg: ICMP L3retriever Ping ; icode:0; itype:8;
content: ABCDEFGHIJKLMNOPQRSTUVWABCDEFGHI ; depth:32; reference:arachnids,311;
classtype:attempted-recon; sid:466; rev:5;fwsam:src, 30; )
Du coup nous avons vrifi que la rgle et bien configurer pour bloquer les accs aux adresses IP sources de ce type dattaques pendant une dure de 30 secondes.
Cependant il faut vrifier que lagent sest charg de bloquer laccs cette adresse IP en question. Pour se faire nous allons consulter le fichier de log de lagent.
$ tail /var/log/snortsam.log
2010/07/13, 17:41:02, -, 3, iptables, Info: Command /sbin/iptables -I FORWARD -i eth1 -s 192.168.1.241 -j
DROP Executed Successfully
2010/07/13, 17:41:02, -, 3, iptables, Info: Command2 /sbin/iptables -I INPUT -i eth1 -s 192.168.1.241 -j DROP
Executed Successfully
2010/07/13, 17:41:02, -, 3, iptables, Info: Command /sbin/iptables -I FORWARD -i eth1 -d 192.168.1.241 -j
DROP Executed Successfully
2010/07/13, 17:41:02, -, 3, iptables, Info: Command2 /sbin/iptables -I INPUT -i eth1 -d 192.168.1.241 -j DROP
Executed Successfully
2010/07/13, 17:41:32, -, 2, snortsam, Removing 30 sec complete block for host 192.168.1.241.
2010/07/13, 17:41:32, -, 1, iptables, Info: UnBlocking ip 192.168.1.241
2010/07/13, 17:41:32, -, 3, iptables, Info: Command /sbin/iptables -D FORWARD -i eth1 -s 192.168.1.241 -j
DROP Executed Successfully
2010/07/13, 17:41:32, -, 3, iptables, Info: Command2 /sbin/iptables -D INPUT -i eth1 -s 192.168.1.241 -j DROP
Executed Successfully
2010/07/13, 17:41:32, -, 3, iptables, Info: Command /sbin/iptables -D FORWARD -i eth1 -d 192.168.1.241 -j
DROP Executed Successfully
2010/07/13, 17:41:32, -, 3, iptables, Info: Command2 /sbin/iptables -D INPUT -i eth1 -d 192.168.1.241 -j DROP
Executed Successfully
Une fois de plus nous avons vrifi que notre IPS marche et que lagent interagis avec notre pare-feu pour bloquer les accs.

De plus si vous pouvez tre notifi par email des actions menes par votre IPS en configurant lagent pour lenvoi de mail de notification.
5. Techniques anti-IDS
Les IDS constituent une mesure scuritaire qui rend la vie difficile aux pirates. Ainsi ces derniers ont compris la ncessit de trouver des moyens pour outrepasser les
mcanismes de scurit assurs par les IDS afin dattaquer sans se faire remarquer. En effet, il existe des techniques anti-IDS qui rendent possible le contournement des IDS.
Ces techniques se prsentent sous trois catgories :
Attaque par dni de service : permet de rendre lIDS inoprant en le saturant.
Attaque par insertion : Insertion de trafic afin de djouer lIDS 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 lIDS mais quand les donnes atteignent la cible, seule linformation
malintentionne est accepte par le systme. Cela est trs proche du principe des canaux cachs.
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 lIDS mais
prises en compte par les systmes cibls.
Bien videment, avant de commencer lancer des attaques anti-IDS, il faut dtecter au pralable lexistence dun IDS 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 et lexploitation des rponses actives des IPS.
1. Attaque par dni de service
Le but de ce type dattaque est de saturer les ressources utilises par lIDS afin de le dsactiver. Ainsi lIDS ne peut plus remplir sa fonctionnalit et le pirate peut lancer ces
attaques contre le rseau cibl sans se faire remarquer.
Pour se faire les pirate utilise des technique dattaque par flood qui consiste surcharger le NIDS pour quil ne puisse pas fonctionner correctement et quil ne dtecte pas
lattaque principale ou par la noyade sous les faux-positifs dont le principe est de provoquer de nombreuses remontes dalertes. En parallle, une attaque relle contre le
rseau est lance, et ladministrateur occup analyser les alertes, ne sen rendra pas compte sur le moment. Nous pouvons utiliser loption decoy de nmap pour gnrer des
scans nmap multiples pour lancer ce type dattaque.
2. Attaques par insertion
Il existe plusieurs techniques dinsertion ou dinjection qui permettent doutrepasser les IDS. Comme nous lavons dj voqu, ces techniques consistent injecter des
donnes supplmentaires de telle sorte que lIDS les ignores et que la machine cible ne les dcodent pas. Ci-dessous nous vous prsentons certaines attaques de ce type :
Fragmentation IP:

Le principe est de fragmenter les paquets IP pour empcher les NIDS de dtecter les attaques sachant que les paquets seront rassembls au niveau du destinataire.
Il est possible aussi denvoyer des paquets IP mal fragments qui vont utiliser la faiblesse de certaines pile IP (peut-tre aussi celle de la sonde IDS qui capte tout le
trafic) pour perturber le systme.
En effet, cette technique exploite certaines faiblesses dans la technique de fragmentation utilise par la pile IP mais aussi la diffrence en matire de gestion des
fragments selon lOS, notamment dans les mcanismes de recouvrement, dcrasement et du temps de garde des fragments IP (timeout de fragmentation).

Segmentation TCP:

Cette technique repose sur le mme principe que la fragmentation IP, mais cette fois ci au niveau de la couche transport TCP. En effet, les requtes TCP sont
divises en segments identifies par des numros de squence. Ainsi, tout en modifiant le numro de squence pour crer des recouvrements nous nous retrouvons
dans la mme situation quavec la fragmentation IP.

Insertion de faux paquets:

Le principe de cette technique et dinsrer des paquets avec des champs errons, par exemple checksum ou TTL, de manire ce que lIDS ne les dtecte pas et
que le systme les rejettent.
3. Attaques par vasion
Pour rappel, ces techniques ont pour but dinsrer des donnes qui seront ignores par lIDS, mais interprtes par les systmes cibls. En effet, le but de ces techniques est
de russir des attaques sans tre gn par les IDS.
De plus, ces techniques exploitent des faiblesses dans les mcanismes utiliss par les IDS, par exemple le mcanisme de recherche des motifs que nous avons voqu dans
la premire partie de cet article, pour russir outrepasser lIDS. Ainsi nous vous prsentons certaines attaques dvasion.
Technique dvasion HTTP :
lencodage :

Il permet de coder les caractres sous forme hexadcimale. LURL sera comprise par le protocole HTTP.

les doubles slashs :

Par exemple, une requte de type //cgi-bin//script ne sera pas dtecte car les IDS vrifient les requtes de la forme /cgi-bin/script.

les self-reference directories :

Il consiste remplacer tous les / par des /./. Ainsi La requte nest pas dtecte par lIDS.

La simulation de fin de requte :

LIDS analyse la premire partie de lURL et sarrte au premier HTTP/1.0 rn. Le reste de la requte qui reprsente lattaque passe sans tre analyse. Par exemple:
HEAD /HTTP/1.0rnHeader : /../../cgi-bin/bidule.cgi HTTP/1.0rnrn

Le formatage :

Il consiste remplacer les espaces par des tabulations dans les requtes HTTP.

Case sensitive :

Il consiste remplacer les minuscules par des majuscules. La requte reste valide.

URL coupe :

Il consiste couper la requte HTTP en plusieurs paquets TCP. Par exemple : lURL GET /cgi/bin/phf devient GET , /cgi/b , in/ph , f HTTP/1.0.

Le caractre NULL :

En analysant la chaine de caractres HEAD /cgi-bin/some.cgi HTTP/1.0, lIDS sarrte ds quil atteint le caractre NULL, la suite de lURL ntant pas analyse.

Utiliser la syntaxe MS DOS :

Cette technique consiste remplacer les caractres / par \.
Shellcode polymorphique :
Cette technique consiste rendre difficile la dtection des shellcodes pour les IDS utilisant les signatures. En effet, elle permet de camoufler les tentatives de buffer overflow en
mettant une autre instruction NOP pour remplir le buffer, en utilisant des instructions par quivalence ou mieux encore en cryptant le shellcode et le rendre polymorphique en
utilisant un cryptage (XOR) tout en sassurant que le dcodeur et la cl sont prsents dans le shellcode pour pouvoir le dcrypter lors de son excution sur les machine des
victimes.
Nous pouvons remarquer quil devient trs difficile pour un IDS de dtecter le shellcode en utilisant des signatures. Ainsi, il faut mettre en place dautres mcanismes, par
exemple des KIPS, en complment des IDS pour pouvoir mener des analyses au niveau des appels systmes et dtecter ce type d attaques. De cette faon nous constatons
une fois de plus limportance de la notion de complmentarit des types des IDS, la ncessit de bien dfinir le primtre dfendre sur notre rseau et la nature des
mcanismes utiliss pour accomplir cette tche.
6. Conclusion
Bien que rpandus dans les organisations aujourdhui, les systmes de dtection dintrusions ne reprsentent quun maillon dune politique de scurit. En effet, mme sils
permettent la dtection, parfois larrt, des intrusions, ils restent nanmoins vulnrables eux aussi face aux attaques externes.
Cest pourquoi, pour une scurit optimale, ces outils doivent tre coupls dautres, comme lindispensable pare-feu. Mais ils doivent aussi tre mis jour, aussi bien au
niveau du cur du logiciel comme la base de signatures, qui constitue la base dune dtection efficace. Il faut galement coupler les systmes de dtection entre eux en
prenant en compte la notion de complmentarit des solutions offertes pour assurer cette fonctionnalit : cest--dire, ne pas hsiter placer des NIDS, HIDS et KIDS dans le
mme rseau. Leurs rles sont diffrents, mais chacun apporte ses fonctionnalits.
Lefficacit des dtections passe aussi par une bonne implmentation des nouvelles rgles de dtection dintrusion. Ltude que nous avons mene sur lcriture de ces
dernires nous a permis dobserver combien il est indispensable de matriser le formalisme de description des attaques et dadapter ces rgles larchitecture du rseau
dfendre. Mais ce nest pas tout, au-del de ce formalisme, doit rsider un savoir faire important de la part du (des) concepteur(s) de ces rgles.
Toutefois, et nous terminerons par ceci, mme si une certaine maturit dans ce domaine commence se sentir, le plus important reste de savoir de quoi il faut se protger. Les
failles les plus rpandues proviennent gnralement de lintrieur de lentreprise, et non de lextrieur. Des mots de passe simples, des droits daccs trop levs, des services
mal configurs, ou encore des failles dans les logiciels restent la bte noire en matire de scurit

You might also like