PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SNORT Problemchen



uTaNG
16.05.03, 12:07
hi, also ich experimentiere derzeit mit SNORT rum, und habe auch einiges an INFoS aus dem Netz gefischt... allerdings habe ich noch bei der Protokollierung im Output paar Probleme...

- sitze direkt am Router (2 Interfaces eth0 -> MODEM && eth1=192.168.99.1)
also meine bissherigen einstellungen...

nach der Installation habe ich eine Seperrate snort.conf erstellt...

snort.conf

# Snort-Konfigurationsdatei
#
var HOME_NET 192.168.99.0/10
var EXTERNAL_NET any
var INCLUDEPATH ./

# Verwende Interface eth0
config interface: eth0

# Verwende einen anderen Benutzerkontext
config set_gid: snort
config set_uid: snort

Preprocessor frag2
Preprocessor stream4
Preprocessor http_decode: 80 8080
Preprocessor portscan: $HOME_NET 4 2 portscan.log

Output log_tcpdump: binary.log
Output alert_syslog: LOG_AUTH LOG_ALERT

Include $INCLUDEPATH/rules.conf

und eine rules.conf um die Optionen zu testen.

rules.conf

alert icmp $EXTERNAL_NET any <> $HOME_NET any (msg: "PING-Paket";)


soweit so gut ... nun müsste er mir nach dieser rule ein Ping Packet protokolieren mit dieser MSG "PING-Paket" drin ... nun wollte ich das testen ...

habe fix 3 Consolen geöffnet:

Console_1 <<-- SNORT gestartet

root@LIAN idide # snort -dve -c /etc/snort/snort.conf
Running in IDS mode
Log directory = /var/log/snort

Initializing Network Interface eth0

--== Initializing Snort ==--
Initializing Output Plugins!
Decoding Ethernet on interface eth0
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file /etc/snort/snort.conf

++++++++++++++++++++++++++++++++++++++++++++++++++ +
Initializing rule chains...

Initializing Network Interface eth0
No arguments to frag2 directive, setting defaults to:
Fragment timeout: 60 seconds
Fragment memory cap: 4194304 bytes
Fragment min_ttl: 0
Fragment ttl_limit: 5
Fragment Problems: 0
Self preservation threshold: 500
Self preservation period: 90
Suspend threshold: 1000
Suspend period: 30
Stream4 config:
Stateful inspection: ACTIVE
Session statistics: INACTIVE
Session timeout: 30 seconds
Session memory cap: 8388608 bytes
State alerts: INACTIVE
Evasion alerts: ACTIVE
Scan alerts: INACTIVE
Log Flushed Streams: INACTIVE
MinTTL: 1
TTL Limit: 5
Async Link: 0
State Protection: 0
Self preservation threshold: 50
Self preservation period: 90
Suspend threshold: 200
Suspend period: 30
http_decode arguments:
Ports to decode http on: 80 8080
Using LOCAL time
1 Snort rules read...
1 Option Chains linked into 1 Chain Headers
0 Dynamic rules
++++++++++++++++++++++++++++++++++++++++++++++++++ +

Rule application order: ->activation->dynamic->alert->pass->log

--== Initialization Complete ==--

-*> Snort! <*-
Version 2.0.0 (Build 72)
By Martin Roesch (roesch@sourcefire.com, www.snort.org)
<cut>


Console_2 <<-- tcpdump gestartet

tcpdump -n icmp -w pingpa
tcpdump: listening on eth0


Console_3 <<-- Einen PING test durch geführt

ping -c1 www.linuxforen.de
PING www.linuxforen.de (62.180.126.148): 56 octets data

--- www.linuxforen.de ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss


ERGEBNIS:
Console_1 <<-- SNORT

05/16-12:55:55.031583 0:90:27:5A:44:C2 -> 0:90:1A:40:9:C4 type:0x8864 len:0x55
80.144.165.5:32834 -> 212.185.251.41:53 UDP TTL:64 TOS:0x0 ID:38805 IpLen:20 DgmLen:63 DF
Len: 35
D4 D0 01 00 00 01 00 00 00 00 00 00 03 77 77 77 .............www
0A 6C 69 6E 75 78 66 6F 72 65 6E 02 64 65 00 00 .linuxforen.de..
01 00 01 ...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+

