TOTAL
Depuis Dec 2006
1'942'871 Visiteurs
4'218'042 Pages

Stats Nov 2010
82'909 Visiteurs
146'476 Pages
196 pays
Statistiques completes



Aidez-nous à traduire
nos tutoriaux!

REJOINGNEZ
l'équipe OpenManiak.
SNORT_INLINE - Le Tutorial Facile - Lancer Snort_Inline

Snort_Inline Lancement
Dernière modif: Dec 06 2007


Outil
Installation
Ergonomie
Forum



Détails Snort_Inline, c'est quoi?
Captures d'écran
Prérequis
Installation
Oinkmaster - Règles Snort
Oinkmaster - Règles Bleeding
Lancer Snort_Inline
BASE
Construire un pont (bridge)



⚠️⚠️⚠️
Please check our website about
attractions in Western Switzerland !! (Please use english translation).

⚠️⚠️⚠️
Merci de consulter notre site sur les
activités à faire en Suisse romande !!


Netfilter & Snort_Inline

NetFilter est un module du noyau de Linux disponible depuis la version 2.4 du noyau. Il fournit trois principales fonctionnalités:

- filtrage de paquet - Accepte ou rejette des paquets
- NAT - Change la source ou la destination IP d'un paquet réseau
- "Packet Mangling" - Modifie les paquets (utilisé par exemple pour la qualité de service, QoS)

Iptables est un outil pour configurer Netfilter. Il doit être lancé en tant que root.

Netfilter met en queue des paquets vers Snort_Inline dans l'espace utilisateur (user space) avec l'aide du module du noyau Linux ip_queue et libipq.
Puis, si un paquet correspond à une signature d'attaque de Snort_Inline, it est marqué par libipq et revient vers le noyau où est rejeté.

snort_inline netfilter kernel noyau user space queue
Deux modes Snort_Inline sont disponibles:

"Drop Mode" (mode rejet)
Les paquets sont rejetés si ils correspondent à une signature d'attaque, ce mode est celui que nous utilisons dans notre tutorial
Trois options sont disponibles dans ce mode:
- Drop: rejette un paquet, envoie un message "reset" vers l'émetteur, journalise l'événement.
- Sdrop: rejette un paquet sans envoyer un message "reset" en retour vers l'émetteur.
- Ignore: rejette un paquet, envoie un message "reset" vers l'émetteur, ne journalise pas l'événement.

"Replace Mode" (mode remplacement)
The packets are modified if they match an attack signatures.



Chargement du module du noyau ip_queue

Nous devons charger le module ip_queue et vérifier si l'opération a bien été effectuée:

#modprobe ip_queue
#lsmod | grep ip_queue
ip_queue 11424 0

Pour décharger ip_queue:"modprobe -r ip_queue"

Configuration d'Iptables pour tester Snort_Inline

Il s'agit maintenant d'effetuer des tests pour voir si tout marche bien.
Tout d'abord nous avons besoin de configurer Netfilter avec l'outil Iptables.
Nous configurons ci-dessous une règle Netfilter pour envoyer tout le trafic entrant vers la queue où il sera analysé contre les règles de Snort_Inline.

iptables -A INPUT -j QUEUE
Vérifiez vos règles:

#iptables -L
Chain INPUT (policy ACCEPT)
target      prot       opt     source         destination
QUEUE     all         --      anywhere      anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


Si vous voulez supprimer vos règles Iptables: "iptables -F"

Obtenez plus d'information sur iptables.


Lancement de Snort_inline

#snort_inline -Q -v -c /etc/snort_inline/snort_inline.conf -l /var/log/snort_inline
-Q -> process le trafic mis en queue
-v -> verbose
-l -> chemin des journaux (logs)
-c -> chemin du fichier de configuration

Il est nécessaire de charger le module ip_queue si avez le message suivant:

Reading from iptables
Running in IDS mode
Initializing Inline mode
InitInline: : Failed to send netlink message: Connection refused



Analyse des journaux (logs):

Vérifions que Snort_Inline fontionne correctement. Nous vous proposons deux manière pour le faire:

1. Premier test

Nous pouvons simuler une attaque en accédant simplement à une page web situé sur la machine Snort_Inline depuis cette même machine parce que ceci correspondra à une règle d'attaque Snort.
Par exemple, vous pouvez ouvrir Firefox et entrer http://localhost.

Journal rapide (quick log)

#tail -f /var/log/snort_inline/snort_inline-fast
03/07-12:39:27.127882 [**] [116:151:1] (snort decoder)
Bad Traffic Same Src/Dst IP [**] {TCP} 127.0.0.1:41050 -> 127.0.0.1:80

03/07-12:39:27.127882 [**] [116:150:1] (snort decoder)
Bad Traffic Loopback IP [**] {TCP} 127.0.0.1:41050 -> 127.0.0.1:80


Journal complet (full log)

#tail -f /var/log/snort_inline/snort_inline-full
[**] [116:151:1] (snort decoder) Bad Traffic Same Src/Dst IP [**]
03/07-12:37:03.036694 127.0.0.1:53110 -> 127.0.0.1:80
TCP TTL:64 TOS:0x0 ID:16812 IpLen:20 DgmLen:60 DF
******S* Seq: 0x9B74D9F2 Ack: 0x0 Win: 0x7FFF TcpLen: 40
TCP Options (5) => MSS: 16396 SackOK TS: 115788 0 NOP WS: 2

