Snort inline
snort_inline
Références
- http://ftp.traduc.org/doc-vf/gazette-linux/html/2005/117/lg117-G.html
- http://ftp.traduc.org/doc-vf/gazette-linux/html/2005/118/lg118-F.html
- http://openmaniak.com/fr/inline_final.php
Description
Snort_Inline est une version améliorée de Snort. Cette version, basée sur le noyau de Snort v2.6, ne se base pas sur la librairie libpcap comme Snort, mais sur iptables.
Installation
A partir des sources
Pré-requis
iptables
Désinstallation préalable de iptables
# apt-get --purge remove iptables
Installation à partir des sources
# cd /usr/local/src/ # wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.3.2.tar.bz2 # bzip2 -cd iptables-1.4.3.2.tar.bz2 | tar xvf - # cd iptables-1.4.3.2/ # make install-devel
libnet
# cd /usr/local/src/ # wget http://freefr.dl.sourceforge.net/sourceforge/libnet-dev/libnet-1.1.3.tar.gz # tar xzvf libnet-1.1.3.tar.gz # cd libnet-1.1.3/ # ./configure # make # make install
pcre
Pcre (Perl-Compatible Regular Expressions) correspond à la bibliothèque d'expressions régulières compatible avec Perl. Pour l'installer :
# cd /usr/local/src/ # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz # tar xzvf pcre-7.9.tar.gz # cd pcre-7.9/ # ./configure # make # make install
libpcap
Voir installation à partir des sources.
libdnet
# cd /usr/local/src/ # wget http://prdownloads.sourceforge.net/libdnet/libdnet-1.11.tar.gz?download # tar xzvf libdnet-1.11.tar.gz # cd libdnet-1.11/ # ./configure # make # make install
Téléchargement, compilation et installation
# cd /usr/local/src/ # wget http://freefr.dl.sourceforge.net/sourceforge/snort_inline/snort_inline-2.6.1.5.tar.gz # tar xzvf snort_inline-2.6.1.5.tar.gz # cd snort_inline-2.6.1.5/ # ./configure # make # make install
Paramétrage
Création des répertoires
# mkdir -p /etc/snort_inline/rules/ # mkdir /var/log/snort_inline/
Fichiers de configuration
# cp /usr/local/src/snort_inline-2.6.1.5/etc/* /etc/snort_inline/
Règles
# cd /usr/local/src/snort_inline-2.6.1.5/etc/ # cp classification.config reference.config /etc/snort_inline/rules/
Paramétrage du fichier de configuaration principal
# cd /etc/snort_inline/ # vim snort_inline.conf
Puis effectuer les modifications suivantes :
--- Remplacer: var HOME_NET any var EXTERNAL_NET any Par: var HOME_NET 172.16.68.129/32 var EXTERNAL_NET !$HOME_NET --- Remplacer : var RULE_PATH /etc/snort_inline/drop-rules par : var RULE_PATH /etc/snort_inline/rules ---
Activation du mode d'interception
Activation de ip_queue
Afin que snort_inline intercepte tout le trafic, il est nécessaire d'activer ip_queue comme suit :
# modprobe ip_queue
Vérifier que ip_queue est actif :
# lsmod | grep ip_queue ip_queue 10368 0
Si ip_queue est actif, la commande ci-dessus doit fournir un résultat.
Paramétrage de iptables
Afin que iptables envoie le trafic web (port tcp/80) à ip_queue, utilisez la commande suivante :
# iptables -I INPUT -p tcp --dport 80 -j QUEUE
Importation d'un jeu de règles : Oinkmaster
Pour pouvoir bénéficier des mises à jour des règles de snort_inline, vous devez vous inscrire sur le portail de Snort, dans la section “Subscribe” . Par ailleurs, nous allons avoir besoin de cette inscription pour télécharger un jeu de règles.
- cd /etc/snort_inline/
- wget http://www.snort.org/pub-bin/oinkmaster.cgi/<code_oinkmaster>/snortrules-snapshot-2.6.tar.gz
- tar xvzf snortrules-snapshot-2.6.tar.gz
Tests de snort_inline
Afin de tester que snort_inline fonctionne correctement, lancez la commande suivante :
# snort_inline \ -c /etc/snort_inline/snort_inline.conf \ -Q -N \ -l /var/log/snort_inline/ \ -t /var/log/snort_inline/ \ -v
Lorsque Snort_inline a correctement démarré, vous devez obtenir un message comme celui-ci :
--== Initialization Complete ==-- ,,_ -*> Snort_Inline! <*- o" )~ Version 2.6.1.5 (Build 59) inline ' By Martin Roesch & The Snort Team: http://www.snort.org/team.html Snort_Inline Mod by William Metcalf, Victor Julien, Nick Rogness, Dave Remien, Rob McMillen and Jed Haile (C) Copyright 1998-2007 Sourcefire Inc., et al.
Script d'automatisation
# cd /etc/init.d/ # vim snort_inlined
Puis coller les lignes suivantes :
#!/bin/bash start(){ echo "ip_queue starts..." lsmod | grep ip_queue >/dev/null || /sbin/modprobe ip_queue; echo "iptables rules..." iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT iptables -A INPUT -j QUEUE iptables -A FORWARD -j QUEUE iptables -A OUTPUT -j QUEUE echo "Snort_Inline starts..." /usr/local/bin/snort_inline \ -c /etc/snort_inline/snort_inline.conf \ -Q -D -v \ -l /var/log/snort_inline } stop() { killall snort_inline echo "iptables flushes rules..." iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT } restart(){ stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac
Accordez les droits nécessaires au script :
# chmod +x snort_inlined
Puis ajoutez-le au démarrage :
# update_rc.d snort_inlined defaults 95