05/16-12:55:55.077886 0:90:1A:40:9:C4 -> 0:90:27:5A:44:C2 type:0x8864 len:0x89
212.185.251.41:53 -> 80.144.165.5:32834 UDP TTL:56 TOS:0x0 ID:212 IpLen:20 DgmLen:115
Len: 87
D4 D0 81 80 00 01 00 01 00 02 00 00 03 77 77 77 .............www
0A 6C 69 6E 75 78 66 6F 72 65 6E 02 64 65 00 00 .linuxforen.de..
01 00 01 C0 0C 00 01 00 01 00 00 37 55 00 04 3E ...........7U..>
B4 7E 94 C0 10 00 02 00 01 00 00 37 55 00 06 03 .~.........7U...
6E 73 32 C0 10 C0 10 00 02 00 01 00 00 37 55 00 ns2..........7U.
06 03 6E 73 31 C0 10 ..ns1..

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+

05/16-12:55:55.080408 0:90:27:5A:44:C2 -> 0:90:1A:40:9:C4 type:0x8864 len:0x6A
80.144.165.5 -> 62.180.126.148 ICMP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:84 DF
Type:8 Code:0 ID:43104 Seq:0 ECHO
BB C3 C4 3E 68 39 01 00 08 09 0A 0B 0C 0D 0E 0F ...>h9..........
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
30 31 32 33 34 35 36 37 01234567


schien ja noch gut auszusehen, aber...

Console_2 <<-- tcpdump gestopt und snort zum auslesen der tcpdump_logfile "pingpa" gestartet

snort -vdr pingpa
No run mode specified, defaulting to verbose mode
Running in packet dump mode
Log directory = /var/log/snort
TCPDUMP file reading mode.
Reading network traffic from "pingpa" file.
snaplen = 96
<cut>

es wurde nichts Prtokoliert...., selbst nicht in /var/log/snort/

ich hatte eigentlich erwartet das er mir genau das Protokolieren würde + MSG " PING-Paket" stimmt da irgendwas an meiner rule nicht ?

wisnitom
16.05.03, 13:26
hi,

alert icmp $EXTERNAL_NET any <> $HOME_NET any (msg: "PING Paket .. ;)

nein, an der Regel liegt es nicht, habe die hier angegebene gerade mal ausprobiert,
funkioniert - ich logge allerdings nicht per tcpdump sondern in eine mySQL Datenbank
mit ACID als Frontend und zusätzich noch in ../var/log/snort/

nimm doch mal testweise das log_tcpdump bei den output-plugins raus
und logge also nur per alert_syslog, dann sollten dir unter ../var/log/snort
Verzeichnisse entstehen, welche IP-Adressen als Namen haben.

Was auch noch ganz hilfreich ist, wenn du snort auf der Konsole von Hand
gestartet hast und mit STRG-C beendest, bekommst du eine kleine Paket und
Alert Statistik von Snort. Da kannst du ganz gut sehen, ob Snort den Pakete
verarbeitet und Alerts generiert hat.

grüsse,

kehj
16.05.03, 13:45
Aus reiner Neugier, finden sich denn Snort-Ausgaben in deinen Logfiles (output alert_syslog) und existiert denn die Datei "binary.log" ?

Und zu deinem Einlesen der tcpdump-Datei:

snort -vdr pingpa

Da ist 'ne Menge Kram rausgekommen, oder? Kann es sein, daß Snort dir die Pakete angezeigt hat? Auf jeden Fall konnte deine Regel garnicht feuern, du must auch beim Einlesen einer Datei den Schalter -c snort.conf angeben. Sonst wird's nix...

Das es unter /var/log/snort keine Datei alert gibt, ist allerdings verwunderlich. (Oder ich übersehe gerade was...) Vielleicht schließt eins deiner Output-Module das Default-Logging aus? Keine Ahnung...

uTaNG
16.05.03, 15:16
erstmal danke das sich welche gemeldet haben !

so folgendes,

ok, also das mit tcpdump funzt irgendwie noch nicht so richtig ... aber snort funzt und zwar so:

- regeln festelegen, zum Test habe ich jetzt mal

alert tcp $EXTERNAL_NET any <> any 80 (msg: "WEB-Zugriff";)

bei einem WEBzugriff von beiden Seiten soll dies gemeldet werden ...

in der Console habe ich dann nach erneunten rum probieren,folgendes eingegeben:


snort -dve -A full -c /etc/snort/snort.conf -l /var/log/snort/ -b
- v print out the TCP/IP packet headers to the screen
- vd just show the IP and TCP/UDP/ICMP headers
- vde headers+datalink layer info

- A full default alert Mode

- c <snort-Konfiguration>
- l <log-dir>


so dannach funz zumind. snort in der Console, wie gesagt tcpdump kann ihc kniggen, ka,wieso und was ich da falsch gemacht habe ...

nun wenn ein ALERT gemeldet wird kommt es in die Datei /var/log/snort/alert einfach mit "cat" auslesen!

- Neues Problem ich würde gerne das Packet wo die Filterregel zutrifft,komplett, samt inhalt protokolieren ...
- immoment schaut es so aus das er nur den Kopf in alert logt.
- würde nämlich gerne nach content filtern lassen und daher das ganze packet loggen wollen

OK, nun zu den Fragen und Komentaren... :


nimm doch mal testweise das log_tcpdump bei den output-plugins raus
und logge also nur per alert_syslog, dann sollten dir unter ../var/log/snort
Verzeichnisse entstehen, welche IP-Adressen als Namen haben.

das mit der mySQL hebe ich mir noch auf =) das mache ich demnächst mal, das ist mir noch zu viel =)


