Comment surveiller son réseau avec le cochon Snort ?
Date: 19/06/2007 | Catégories: Open-source,Reseau | Tags: freebsd,ids,installation,linux,Open-source,réseau,sdi,snort
Distribué sous licence open source (GPL), Snort est un IDS: c'est à dire un système de détection d'intrusion.
Souvent les réseaux (personnel ou d'entreprise) sont protégés par des Firewalls. Cette protection, bien que nécessaire, ne permet pas la détection des attaques extérieures. En effet, un Firewall est fait pour bloquer les flux réseaux non désirés tout en laissant passer le "trafic utile". Deux problèmes peuvent se poser:
- comment analyser à l'interieur d'un "trafic utile", les données potentiellement dangereuses (par exemple un script CGI contenant un virus).
- comment se prévenir de attaques de type DOS (flood UDP).
Snort est une des réponses possible. Il va analyser, en temps réel, le trafic réseau, rechercher dans sa base de donnée des profils d'attaques connus et logger les résultats.
Nous allons donc dans ce billet installer Snort sur un routeur sous FreeBSD (mais la procédure est la même pour un OS de type Linux).
Installation de Snort
Snort est disponible dans les ports FreeBSD, il faut donc effecter les actions suivantes afin de le compiler sur votre système:
# cd /usr/ports/security/snort
# make WITH_MYSQL=YES WITH_FLEXRESP=YES install
Remarque: Sur Fedora, l'installation peut être effectuée avec la commande: "yum install snort"
Pour automatiser le lancement de Snort au démarrage du serveur FreeBSD, il faut éditer le fichier /etc/rc.conf et ajouter les lignes suivantes:
snort_enable="YES"
snort_interface:="bge0"
PS: il faut remplacer bge0 par le nom de l'interface qui se trouve du coté du réseau que l'on veut surveiller
Configuration de la base de donnée
Snort utilise une base de donnée pour stocker les attaques. Le schéma de la base de donnée se trouve dans le fichier ../usr/ports/security/snort/work/snort-<version>/schemas/create_mysql, il faut alors effectuer les taches suivantes sur la machine qui héberge votre serveur MySQL:
# mysql -u root -p
mysql> CREATE DATABASE snort;
mysql> GRANT ALL PRIVILEGES ON snort.* TO 'snortuser'@'localhost' IDENTIFIED BY 'snortpassword';
mysql> FLUSH PRIVILEGES;
# mysql -u root -p snort < ./create_mysql
Configuration de Snort
Le fichier de configuration par défaut se nomme snort.conf (sous FreeBSD dans /usr/local/etc/snort). Par rapport au fichier par défaut, j'ai juste modifié les deux lignes suivantes:
# vi /usr/local/etc/snort/snort.conf
var HOME_NET [192.168.1.0/24]
output database: log, mysql, user=snortuser password=snortpassword dbname=snort host=localhost
var SSH_PORTS 22
include $RULE_PATH/bleeding-all.rules
Il faut également mettre en commentaire toutes les autres lignes commencant par include "$RULE_PATH".
Dans cette configuration, les attaques seront logger à la fois dans le fichier standard (/var/log/snort sous FreeBSD) et dans la base de donnée.
Initialisation des règles (attaques)
De nouvelles attaques apparaissant tous les jours, une mise à jour régulière des règles doit être effectuée. Direction le site officiel pour s'enregistrer en ligne et récupérer les dernières règles stables pour votre version de Snort.
Une fois les règles téléchargées (Sourcefire VRT Certified Rules - The Official Snort Ruleset (registered user release)), il faut les décompresser dans le répertoire /usr/local/etc/snort/rules.
Cette opération est à faire régulièrement, à chaque mise à jour des règles.
Lancement de Snort
On ajoute les options suivantes dans le fichier rc.d (sous FreeBSD):
# SNORT
snort_enable="YES"
snort_interface="em0"
Il ne reste plus qu'a lancer Snort.
Sous FreeBSD:
# /usr/local/etc/rc.d/snort start
Sous Fedora:
# service snort start
Comment exploiter les résultats
C'est très bien d'avoir un IDS en fonctionnement, mais maintenant comment voir et analyser les résultats...
Le plus rapide est d'aller voir le fichier alert (sous /var/log/snort). C'est ici qu'est logger la liste des attaques reconnus par vos règles.
Si vous voulez une interface plus "user friendly", vous pouvez utiliser Base, un autre outil open source proposant une interface Web pour l'analyse des logs venant de Snort.