[**] [116:150:1] (snort decoder) Bad Traffic Loopback IP [**]
03/07-12:37:03.036694 127.0.0.1:53110 -> 127.0.0.1:80
TCP TTL:64 TOS:0x0 ID:16812 IpLen:20 DgmLen:60 DF
******S* Seq: 0x9B74D9F2 Ack: 0x0 Win: 0x7FFF TcpLen: 40
TCP Options (5) => MSS: 16396 SackOK TS: 115788 0 NOP WS: 2

Capture d'écran BASE: (Voir le tutorial BASE)

BASE base analysis and security engine snort_inline  Bad Traffic Same Src/Dst IP Loopback IP
2. Deuxième test

Nous ajoutons une règle de signature pour rejeter tout le trafic web entrant:
Ajoutez la règle suivante dans le fichier /etc/snort_inline/rules/web-attacks.rules.

#vi /etc/snort_inline/rules/web-attacks.rules
drop tcp any any -> any 80 (classtype:attempted-user; msg:"Snort_Inline bloque le traffic!";)
Quick log

#tail -f /var/log/snort_inline/snort_inline-fast
04/01-18:11:39.454787 [**] [1:0:0] Snort_Inline bloque le traffic!
[**] [Classification: Attempted User Privilege Gain] [Priority: 1]
{TCP} 192.168.1.3:1626 -> 192.168.1.101:80


Full Log

#tail -f /var/log/snort_inline/snort_inline-full
[**] [1:0:0] Snort_Inline bloque le traffic! [**]
[Classification: Attempted User Privilege Gain] [Priority: 1]
04/01-18:11:39.454787 192.168.1.3:1626 -> 192.168.1.101:80
TCP TTL:128 TOS:0x0 ID:47535 IpLen:20 DgmLen:48 DF
******S* Seq: 0x612540DD Ack: 0x0 Win: 0xFFFF TcpLen: 28
TCP Options (4) => MSS: 1460 NOP NOP SackOK


Capture d'écran BASE: (Voir le tutorial BASE)

BASE base analysis and security engine snort_inline  Classification: Attempted User Privilege Gain


Scripts de démarrage

Créez un fichier appelé snort_inlined et ajoutez le script ci-dessous pour démarrer facilement snort_Inline:

#vi /etc/init.d/snort_inlined
#!/bin/bash
#
# snort_inline

start(){
# Démarrrer les démons.
echo "Démarrage du module ip_queue:"
lsmod | grep ip_queue >/dev/null || /sbin/modprobe ip_queue;

#
echo "Démarrage des règles iptables:"
# traffic iptables envoyé vers la QUEUE:
# accepte accept les connexions internes
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

# envoie tous le traffic entrant, sortant et "forward" vers la QUEUE
iptables -A INPUT -j QUEUE
iptables -A FORWARD -j QUEUE
iptables -A OUTPUT -j QUEUE

# Démarrage de Snort_inline
echo "Démarrage de snort_inline: "
/usr/local/bin/snort_inline -c /etc/snort_inline/snort_inline.conf -Q -D -v \
-l /var/log/snort_inline

# -Q -> process le traffic en queue
# -D -> lancer en tant que démon
# -v -> verbose
# -l -> chemin vers les journaux (log)
# -c -> chemin vers le fichier de configuration
}

stop() {
# Stopper les démons.
# Stopper Snort_Inline
# echo "Arrêt de snort_inline: "
killall snort_inline
# Supprime toutes les règles iptables et
# configure les stratégies (policies) Netfilter par défaut à "accept"
echo "Suppression des règles iptables:"
iptables -F

# -F -> flush iptables
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# -P -> stratégie (policy) par default
}

restart(){
stop
start
}

case "$1" in

start)
start
;;

stop)
stop
;;

restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart|}"
exit 1
esac
Démarrage du script snort_inlined:

#/etc/init.d/snort_inlined start
Démarrage du module ip_queue:
Démarrage des règles iptables:
Démarrage de snort_inline:
Reading from iptables
Initializing Inline mode


Vérification que Snort_inline est lancé:

#ps -ef | grep snort_inline
root 5743 1 0 19:53 ? 00:00:01 /usr/local/bin/snort_inline -c /etc/snort_inline/snort_inline.conf -Q -D -v -l /var/log/snort_inline

Vérification de vos règles Iptables:

#iptables -L
Chain INPUT (policy ACCEPT)
target      prot    opt    source       destination
ACCEPT    all      --     localhost    localhost
QUEUE     all      --     anywhere    anywhere

Chain FORWARD (policy ACCEPT)
target      prot    opt    source       destination
QUEUE     all      --     anywhere    anywhere

Chain OUTPUT (policy ACCEPT)
target      prot    opt    source       destination
ACCEPT    all      --     localhost    localhost
QUEUE     all      --     anywhere    anywhere


update-rc.d

update-rc.d est un outil pour installer ou supprimer facilement des scripts de démarrage.
Nous allons l'utiliser pour configurer Debian ou Ubuntu dans le but de lancer le script snort_inlined lors du démarrage du système.

#update-rc.d snort_inlined defaults 95
Soyez très prudent avec update-rc.d, une utilisation inappropriée de cette commande peut empêcher le système de démarrer.
Si vous ne voulez plus lancer le script snort_inlined au démarrage, utilisez la commande suivante: "update-rc.d -f snort_inlined remove"



Donnez-nous vos impressions sur ce tutorial !!!