Was auch noch ganz hilfreich ist, wenn du snort auf der Konsole von Hand
gestartet hast und mit STRG-C beendest, bekommst du eine kleine Paket und
Alert Statistik von Snort. Da kannst du ganz gut sehen, ob Snort den Pakete
verarbeitet und Alerts generiert hat.

jupp, das habe ich oben nur gecutet das ist sehr hilfrei ... wenn alles mit snort funzt kommt er sowieso als Background Prozess [-D]


Aus reiner Neugier, finden sich denn Snort-Ausgaben in deinen Logfiles (output alert_syslog) und existiert denn die Datei "binary.log" ?
jaein, es liegt im /var/log/snort/binary.log.* das stern ist für eine lange zahl die sich sicherlich aus einer identifikation zusammen setzt... allerdings erhalte ich darin nur die letzendlichen Informationen des snort vorgangs.... aber wie es mir scheint nicht die richtigen , da es immer alles null ist ..


snort -vdr pingpa

Da ist 'ne Menge Kram rausgekommen, oder?

nein , nichts, das ist das was mich wundert ...

wisnitom
16.05.03, 16:43
hallo,

content Filterung kannst du doch bereits in deine Rules einbauen

Beispiel:

# überprüft die Pakete auf einen IIS Bug String ".asp\:\:$data"
alert tcp any any -> $HOME_NET 80 (msg: "IIS Data Stream Zugriff"; content: ".asp\:\:$data";)

Ansonsten die Empfehlung - logging in mySQL DB - mit ACID als Frontend, mit ACID
kannst du auch wunderbar in die geloggten Pakete anschauen, inkl. der Payloads.

grüsse

uTaNG
16.05.03, 18:35
werde mal das mit der DB versuchen ....

wenn ich meintwegen "output log_tcpdump: /var/log/snort/binary.log" anschalte und
dann "snort -dve -c /etc/snort/snort.conf" snort starte, und dann mal n refresh einer Inet seite, kommt folgendes in der snort Console:


=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+

05/16-19:16:45.464968 0:90:27:5A:44:C2 -> 0:90:1A:40:9:C4 type:0x8864 len:0x4A
80.144.165.5:47923 -> 62.180.126.148:80 TCP TTL:64 TOS:0x0 ID:22653 IpLen:20 DgmLen:52 DF
***A**** Seq: 0xA0EF70EF Ack: 0x7CDB2C58 Win: 0x5780 TcpLen: 32
TCP Options (3) => NOP NOP TS: 8484233 1765635050

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+

