Snort inline

From aldeid
Jump to navigation Jump to search

snort_inline

Références

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
Note
La compilation avec l'option --enable-libipq permet d'assurer l'installation de libipq sur laquelle snort_inline se base.
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.

  1. cd /etc/snort_inline/
  2. wget http://www.snort.org/pub-bin/oinkmaster.cgi/<code_oinkmaster>/snortrules-snapshot-2.6.tar.gz
  3. 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