Mise en place d'un système de détection d'intrusion avec snort.( Télécharger le fichier original )par Yanice CHACHA Ecole Supérieure de Gestion d'Informatique et des Sciences - Licence en Ingénierie Informatique et Réseaux (Option: Systèmes Réseaux et Sécurité;) 2013 |
IV- Installation et Configuration de snort1. Configuration matériel- une machine virtuelle Debian 7.6 (serveur) configurée avec deux cartes réseaux : une en « host-only » servant d'interface de management et l'autre en bridge servant d'interface de collection ; mémoire ram 1giga. L'iso de la distribution debian7.6-nestinst est disponible sur le lien http://www.debian.org/distrib/netinst - une machine virtuelle Debian 7.6 version desktop dans le même réseau host-only pour les tests 2. Installation et configurationAprès l'installation de la machine serveur qui abritera le service snort, il est nécessaire de mettre à jour le système pour disposer des versions récentes des services nécessaire au bon fonctionnement du serveur Debian. Il s'agit de lancer sur le serveur la commande apt-get update && apt-get upgrade en mode root. Pour l'administration du serveur à distance il faut ensuite installer le service ssh par la commande apt-get install openssh-server toujours en tant que super administrateur (root). A présent toute l'installation et les configurations vont se faire depuis ma machine physique avec l'outil de connexion à distance putty - Je me connecte alors avec putty et je passe en root Réalisé et présenté par Yanice CHACHA 25 Mise en place d'un système de détection d'intrusion avec SNORT a- Installation des dépendances et prérequis - L'installation de snort nécessite certaines dépendances qu'il faut impérativement installer de la manière suivante : # apt-get update && apt-get -y install apache2 apache2-doc autoconf automake bison ca-certificates ethtool flex g++ gcc gcc-4.4 libapache2-modphp5 libcrypt-ssleay-perl libmysqlclient-dev libnet1 libnet1-dev libpcre3 libpcre3-dev libphp-adodb libssl-dev libtool libwww-perl make mysqlclient mysql-common mysql-server ntp php5-cli php5-gd php5-mysql php-pear sendmail sysstat usbmount Réalisé et présenté par Yanice CHACHA 26 Mise en place d'un système de détection d'intrusion avec SNORT - Certains prérequis sont également nécessaires. Il s'agit des paquets libpcap, libdnet, et DAQ qu'il faut télécharger et compiler de la manière suivante : Compilation de libpcap: # cd /usr/src && wget http://www.tcpdump.org/release/libpcap-1.6.1.tar.gz # tar -zxf libpcap-1.6.1.tar.gz && cd libpcap-1.6.1 # ./configure --prefix=/usr && make && make install Compilation de libdnet: # cd /usr/src && wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz # tar -zxf libdnet-1.12.tgz && cd libdnet-1.12 # ./configure --prefix=/usr --enable-shared && make && make install Compilation de daq: # cd /usr/src && wget https://www.snort.org/downloads/snort/daq-2.0.2.tar.gz # tar -zxf daq-2.0.2.tar.gz && cd daq-2.0.2 # ./configure && make && make install - Après compilation il est nécessaire de mettre à jour le chemin vers certaines librairies partagées ; ceci passe par l'exécution des commandes suivantes : # echo >> /etc/ ld.so.conf /usr/lib # echo >> /etc/ ld.so.conf /usr/local/lib && ldconfig b- Installation et configuration de snort Cette étape consiste à récupérer le paquet snort-2.9.6.2.tar.gz sur le site officiel de snort. Les captures ci-dessus expliquent le cheminement à suivre : - Configuration interface Réalisé et présenté par Yanice CHACHA 27 Mise en place d'un système de détection d'intrusion avec SNORT - On se déplace dans le répertoire /usr/src - on télécharge le paquet compressé de snort-2.9.6.2 - ensuite on le décompresse avec la commande tar - On se déplace ensuite dans le répertoire obtenu pour effectuer la compilation Réalisé et présenté par Yanice CHACHA 28 Mise en place d'un système de détection d'intrusion avec SNORT Réalisé et présenté par Yanice CHACHA 29 Mise en place d'un système de détection d'intrusion avec SNORT -make et make install Réalisé et présenté par Yanice CHACHA 30 Mise en place d'un système de détection d'intrusion avec SNORT - On crée les répertoires à utiliser pour la configuration de snort : Réalisé et présenté par Yanice CHACHA 31 Mise en place d'un système de détection d'intrusion avec SNORT - Création des fichiers à utiliser pour la configuration de snort - Création du groupe snort et ajout de l'utilisateur snort à ce groupe Mise en place d'un système de détection d'intrusion avec SNORT - On rend l'utilisateur snort propriétaire des fichiers de journalisation (logs) Réalisé et présenté par Yanice CHACHA 32 - Copie des fichiers de configuration dans les dossiers principaux de configuration Réalisé et présenté par Yanice CHACHA 33 Mise en place d'un système de détection d'intrusion avec SNORT - On télécharge un exemplaire du fichier snort.conf Mise en place d'un système de détection d'intrusion avec SNORT Réalisé et présenté par Yanice CHACHA 34 - Copie de l'exemplaire du fichier snort.conf dans /usr/local/etc/snort/ Réalisé et présenté par Yanice CHACHA 35 Mise en place d'un système de détection d'intrusion avec SNORT - Edition du fichier snort.conf : # vi /usr/local/etc/snort/snort.conf On modifie les lignes suivantes: 45, 48, 104, 109, 110, 293, 521 et 543 - Sur les lignes 45 et 46 on inique l'adresse du réseau local comme suit Réalisé et présenté par Yanice CHACHA 36 Mise en place d'un système de détection d'intrusion avec SNORT - On applique les modifications à la ligne 104 comme telle - On modifie les lignes 109 et 110 comme dans la capture Réalisé et présenté par Yanice CHACHA 37 Mise en place d'un système de détection d'intrusion avec SNORT - On ajoute juste après «decompress_depth 65535» max_gzip_mem 104857600 sur la ligne 293 - On ajoute ces paramètres sur la ligne 521 output unified2: filename snort.log, limit 128 - On supprime ou on commente toutes les lignes «include $RULE_PATH» sauf celle de «local.rules» après la ligne 543 - On édite le fichier local.rules dans /usr/local/etc/snort/rules/ - # vi /usr/local/etc/snort/rules/local.rules Mise en place d'un système de détection d'intrusion avec SNORT - On entre une simple règle comme ceci pour tester: - alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:1;) - on enregistre et on ferme Réalisé et présenté par Yanice CHACHA 38 - on fait un premier essai pour voir si snort répond à l'alerte Réalisé et présenté par Yanice CHACHA 39 Mise en place d'un système de détection d'intrusion avec SNORT - résultat du test Réalisé et présenté par Yanice CHACHA 40 Mise en place d'un système de détection d'intrusion avec SNORT Installation et configuration de barnyard : On récupère l'archive master.tar.gz et on le décompresse et on se déplace ensuite dans le dossier barynyard2 -master obtenu - # cd /usr/src && wget https://github.com/firnsy/barnyard2/archive/master.tar.gz - # tar -zxf master.tar.gz && cd barnyard2-* - Ensuite on tape les commandes suivantes : - On déplace le fichier de configuration barnyard2.conf dans /usr/local/etc/snort et on copie le fichier create_mysql dans /usr/src # mv /usr/local/etc/barnyard2.conf /usr/local/etc/snort # cp schemas/create_mysql /usr/src - Il faut alors configurer barnyard2 en éditant son fichier de configuration de la manière suivante Mise en place d'un système de détection d'intrusion avec SNORT - On modifie les lignes 27, 28, 29 et 30 comme ci-après Réalisé et présenté par Yanice CHACHA 41 - Ensuite on modifie la ligne 227 comme suit Réalisé et présenté par Yanice CHACHA 42 Mise en place d'un système de détection d'intrusion avec SNORT - Par finir on ajoute à la fin de ce fichier la ligne suivante : output database: log, mysql, user=snort password=<mypassword> dbname=snort host=localhost où « mypassword » est le mot de passe qui sera utiliser lors de la création de la base de donnée snort (mot de passe de l'utilisateur snort) Réalisé et présenté par Yanice CHACHA 43 Mise en place d'un système de détection d'intrusion avec SNORT - Il faut ensuite créer la base snort en suivant les étapes ci-dessus # mysql -u root -p # ici on entre le mot de passe créer lors de l'installation de mysql-server mysql> create database snort; mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost; mysql> SET PASSWORD FOR snort@localhost=PASSWORD ('mypassword'); # ajouter le mot de passe de l'utilisateur snort mysql> use snort; mysql> source /usr/src/create_mysql mysql> show tables; # on devrait voir la listes des nouvelles tables qui ont été importées. mysql> exit - Maintenant on démarre snort et barnyard avec la commande ci-dessous : # /usr/local/bin/snort -q -u snort -g snort -c /usr/local/etc/snort/snort.conf -i eth1& # /usr/local/bin/barnyard2 -c /usr/local/etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /usr/local/etc/snort/bylog.waldo -C /usr/local/etc/snort/classification.config & - Ensuite on ping l'interface de mangement depuis une autre machine - Résultat du ping : La commande suivante montre que barnyard est correctement inséré dans la base de données: # mysql -u root -p -D snort -e "select count(*) from event" - On configure apache ; on copie le fichier default-ssl dans sites-enabled - Par suite on édite le fichier /etc/php5/apache2/php.ini Réalisé et présenté par Yanice CHACHA 44 Mise en place d'un système de détection d'intrusion avec SNORT - En modifiant la ligne 463 - On active alors le module ssl avec la commande a2enmod ssl et configure également PHP avec les options ci-après - # pear config-set preferred_state alpha && pear channel-update pear.php.net - # pear install --alldeps Image_Color2 Image_Canvas Image_Graph - Il faut alors redémarrer le service apache2 pour que la configuration prenne effet : /etc/init.d/apache2 restart c- Installation de BASE pour la gestion des alertes depuis une interface graphique - La première étape consiste déjà à télécharger le paquet et le décompresser et donner ensuite provisoirement les droits sur le dossier extrait tous les utilisateurs utilisant le système # cd /usr/src && wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz # tar -zxf base-1.4.5.tar.gz && cp -r base-1.4.5 /var/www/base # chmod 777 /var/www/base Réalisé et présenté par Yanice CHACHA 45 Mise en place d'un système de détection d'intrusion avec SNORT - On se connecte sur l'interface pour finir la configuration de base comme le montre les captures suivantes : - On clique sur continue et on renseigne la langue : dans mon cas j'ai pris «English » et puis on indique le chemin sur d'accessibilité de la base adoddb : /usr/share/php/adodb sur continue Réalisé et présenté par Yanice CHACHA 46 Mise en place d'un système de détection d'intrusion avec SNORT - On renseigne alors les paramètres sur la base de données - On clique sur continues et ensuite Clique "create baseag" une base qui va s'étendre au support snort Réalisé et présenté par Yanice CHACHA 47 Mise en place d'un système de détection d'intrusion avec SNORT - L'étape qui suit est celle de l'authentification pour se connecter sur Base -On va dès à présent créer un script pour mettre en marche snort et barnyard au démarrage : Ce script sera placé dans /etc/init.d/ : # vi /etc/init.d/snortbarn #! /bin/sh # ### BEGIN INIT INFO # Provides: snortbarn # Required-Start: $remote_fs $syslog mysql # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 Réalisé et présenté par Yanice CHACHA 48 Mise en place d'un système de détection d'intrusion avec SNORT # X-Interactive: true # Short-Description: Start Snort and Barnyard ### END INIT INFO . /lib/init/ vars.sh . /lib/lsb/init-functions mysqld_get_param() { /usr/sbin/mysqld --print-defaults | tr " " "\n" | grep -- "--$1" | tail -n 1 | cut -d= -f2 } do_start() { log_daemon_msg "Starting Snort and Barnyard" "" # Make sure mysql has finished starting ps_alive=0 while [ $ps_alive -lt 1 ]; do pidfile=`mysqld_get_param pid-file` if [ -f "$pidfile" ] && ps `cat $pidfile` >/dev/null 2>&1; then ps_alive=1; fi sleep 1 done /sbin/ifconfig eth1 up /usr/local/bin/snort -q -u snort -g snort -c /usr/local/etc/snort/snort.conf -i eth1 & /usr/local/bin/barnyard2 -q -c /usr/local/etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /usr/local/etc/snort/bylog.waldo -C /usr/local/etc/snort/classification.config 2> /dev/null & log_end_msg 0 return 0 } do_stop() { log_daemon_msg "Stopping Snort and Barnyard" "" kill $(pidof snort) 2> /dev/null Mise en place d'un système de détection d'intrusion avec SNORT kill $(pidof barnyard2) 2> /dev/null log_end_msg 0 return 0 } case "$1" in start) do_start ;; stop) do_stop ;; restart) do_stop do_start ;; *) echo "Usage: snort-barn {start|stop|restart}" >&2 exit 3 ;; esac exit 0 - Il faut ensuite rendre ce fichier exécutable et créer les liens symboliques de démarrage En exécutant les commandes : # chmod +x /etc/init.d/snortbarn # insserv -f -v snortbarn
Réalisé et présenté par Yanice CHACHA 50 Mise en place d'un système de détection d'intrusion avec SNORT - L'étape suivante est la mise à jour des règles avec pulledpork dont il faut récupérer l'archive et faire les manipulations suivantes : # cd /usr/src && wget https://pulledpork.googlecode.com/files/pulledpork-0.7.0.tar.gz # tar -zxf pulledpork-0.7.0.tar.gz && cd pulledpork-0.7.0 # cp pulledpork.pl /usr/local/bin && cp etc/*.conf /usr/local/etc/snort Ces captures ci-dessus expliquent clairement la procédure Réalisé et présenté par Yanice CHACHA 51 Mise en place d'un système de détection d'intrusion avec SNORT Réalisé et présenté par Yanice CHACHA 52 Mise en place d'un système de détection d'intrusion avec SNORT - Ensuite il la commande ci-dessus pour désactiver tous les blocks de règles fwsam # echo pcre:fwsam >> /usr/local/etc/snort/disablesid.conf Réalisé et présenté par Yanice CHACHA 53 Mise en place d'un système de détection d'intrusion avec SNORT - Et on démarre pulledpork avec les commandes ci-dessous # chmod +x /usr/local/bin/ pulledpork.pl # /usr/local/bin/ pulledpork.pl -c /usr/local/etc/snort/pulledpork.conf -T -l Réalisé et présenté par Yanice CHACHA 54 Mise en place d'un système de détection d'intrusion avec SNORT Les fichiers local.rules et snort.rules apparaîtront alors dans le répertoire /usr/local/etc/snort/rules. - On supprimer alors le fichier index.html par défaut dans /var/www, on retire alors le droit d'écriture au groupe et aux autres sur le répertoire base dans /var/www. Il est nécessaire aussi d'arrêter les processus snort et barnyard2 et on supprime le contenu des répertoires log de snort et barnyard2 # rm /var/www/index.html # chmod 755 /var/www/base # pkill snort && pkill barnyard2 # rm -rf /var/log/snort/* /var/log/barnyard2/* Réalisé et présenté par Yanice CHACHA 55 Mise en place d'un système de détection d'intrusion avec SNORT - Par suite on réédite le fichier snort.conf à la ligne 542 de la manière suivante : # vi /usr/local/etc/snort/snort.conf Réalisé et présenté par Yanice CHACHA 56 Mise en place d'un système de détection d'intrusion avec SNORT - En ajoutant à la ligne 542 include $RULE_PATH/snort.rules - Par finir on redémarre snortbarn # /etc/init.d/snortbarn restart Réalisé et présenté par Yanice CHACHA 57 Mise en place d'un système de détection d'intrusion avec SNORT Exemple de règle snort Cette règle permet : - De générer une alerte icmp (un ping) - Provenant de n'importe quel hôte du réseau local - Vers n'importe quel autre hôte du réseau local - Et renvoie un message : ICMP test - Ainsi que l'identifiant de la signature dans la base de données Réalisé et présenté par Yanice CHACHA 58 Mise en place d'un système de détection d'intrusion avec SNORT |
|