05/16-19:16:45.506346 0:90:1A:40:9:C4 -> 0:90:27:5A:44:C2 type:0x8864 len:0x120
62.180.126.148:80 -> 80.144.165.5:47925 TCP TTL:54 TOS:0x0 ID:49667 IpLen:20 DgmLen:266 DF
***AP*** Seq: 0x7D32DB8F Ack: 0xA0CEF20E Win: 0x7F1A TcpLen: 32
TCP Options (3) => NOP NOP TS: 1765635057 8484219
48 54 54 50 2F 31 2E 31 20 33 30 34 20 4E 6F 74 HTTP/1.1 304 Not
20 4D 6F 64 69 66 69 65 64 0D 0A 44 61 74 65 3A Modified..Date:
20 46 72 69 2C 20 31 36 20 4D 61 79 20 32 30 30 Fri, 16 May 200
33 20 31 37 3A 31 34 3A 34 36 20 47 4D 54 0D 0A 3 17:14:46 GMT..
53 65 72 76 65 72 3A 20 41 70 61 63 68 65 2F 31 Server: Apache/1
2E 33 2E 32 36 20 28 55 6E 69 78 29 20 44 65 62 .3.26 (Unix) Deb
69 61 6E 20 47 4E 55 2F 4C 69 6E 75 78 20 6D 6F ian GNU/Linux mo
64 5F 70 65 72 6C 2F 31 2E 32 36 20 50 48 50 2F d_perl/1.26 PHP/
34 2E 31 2E 32 0D 0A 43 6F 6E 6E 65 63 74 69 6F 4.1.2..Connectio
6E 3A 20 4B 65 65 70 2D 41 6C 69 76 65 0D 0A 4B n: Keep-Alive..K
65 65 70 2D 41 6C 69 76 65 3A 20 74 69 6D 65 6F eep-Alive: timeo
75 74 3D 31 35 0D 0A 45 54 61 67 3A 20 22 61 33 ut=15..ETag: "a3
30 30 35 66 2D 31 35 37 2D 33 63 31 36 30 31 38 005f-157-3c16018
63 22 0D 0A 0D 0A c"....

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+

05/16-19:16:45.544911 0:90:27:5A:44:C2 -> 0:90:1A:40:9:C4 type:0x8864 len:0x4A
80.144.165.5:47925 -> 62.180.126.148:80 TCP TTL:64 TOS:0x0 ID:52309 IpLen:20 DgmLen:52 DF
***A**** Seq: 0xA0CEF20E Ack: 0x7D32DC65 Win: 0x5780 TcpLen: 32
TCP Options (3) => NOP NOP TS: 8484241 1765635057

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=+=+



================================================== =============================
Snort analyzed 120 out of 120 packets, dropping 0(0.000%) packets

Breakdown by protocol: Action Stats:
TCP: 120 (100.000%) ALERTS: 120
UDP: 0 (0.000%) LOGGED: 120
ICMP: 0 (0.000%) PASSED: 0
ARP: 0 (0.000%)
EAPOL: 0 (0.000%)
IPv6: 0 (0.000%)
IPX: 0 (0.000%)
OTHER: 0 (0.000%)
DISCARD: 0 (0.000%)
================================================== =============================
TCP Stream Reassembly Stats:
TCP Packets Used: 120 (100.000%)
Stream Trackers: 4
Stream flushes: 0
Segments used: 0
Stream4 Memory Faults: 0
================================================== =============================
Snort exiting

theoretisch egal wie und was müsste zumindest irgendetwas ähnliches in der tcpdump-logfile sein ...

ich lese das logfile mit "snort -dev -r /var/log/snort/binary*" aus und es erscheint:


================================================== =============================

Snort processed 120 packets.
Breakdown by protocol: Action Stats:

TCP: 0 (0.000%) ALERTS: 0
UDP: 0 (0.000%) LOGGED: 0
ICMP: 0 (0.000%) PASSED: 0
ARP: 0 (0.000%)
EAPOL: 0 (0.000%)
IPv6: 0 (0.000%)
IPX: 0 (0.000%)
OTHER: 120 (100.000%)
================================================== =============================


nochnicht einmal das Stimmt mit dem oben überein ...

ist das bbei euch auch so ?