Mise en place d’un NIDS avec Snort

Posted by

I) Introduction :

Le terme NIDS signifie Network Intrusion Detection System, soit Système de détection d’intrusions réseaux en français. Inutile de s’attarder la dessus, je pense que le terme est suffisament parlant pour comprendre le rôle d’un NIDS.

L’installation au cours de la documentation se fera sur un serveur en Debian Woody avec le paquet Debian des logiciels. Pour ceux partant des sources de snort, pensez à mettre –with-mysql=/usr/lib/mysql en paramètre du configure. Le report des alertes sera fait dans une base de données MySQL et nous mettrons en place une interface de visualisations des alertes générées par snort en PHP. Il faudra donc pour la suite de l’article un système Apache/PHP/Mysql fonctionnel pour la suite de cet article.

II) Mise en place de Snort :

On commence par installer Snort :

# apt-get install snort-mysql snort-doc snort-rules-default

Debconf va générer une conf standard déjà fonctionnelle, cependant celà ne nous dispense pas d’aller explorer le fichier de configuration de snort. Ce fichier est le fichier /etc/snort/snort.conf, et les paramètres interressants sont les suivants :

On définit l’adresse de la carte réseau pointant vers le réseau local (any si l’adresse est obtenue par DHCP) :

var HOME_NET 192.168.1.0/24

Si vous voulez mettre plusieurs adresses, séparez les par des virgules sans espace. Puis l’adresse de l’interface réseau reliée à Internet : any si l’ip qui vous est assignée n’est pas fixe.

var EXTERNAL_NET any

Snort peut assigner certaines variables, par défaut définies à HOME_NET. Ces variables sont SMTP, HTTP_SERVERS, SQL_SERVERS et DNS_SERVERS. Elles peuvent prendre plusieurs adresses, par exemple si vous avez deux serveurs Web, vous donnerez les IP des deux serveurs à sécuriser. Personnellement j’ai collé 127.0.0.1.

Ensuite, plus loin dans le fichier, il faut définir sous quel format sortent les requêtes. Chosissez Syslog et Mysql.

output database: log, mysql, user=utilisateur password=motdepasse dbname=snort host=localhost

On ajoute ça également :

ruletype redalert
 {
 type alert
 output alert_syslog: LOG_AUTH LOG_ALERT
 output database: log, mysql, user=utilisateur password=motdepasse dbname=snort host=localhost
}

En fin de fichier, vous avez toute une série de include. Ces fichiers définissent les règles à appliquer pour traiter un protocole. Décommentez celles pour lesquelles Snort devra être sensible et inversement commentez celles dont vous n’avez pas besoin.

III) Interfaçage avec PHP/MySQL :

Il nous faut maintenant créer la base dans laquelle Snort stockera les alertes. Il faut aussi ajouter l’utilisateur. Vous pouvez très bien faire tout ça avec la ligne de commande de Mysql, mais personnellement je trouve PHPMyAdmin beaucoup plus pratique. Donc voici les opérations à faire :

  • Creer la base de données snort
  • Créer l’utilisateur snort dans mysql
  • Lui attribuer tous les droits sur la DB snort
  • Recharger Mysql
  • Enfin, il faut créer les tables de la base de données Snort. Le script s’appelle create_mysql.gz et se trouve dans /usr/share/doc/snort-mysql/contrib.

Maintenant il s’agit de mettre en place acid. Pour l’installer sous debian, c’est la procédure classique :

apt-get install acidlab

Les alertes snort sont maintenant visionnables sur http:/machine.adresse.i.p/acidlab
Notez qu’il est bon de protéger l’accès à ce répertoire avec un fichier .htaccess.

On arrive à la fin de l’article qui vous aura permis de vous initier à snort. Sachez que Snort envoi un rapport quotidien par mail à l’utilisateur reçevant les mails pour root. Un livre vient de sortir sur snort appelé “SNORT 2” aux éditions Campusspress et semble également interressant, pour ceux voulant en savoir plus.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.