Benutzerdefinierte IPS-Signaturen
Mithilfe benutzerdefinierter Signaturen können Sie Ihr Netzwerk vor Schwachstellen in Netzwerkobjekten wie Servern, Protokollen und Anwendungen schützen. Sie können benutzerdefinierte Signaturen erstellen und diese später zu IPS-Richtlinienregeln hinzufügen.
Beschränkung
Sie können keine benutzerdefinierten IPS-Signaturen konfigurieren, wenn Ihre Testlizenz abgelaufen ist oder wenn Sie den IPS-Schutz deaktivieren. Einbruchsprävention > IPS-Richtlinien.
Um die von Ihnen konfigurierten benutzerdefinierten IPS-Signaturen beizubehalten, empfehlen wir Ihnen, den IPS-Schutz innerhalb von 30 Tagen nach Ablauf der Lizenz oder nach manueller Deaktivierung des IPS-Schutzes wieder zu aktivieren. Weitere Informationen finden Sie unter IPS-Richtlinien.
IPS-Syntax für benutzerdefinierte Muster
| Stichwort | Wert | Verwendung |
|---|---|---|
| srcaddr/dstaddr | <ipaddress>; | Die Quell-/Ziel-IP-Adresse. |
| Quellport/Zielport | <Number>; | Der Quell-/Zielanschluss. |
| Inhalt | "<content string>;" Eine Zeichenkette in doppelten Anführungszeichen. | Sie können in einer Regel mehrere Inhalte angeben. Der Wert kann sowohl Text als auch Binärdaten enthalten. Binärdaten werden normalerweise in senkrechte Striche eingeschlossen. ( | ) Charakter. |
| kein Fall Kann nur mit Content-Keywords verwendet werden. | NULL | Groß- und Kleinschreibung im Inhaltswert wird ignoriert. |
| Rohdaten Kann nur mit Content-Keywords verwendet werden. | NULL | Jegliche Dekodierung ignorieren. Die Rohdaten des Datenpakets betrachten. |
| Tiefe Kann nur mit Content-Keywords verwendet werden. | <number>; Beispiel: depth:5; | Suchen Sie innerhalb der angegebenen Byteanzahl der Nutzdaten nach dem Inhalt. Wenn der Wert des Schlüsselworts „depth“ kleiner ist als die Länge des Werts des Schlüsselworts „content“, wird diese Signatur niemals gefunden. |
| Versatz Kann nur mit Inhaltskeywords verwendet werden. | <number>; Beispiel: content:cgi-bin/phf;offset:4;depth:20; | Die Suche nach dem Inhalt beginnt nach der angegebenen Anzahl von Bytes der Nutzdaten. Dieses Tag stellt einen absoluten Wert in den Nutzdaten dar. Fügen Sie nach dem Offset-Tag das Tiefen-Tag hinzu, um die Suche nach einer Übereinstimmung nach dem durch das Tiefen-Tag angegebenen Wert zu beenden. Wenn keine Tiefe angegeben ist, wird die Suche bis zum Ende der Nutzdaten fortgesetzt. |
| Distanz Kann nur mit Inhaltskeywords verwendet werden. | <number>; Beispiel: content:"ABC"; content:"DEF"; distance:1; | Durchsuchen Sie den Inhalt nach der angegebenen Anzahl von Bytes relativ zum Ende des zuvor gefundenen Inhalts. Dem Distanz-Tag kann ein Within-Tag folgen. Wenn für den Within-Tag kein Wert angegeben ist, wird die Suche bis zum Ende der Nutzdaten fortgesetzt. |
| innerhalb Kann nur mit Inhaltskeywords verwendet werden. | <number>; Beispiel: content: "ABC"; content: "DEF"; within:10; | Suchen Sie nach dem Inhalt innerhalb der angegebenen Anzahl von Bytes der Nutzdaten. Verwenden Sie dies zusammen mit dem Distanz-Tag. |
| uricontent | uricontent:<content string>; Beispiel: uricontent:"%3F"; | Suchen Sie nach dem normalisierten Anfrage-URI-Feld. Binärdaten können als URI-Wert definiert werden. |
| isdata | <value> [,relative]; Beispiel: content: "PASS"; isdataat: 50, relative; | Prüfen Sie, ob die Nutzdaten an einer bestimmten Position Daten enthalten. Optional können Sie nach Daten relativ zum Ende des vorherigen Inhaltsübereinstimmungsbereichs suchen. |
| PCRE | pcre:[!]"(/<regex>/ | m/<regex>/)[ismxAEGRUB]"; Beispiel: pcre:"/BLAH/i"; | Mit dem Schlüsselwort pcre können Sie Regeln mithilfe von Perl-kompatiblen regulären Ausdrücken schreiben. iGroß- und Kleinschreibung wird nicht beachtet. s: Fügen Sie Zeilenumbrüche in das Punkt-Metazeichen ein. mStandardmäßig wird die Zeichenkette als eine einzige große Zeile von Zeichen behandelt (^ Und $ Übereinstimmung am Anfang und Ende der Zeichenkette). Wenn m ist festgelegt, ^ Und $ Übereinstimmung am Anfang oder Ende einer beliebigen neuen Zeile im Puffer sowie am Anfang und Ende des Puffers. xLeerzeichen in den Daten des Musters werden ignoriert, außer wenn sie maskiert sind oder sich innerhalb einer Zeichenklasse befinden. ADas Muster muss nur am Anfang des Puffers übereinstimmen (genau wie ^). E: Satz $ Nur am Ende der Betreffzeile übereinstimmen. Ohne E, $ Passt auch unmittelbar vor dem letzten Zeichen, wenn es sich um einen Zeilenumbruch handelt (aber nicht vor anderen Zeilenumbrüchen). G: Kehrt die „Gier“ der Quantoren um, sodass sie nicht standardmäßig gierig sind, sondern erst gierig werden, wenn ihnen ein „“ folgt.?. R: Übereinstimmung relativ zum Ende der letzten Musterübereinstimmung (ähnlich wie distance:0;). U: Die dekodierten URI-Puffer abgleichen (ähnlich dem Schlüsselwort uri). B: Verwenden Sie nicht die dekodierten Puffer (ähnlich dem Schlüsselwort raw). |
| byte_test | <bytes to convert>, [!]<operator>, <value>, <offset> [,relative] [,<endian>] [,<number type>, string]; oct,dec,hex used with string only Beispiel: msg:"AMD procedure 7 plog overflow"; content:" | 00 04 93 F3 | "; content:" | 00 00 00 07 | "; distance: 4.within:4; byte_test:4,>,1000,20,relative; | Prüft ein Byte-Feld auf einen bestimmten Wert (mit Operator). Kann Binärwerte testen oder repräsentative Byte-Zeichenketten in ihre Binäräquivalente umwandeln und diese testen. bytes_to_convert: Die Anzahl der Bytes, die vom Paketoperator abgerufen werden sollen, die Operation, die zum Testen des Wertes durchgeführt werden soll (<,>,=,!,&). valueDer Wert, mit dem der konvertierte Wert verglichen werden soll. offsetDie Anzahl der Bytes in der Nutzlast, ab der die Verarbeitung gestartet werden soll. relative: Verwenden Sie einen Versatz relativ zur letzten Musterübereinstimmung. big: Verarbeite die Daten als große Datenmengen. endian (default) little: Verarbeite die Daten als Little-Endian. stringDie Daten werden im Datenpaket als Zeichenketten gespeichert. hexDie konvertierten Zeichenkettendaten werden im Hexadezimalformat dargestellt. decDie konvertierten Zeichenkettendaten werden im Dezimalformat dargestellt. octDie konvertierten Zeichenkettendaten werden im Oktalformat dargestellt. |
| byte_jump | <bytes_to_convert>, <offset> [,relative] [,multiplier <multiplier value>] [,big] [,little][,string] [,hex] [,dec] [,oct] [,align] [,from_beginning]; oct,dec,hex werden nur mit Zeichenketten verwendet. Beispiel: content:" | 00 00 00 01 | "; distance: 4; within: 4; byte_jump: 4,12,relative,align | bytes_to_convertDie Anzahl der Bytes, die aus dem Paket entnommen werden sollen. Multiplikatorwert: Multipliziere die Anzahl der berechneten Bytes mit dem Wert und überspringe diese Anzahl von Bytes. operator: Die auszuführende Operation zum Testen des Wertes (<,>,=,!,&). valueDer Wert, mit dem der konvertierte Wert verglichen werden soll. offsetDie Anzahl der Bytes in der Nutzlast, ab der die Verarbeitung gestartet werden soll. relative: Verwenden Sie einen Versatz relativ zur letzten Musterübereinstimmung. big: Verarbeite die Daten als große Datenmengen. endian (default) little: Verarbeite die Daten als Little-Endian. stringDie Daten werden im Datenpaket als Zeichenketten gespeichert. hexDie konvertierten Zeichenkettendaten werden im Hexadezimalformat dargestellt. decDie konvertierten Zeichenkettendaten werden im Dezimalformat dargestellt. octDie konvertierten Zeichenkettendaten werden im Oktalformat dargestellt. align: Runde die Anzahl der konvertierten Bytes auf die nächste 32-Bit-Grenze auf. from_beginning: Vom Anfang der Paketnutzdaten springen, anstatt von der aktuellen Position im Paket aus. |
| ttl | <number>;><number>;<<number>; | Vergleichen Sie den TTL-Wert (Time-to-Live) der IP-Adresse mit dem angegebenen Wert. |
| ihnen | <number>; | Prüfen Sie, ob im Feld IP TOS der angegebene Wert angezeigt wird. |
| Ausweis | <number>; | Prüfen Sie, ob im Feld „IP-ID“ der angegebene Wert angezeigt wird. |
| ipopts | {rr | eol | nop | ts | sec | lsrr | ssrr | satid | any} | rr: Prüfen Sie, ob die IP RR (Route aufzeichnen)-Option vorhanden ist. eol: Prüfen Sie, ob die IP-EOL-Option (Ende der Liste) vorhanden ist. nop: Prüfen Sie, ob die IP-NOP-Option (no op) vorhanden ist. ts: Prüfen Sie, ob die Option IP TS (Zeitstempel) vorhanden ist. secPrüfen Sie, ob die IP SEC-Option (IP-Sicherheit) vorhanden ist. lsrrPrüfen Sie, ob die IP LSRR (Loose Source Routing)-Option vorhanden ist. ssrr: Prüfen Sie, ob die IP SSRR (Strict Source Routing)-Option vorhanden ist. satid: Prüfen Sie, ob die Option IP SATID (Stream-Kennung) vorhanden ist. any: Prüfen Sie, ob die Option "IP any" vorhanden ist. |
| Fragmentversatz | <number>; | Ermöglicht den Vergleich des IP-Fragment-Offset-Felds mit dem Dezimalwert. |
| Fragmente | [+*!]<[MDR]>; | Prüfen Sie, ob die IP-Fragmentierung und die reservierten Bits im IP-Header gesetzt sind. MDer Abschnitt „Mehr Fragmente“ DDer Teil „Nicht fragmentieren“. R: Der reservierte Teil. +: Übereinstimmung der angegebenen Bits sowie aller weiteren. *: Übereinstimmung, wenn eines der angegebenen Bits gesetzt ist. !: Übereinstimmung, falls die angegebenen Bits nicht gesetzt sind. |
| dsize | [< | >] <number>[ <> number]; Beispiel: dsize:300<>400; | Überprüfen Sie die Größe der Paketnutzdaten. Wenn data_size angegeben ist, wird die Paketwiederzusammensetzung automatisch deaktiviert; daher ist eine Signatur mit festgelegten Werten für data_size und only_stream fehlerhaft. dsize schlägt bei neu zusammengesetzten Stream-Paketen fehl, unabhängig von der Größe der Nutzdaten. |
| Flaggen | [! | * | +]<FSRPAU120>[,<FSRPAU120>]; Beispiel: flags:SF,12 | Geben Sie die TCP-Flags an, die in einem Paket abgeglichen werden sollen. S: Passe das SYN-Flag an. A: Das ACK-Flag abgleichen. F: Passe die FIN-Flagge an. R: Passe das RST-Flag an. U: Die URG-Flagge abgleichen. P: Passen Sie das PSH-Flag an. 1: Passe das reservierte Bit an. 1 2: Passen Sie das reservierte Bit an 2 0: Übereinstimmung mit den „Kein TCP“-Flags gesetzt +: Übereinstimmung der angegebenen Bits sowie aller weiteren. *: Übereinstimmung, wenn eines der angegebenen Bits gesetzt ist. !: Übereinstimmung, falls die angegebenen Bits nicht gesetzt sind. |
| fließen | to_client | to_server | from_client | from_server ]; established; bi_direction; [no_stream | only_stream]; | Nur TCP. to_server Der Wert ist gleich dem from_client Wert. Der to_client Der Wert ist gleich dem from_server Wert. Der bi_direction Das Tag sorgt dafür, dass die Signatur dem Verkehr in beiden Richtungen entspricht. Wenn Sie beispielsweise eine Signatur mit â--dst_port 80âund mit bi_direction Die Signaturprüfung überprüft den Datenverkehr von und zu Port 80. |
| seq | <number>; | Prüfen Sie, ob die angegebene TCP-Sequenznummer vorhanden ist. |
| ack | <number>; | Prüfen Sie, ob die angegebene TCP-Bestätigungsnummer vorliegt. |
| Fenster | <number>; | Prüfen Sie, ob die angegebene TCP-Fenstergröße eingehalten wird. |
| Typ | [< | >]<number>[<>number]; | Geben Sie den abzugleichenden ICMP-Typ an. |
| icode | [< | >]<number>[<>number]; | Geben Sie den abzugleichenden ICMP-Code an. |
| icmp_id | <number>; | Prüfen Sie, ob der angegebene ICMP-ID-Wert vorhanden ist. |
| icmp_seq | <number>; | Prüfen Sie, ob der angegebene ICMP-Sequenzwert vorliegt. |
| RPC | <application number>,[<version number> | *],[<procedure number> | *>; | Prüfen Sie in SUNRPCCALL-Anfragen auf RPC-Anwendungs-, Versions- und Prozedurnummern. Sie können den Platzhalter * für Versions- und Prozedurnummern verwenden. |
| ip_proto | <number>;[!]<number>;><number>;<<number>; | Überprüfen Sie den IP-Protokollheader. |
| samip | NULL | Quelle und Ziel haben die gleiche IP-Adresse. |