Erweiterte Regeln sind die mächtigsten und flexibelsten Regeln. Sie
ermöglichen Ihnen komplexe Filter basierend auf Bool’scher Logik zu
implementieren. Um diese zu nutzen brauchen Sie grundlegende
Kenntnisse in Mathematik und Logik. Die Regelsyntax ist aber
leichtverständlich.
Übersicht
Um eine neue Regel hinzuzufügen müssen Sie einen beliebigen Namen
im Eingabefeld
Name
eingeben, wählen Sie dann die Aktion
Pakete erfassen/ignorieren.
Geben Sie eine Formel nach der weiter unten erklärten Syntax ein
und klicken anschließend auf
[Hinzufügen/Editieren].
Die neue Regel wird hinzugefügt und ist augenblicklich aktiv. Es
können beliebig viele Regeln hinzugefügt werden. Es sind jedoch nur
die Regeln aktiv, die eine aktivierte Checkbox neben ihrem Namen
haben. Die Regeln können über die entsprechenden Checkboxen
aktiviert/deaktiviert werden. Zum endgültigen Löschen von Regeln
verwenden Sie den Button
[Löschen].
Wenn mehrere Regeln aktiv sind, können Sie das Ergebnis abschätzen,
indem Sie
[Auswerten]
anklicken. Mehrere aktive Regeln werden über den logischen
ODER-Operator gekoppelt, wenn Sie also drei aktive Regeln haben,
nennen wir sie REGEL1, REGEL2, REGEL3, ist das Ergebnis gültig,
sobald mindestens eine der drei Regeln zutrifft.
Sie können Erweiterte Regeln in Verbindung mit konventionellen
Regeln des vorherigen Kapitels verwenden. Wenn Sie mit boolscher
Logik vertraut sind ist es empfehlenswert nur die erweiterten
Regeln zu verwenden da diese eine mehrfache Flexibilität
offerieren. Die Grundregeln werden über einen logischen
UND-Operator mit den Fortgeschrittenenregeln verknüpft.
Syntax Beschreibung
dir
– Paketrichtung.
Mögliche Werte sind
in
(inbound),
out
(outbound), und
pass
(pass-through).
etherproto
– Ethernet Protokol, das 13. und 14. Byte des Paketes. Erlaubte
Werte sind Zahlen (wie
etherproto!=0x0800
für IP) oder allgemeine Kennnamen (wie
etherproto=ARPm
was gleichwertig zu 0x0806 ist).
ipproto
–
IP Protokoll. Erlaubt sind Zahlen (wie
ipproto=0x06
für TCP) oder allgemeine Kennnamen (wie
ipproto=UDP,
was gleichwertig zu 0x11 ist).
smac
–
Source MAC Adresse. Erlaubt sind hier MAC-Adressen in Hexnotation
(wie
smac=00:00:21:0A:13:00F)
oder benutzerdefinierte Kennnamen.
dmac
–
Destination MAC Addresse (Ziel-MAC-Adresse).
sip
– Source IP oder IPv6-Adresse. Erlaubt sind IP-Adressen in
Punktnotation (wie
sip=192.168.0.1 oder sip=
fe80::02c0:26ff:fe2d:edb5),
IP-Adressen mit Wildcards (wie
sip!=*.*.*.255
mit Ausnahme von IPv6 addresses), Netzwerkadressen mit
Subnet-Masken (wie sip=192.168.0.4/255.255.255.240
oder sip=192.168.0.5/28),
IP-Bereiche (wie sip
from 192.168.0.15 to 192.168.0.18 oder sip in 192.168.0.15 ..
192.168.0.18
) oder benutzerdefinierte Kennnamen. Die Benutzung von
IPv6-Adressen erfordert Windows XP oder höher und die
IPv6-Stapelung muss installiert sein.
dip
- Ziel-IP- oder IPv6-address.
sport
–
Source Port (Ausgangs-Port) für TCP- und UDP-Pakete. Erlaubt sind
Zahlen (wie
sport=80
für HTTP), Bereiche (wie
sport von 20 bis 50
oder
sport in 20..50
für alle Portnummer zwischen 20 und 50) oder die vom Betriebssystem
definierten Kennnamen (wie
sport=ftp,
was gleichwertig zu 21 ist). Um die Liste aller
Betriebssystemkennnamen zu erhalten klicken Sie bitte auf
Ansicht => Portreferenz.
dport
–
Ziel-Port (Ziel-Port) für TCP- und UDP-Pakete.
flag
–
TCP flag. Erlaubt sind Zahlen (wie
0x18
für PSH ACK) oder ein bzw. mehrere der folgenden Zeichen:
F
(FIN),
S
(SYN),
R
(RST),
P
(PSH),
A
(ACK), und
U
(URG) oder das Schlüsselwort
has
(ist). Dies bedeutet, dass das Flag einen bestimmten Wert enthält.
Beispiele:
flag=0x18,
flag=SA,
flag has F.
size
–
Packet size (Paketgröße). Erlaubt sind Zahlen (wie
size=1514)
oder Bereiche (wie
size from 64 to 84
oder
size in 64..84
für jede Größe zwischen 64 und 84).
str
– Paketinhalt. Wählen Sie dieses Argument, wenn das Paket einen
bestimmten String enthalten muß. Es gibt drei Argumente: string,
position und case sensitivity (Groß-/Kleinschreibung beachten). Das
erste Argument ist ein String, wie
'GET'.
Das zweite Argument ist eine Zahl, welche die Stringposition
(Offset) im Paket festlegt. Das Offset ist nullbasierend, d. h.
wenn Sie das erste Byte des Paketes suchen, muss der
Offsetwert
0
sein. Wenn das Offset ohne Bedeutung ist, wählen sie
–1.
Das dritte Argument legt die Bedeutung der Groß-/Kleinschreibung
fest. Es ist entweder
false
(case-insensitive) oder
true
(case-sensitive). Das zweite und dritte Argument sind optional.
Wenn hier nichts eingetragen wird ist der Standardwert
–1
und die case-sensitivity Einstellung ist
false.
Beispiele:
str('GET',-1,false), str('GET',-1), str ('GET').
hex
–
Paketinhalt. Verwenden Sie diese Funktion, wenn das Paket bestimmte
Hexadezimalwerte enthalten muß. Diese Funktion hat zwei Argumente:
Hexmuster und Position. Das erste Argument ist ein Hexwert,
wie
0x4500.
Das zweite Argument ist eine Zahl, welche die Musterposition
(Offset) im Paket definiert. Das Offset ist nullbasierend, d. h.
wenn Sie das erste Byte des Paketes suchen, muss der
Offsetwert
0
sein. Wenn das Offset ohne Bedeutung ist, wählen sie
–1.
Das zweite Argument ist optional, wenn es weggelassen wird, ist die
Standardeinstellung
–1.
Beispiele:
hex(0x04500, 14), hex(0x4500, 0x0E), hex
(0x010101).
bit
-
Paketinhalt. Mit dieser Funktion ermitteln Sie, ob ein bestimmtes
Bit eines definierten Offsets auf 1 gesetzt ist, so dass die
Funktion
true
ausgegeben wird. Sollte das definierte Bit 0 sein oder außerhalb
der Paketgrenzen liegen, so ergibt die Funktion
false.
Diese Funktion hat zwei Argumente: Bit-Index und
Byte-Position.
Das erste Argument ist der Bit-Index im Byte.
Die erlaubten Werte sind hier im Bereich 0-7. Der Index ist
nullbasierend, d. h. wenn Sie das 8. Bit suchen ist der
Indexwert
7.
Das zweite Argument ist die Zahl, die die Byte-Position (Offset) im
Paket definiert.
Auch dies ist nullbasierend, d. h. das 1. Bit hat den Wert
0.
Beide Argumente sind zwingend notwendig. Beispiele:
bit(0, 14)
,
bit(5, 1).
Die oben genannten Schlüsselwörter können mit den folgenden
Operatoren verwendet werden:
and
-
Bool’sche Verknüpfung.
or
-
Bool’sche Unterscheidung.
not
- Bool’sche Verneinung.
=
-
Arithmetisch gleich.
!=
-
Arithmetisch ungleich.
<>
- Arithmetisch ungleich.
>
-
Arithmetisch größer als.
<
-
Arithmetisch kleiner als.
( )
–
Runde Klammer, Operatorenvorrangsregel.
Zahlen entweder in Dezimal- oder Hexadezimalschreibweise. In der
Hexnotation muß 0x vor jeder Zahl stehen, z. B. 15 oder
0x0F.
Beispiele
Folgende Beispiele zeigen die Regelsyntax. Jede Regel besitzt einen
Kommentar zur Regelerklärung. Die Kommentare folgen nach zwei
Schrägstrichen. Die Kommentare folgen nach zwei
Schrägstrichen.
·dir!=pass
// Erfasst nur ankommende und ausgehende Pakete. Durchgehende
Pakete von anderen LAN Teilnehmen werden ignoriert.
·(smac=00:00:21:0A:13:00E
or
smac=00:00:21:0A:13:00F)
and
etherproto=arp
// Empfängt die ARP-Pakte, die von den zwei Computern
00:00:21:0A:13:00E und 00:00:21:0A:13:00F gesendet
werden.
·ipproto=udp
and
dport=137
// Empfängt die UDP-/IP-Pakete die an Port 137 gesendet
werden.
·dport=25
and
str('RCPT
TO:', -1, true)
// Empfängt die TCP/IP- oder UDP/IP-Pakete, welche "'RCPT TO:"
enthalten und die den Zielport 25 haben.
·not
(sport>110)
// Empfängt alle Pakete, außer denen, deren Quellport größer als
110 ist.
·(sip=192.168.0.3
and
dip=192.168.0.15)
or
(sip=192.168.0.15
and
dip=192.168.0.3)
// Empfängt nur die IP-Pakete, die zwischen den Maschinen
192.168.0.3 und 192.168.0.15 ausgetauscht werden. Alle anderen
Pakete werden ignoriert.
·((sip
from 192.168.0.3 to 192.168.0.7)
and
(dip
=
192.168.1.0/28))
and (flag=PA)
and (size
in 200..600)
// Empfängt die TCP-Pakete, deren Größe zwischen 200 und 600 Bytes
ist und die aus dem IP-Bereich 192.168.0.3 - 192.168.0.7 kommen,
deren IP-Zieladresse im Bereich 192.168.1.0/255.255.255.240 liegt
und deren TCP-Flag PSH ACK ist.
·Hex(0x0203,
89)
and (dir<>in)
// Empfängt die Pakete, die 0x0203 im Offset 89 enthalten und deren
Paketrichtung nicht inbound ist.
|