[Tuto]Détection d’intrusion avec Snort et B.A.S.E.

Tweet about this on Twitter0Share on Facebook6Share on Google+0Email this to someone

On ne va pas se leurrer la protection antivirus, antispam et tout le reste c’est indispensable mais pour un réseau qui devient conséquent cela ne suffit plus. C’est pour cela que depuis quelques années se développent des système de prévention et/ou de détection d’intrusion qui permettent sinon de prévoir les attaques au moins de réagir plus vite.

Snort fait partie de ces outils. C’est une sorte de « sonde » qui va écouter le réseau à la recherche de signatures d’attaques. Alors on peut se dire: « c’est libre, c’est gratuit mais est-ce que ces signatures valent des solutions professionnelles ? ». La réponse est: oui et non. Oui parce que Snort bénéficie d’une très large communauté qui maintient ces règles et en sort de nouvelles assez régulièrement. Non parce que bien sur qui dit gratuit dit forcément moins de fonds à mettre dans la recherche. Cependant Snort reste quand même très efficace et suffisant pour un réseau de PME classique.

Snort fonctionne sous Linux et se présente sous la forme d’un démon ce qui veut dire pas d’interface graphique. Pour remédier à cela nous allons voir comment lui ajouter une sur-couche graphique sous la forme d’une interface Web (B.A.S.E.) accessible à partir de n’importe quel point du réseau.

Etape1: Les dépendances:

Si vous avez jeté un oeil aux autres tutos du site vous devez savoir que les solutions plus ou moins importantes que l’on peut mettre en place pour administrer un réseau nécessitent souvent des librairies de fonctions spécifiques et des fonctionnalités serveur déjà présentes. Ici par exemple cette installation va nécessiter la mise en place d’un serveur Web ou serveur LAMP. Pour cette installation je vous renvoie comme d’habitude sur cet excellent tuto.

Sinon en ce qui concerne les dépendances de Snort voici la marche à suivre:

aptitude install awk bison expat flex gcc libjpeg8 libjpeg8-dev libpcap0.8 libpcap-dev libpng3 libpng3-dev libtiff4 libtiff4-dev libxml2 libxml2-devel libpcre3 libpcre3-dev libdnet libdnet-dev openssl php5 php5-gd php5-mysql php-pear

Ces librairies vont permettre la compilation des sources et l’interprétation des résultats de Snort par B.A.S.E. Elles vont aussi permettre à Snort d’écouter, d’analyser et de capturer certains paquets. Snort va ensuite stocker ses règles et ses résultats dans une base de donnée. Nous allons la créer ainsi qu’une base « archive » qui permettra de stocker les anciens résultats.

        mysql –u root –p
	mysql> create database snort ;
	mysql> create database archive ;
	mysql> quit ;

Etape 2: Installation et configuration de Snort:

Pour installer Snort on récupère les sources:

 wget http://www.snort.org/downloads/snort-2.8.4.1.tar.gz

Après s’être inscrit gratuitement sur le site de Snort on peut télécharger les règles par défaut:

 wget http://www.snort.org/pub-bin/oinkmaster.cgi/cc3b1f738d9cce44d57231172a8551a0f356c8fe/snortrules-snapshot-CURRENT.tar.gz

On décompresse ensuite les sources de Snort:

tar -zxvf snort-2.8.4.1.tar.gz

Une fois que les sources ont été extraites on a accès au script de remplissage des bases de données :

 mysql –u root –p snort < /usr/local/src/snort-2.8.4.1/schemas/create_mysql

Une fois la base remplie il faut lui assigner des droits :

 mysql –u root –p mysql> grant all privileges on snort. * to snort@localhost identified by ‘snort’; mysql> flush privileges; mysql> quit;

Les sources peuvent maintenant être compilées et Snort installé:

cd snort-2.8.4.1
./configure –with-mysql
make
make install

Ensuite on va créér un utilisateur ‘snort’ qui sera autorisé à lancer le logiciel:

useradd snort –d /var/log/snort –s /bin/false –c SNORT_IDS

Puis on crée un répertoire qui contiendra les fichiers nécessaires à la configuration de Snort et y copier ces fichiers :

