|
|||||||||||
|
|
Regeln für Fortgeschrittene 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 Erweiterte Regeln zu verwenden da diese ein mehrfaches an 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:0F) 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 Destination IP address (Ziel-IP-Adresse). 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 Destination 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.
|