mkdir /etc/snort
cp /usr/local/src/snort-2.8.4.1/etc/*.conf* /etc/snort
cp /usr/local/src/snort-2.8.4.1/etc/*.map /etc/snort

Maintenant que Snort est installé il faut installer les règles par défaut :

 cp /usr/local/src/snortrules-snapshot-CURRENT.tar.gz tar -zxvf snortrules-snapshot-CURRENT.tar.gz

On modifie le fichier de configuration de Snort pour qu’il prenne ces règles en compte :

gedit /etc/snort/snort.conf &

On y ajoute les lignes suivantes:

VAR_RULES /etc/snort/rules output database: log, mysql, user=snort password=snort dbname=snort host=localhost ruletype redalert { type alert output alert_syslog: LOG_AUTH LOG ALERT output database: log, mysql, user=snort password=snort dbname=snort host=localhost }

Ensuite on lance Snort avec pour instruction de prendre en compte notre fichier de configuration:

snort –u snort –c /etc/snort/snort.conf

Si le logo en forme de cochon apparaît c’est que Snort s’est lancé sans problèmes. L’idéal serait que Snort démarre à chaque démarrage du système.Pour ce faire on édite le fichier /etc/crontab et on lui ajoute :

@reboot root snort –u snort –c /etc/snort/snort.conf >> dev/null

Etape 3: Installation B.A.S.E. Tout d’abord on doit télécharger et installer à la racine du serveur web adodb qui est une librairie d’extraction de données pour PHP. Puis on procède de même pour BASE. Les archives téléchargées ne contiennent que des fichiers de l’interface Web (HTML, PHP, etc…). <

cd /srv/www/htdocs
cp /usr/local/src/adodb508.tgz /srv/www/htdocs
tar -zxvf adodb508.tgz
cp /usr/local/src/base-1.4.2.tar.gz /srv/www/htdocs
tar -zxvf base-1.4.2.tar.gz
mv base-1.4.2 base

B.A.S.E. doit savoir à quoi correspondent les règles qu’il va interpréter. Il faut donc lui donner les définitions des règles.

cp –R /etc/snort/doc/signatures /srv/www/htdocs/base cd /srv/www/htdocs/base cp base_conf.php.dist base_conf.php

Ensuite on modifie le fichier de configuration de B.A.S.E, base_conf.php et on y ajoute les lignes suivantes :

	$BASE_urlpath=’/base ‘ ;     #Le chemin ou se trouve l’interface
	$DBlib_path=’/srv/www/htdocs/adodb5’ ;   #Le chemin de la librairie adoDB
	$DBtype=’mysql’ ;		#Le type de base de donnée
	$alert_dbname=’snort’ ;		#Le nom de la base de donnée
	$alert_host=’localhost’ ;	#Le serveur de cette base de donnée
	$alert_port=’’ ;		#Le port de ce serveur si c’est le cas
	$alert_user=’snort’ ;		#L’utilisateur utilisé pour l’alerte
	$alert_password=’snort’ ;	#Le mot de passe de cet utilisateur

On crée la base de donnée de B.A.S.E. qui sera liée à la base Snort et ce, à l’aide d’un script fourni :

mysql –u root –p snort &lt; /srv/www/htdocs/base/sql/create_base_tbls_mysql.sql

Pour afficher les alertes sous forme de graphes B.A.S.E. nécessite l’installation de plusieurs librairies PEAR. Il faut télécharger sur le site de Pear, cinq paquets : Image_Color, Image_Canvas, Image_Graph, Numbers_Word, Numbers_Roman.

pear install Image_Color
pear install Image_Canvas
pear install Image_Graph
pear install Numbers_Word
pear install Numbers_Roman

Pour être plus efficace, en plus de se lancer au démarrage du serveur il serait utile que Snort se mette à jour automatiquement et régulièrement. Ceci va se faire par la mise en place d’un script Oinkmaster en Perl. Ce script est fourni par Snort via le paquet oinkmaster-2-0.tar.gz On décompresse, on compile et on installe Oinkmaster :

tar zxvf oinkmaster-2.0 cd oinkmaster-2.0 ./configure make make install

Puis on édite son fichier de configuration /etc/oinkmaster.conf et on y ajoute :

url=http://www.snort.org/pub-bin/oinkmaster.cgi/ e14552e3fa9d83f3ee8a52b5a0784dffdb36821e/snortrules-snapshot-2.8.tar.gz
	modify * ‘’^alert’’ | ‘’drop’’

On va créer un répertoire de sauvegarde, un utilisateur et les droits correspondants afin qu’il puisse lancer le script:

mkdir /etc/snort/backup useradd oinkmaster chown –R oinkmaster /etc/snort/backup chown –R oinkmaster /etc/snort/rules chown –R oinkmaster /var/run/oinkmaster chmod 644 /etc/snort/snort.conf

On teste ensuite notre script :

oinkmaster.pl –o /etc/snort/rules –b /etc/snort/backup 2&gt;&amp;1

Lancement du script chaque jour à 7h Edition du fichier crontab :

crontab –e –u oinkmaster

auquel on ajoute :

00 07 * * * oinkmaster –o /etc/snort/rules –b /etc/snort/backup 2&gt;&amp;1 &gt;&gt; /dev/null 2&gt;&amp;1

Une fois que l’installation a été réalisée, il suffit de taper l’adresse suivante dans un navigateur pour atteindre l’interface graphique: http://localhost/base

Snort est maintenant installé et prêt à l’emploi. Sur l’interface graphique nous pourrons visualiser les types d’intrusions détectés. De plus Snort sauvegarde les adresses IP, ainsi nous pourrons connaître les machines qui lancent des attaques ainsi que les équipements qui sont visés permettant ainsi à l’administrateur réseau de réagir en conséquence.

Articles Similaires:

  • drayark

    Bon tuto,
    C’est quand tu fais trop de développement et que tu ne fais plus trop de réseau que tu te rencontres que ca manque.
    J’essaye de te concocter un petit tuto de développement là d’ailleurs. J’essaye de te faire parvenir ca dans la semaine.
    @ Plouch

  • drayark

    Bon tuto,
    C'est quand tu fais trop de développement et que tu ne fais plus trop de réseau que tu te rencontres que ca manque.
    J'essaye de te concocter un petit tuto de développement là d'ailleurs. J'essaye de te faire parvenir ca dans la semaine.
    @ Plouch

  • deyrisio

    merci pour le tuto. j’ai quand même un souci, l’interface web de base ne signale aucune alerte. je ne sais pas trop ce qu’il faut encore configurer pour remédier a ce problème.
    quelqu’un a t-il une idée svp?

  • Anonyme

    Bon tuto,
    C’est quand tu fais trop de développement et que tu ne fais plus trop de réseau que tu te rencontres que ca manque.
    J’essaye de te concocter un petit tuto de développement là d’ailleurs. J’essaye de te faire parvenir ca dans la semaine.
    @ Plouch