Benutzerdefinierte IPS-Signaturen
Mit benutzerdefinierten Signaturen schützen Sie Ihr Netzwerk vor Schwachstellen in Netzwerkobjekten wie Servern, Protokollen und Anwendungen. Sie können benutzerdefinierte Signaturen erstellen und 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 auf Einbruchschutz > IPS-Richtlinien.
Um die konfigurierten benutzerdefinierten IPS-Signaturen beizubehalten, empfehlen wir, den IPS-Schutz innerhalb von 30 Tagen nach Ablauf der Lizenz erneut zu aktivieren oder manuell zu deaktivieren. Weitere Informationen finden Sie unter IPS-Richtlinien.
Benutzerdefinierte IPS-Mustersyntax
Stichwort | Wert | Verwendung |
---|---|---|
srcaddr/dstaddr | <ipaddress>; | Die Quell-/Ziel-IP-Adresse. |
Quellport/Zielport | <Number>; | Der Quell-/Zielport. |
Inhalt | "<content string>;" Eine Zeichenfolge in Anführungszeichen. | Sie können mehrere Inhalte in einer Regel angeben. Der Wert kann sowohl Text als auch Binärdaten enthalten. Binärdaten werden normalerweise in den Pipe-Befehl eingeschlossen. ( | ) Charakter. |
kein Fall Kann nur mit Inhaltsschlüsselwörtern verwendet werden. | NULL | Ignorieren Sie die Groß-/Kleinschreibung im Inhaltswert. |
Rohbytes Kann nur mit Inhaltsschlüsselwörtern verwendet werden. | NULL | Ignorieren Sie jegliche Dekodierung. Sehen Sie sich die Rohpaketdaten an. |
Tiefe Kann nur mit Inhaltsschlüsselwörtern verwendet werden. | <number>; Beispiel: depth:5; | Sucht nach Inhalten innerhalb der angegebenen Byteanzahl der Nutzlast. Wenn der Wert des Tiefenschlüsselworts kleiner ist als die Länge des Inhaltsschlüsselworts, wird diese Signatur nie abgeglichen. |
Versatz Kann nur mit Inhaltsschlüsselwörtern 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 ist ein absoluter Wert in den Nutzdaten. Fügen Sie 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 Inhaltsschlüsselwörtern verwendet werden | <number>; Beispiel: content:"ABC"; content:"DEF"; distance:1; | Durchsucht den Inhalt nach der angegebenen Anzahl von Bytes relativ zum Ende des zuvor gefundenen Inhalts. Dem Distanz-Tag kann das Within-Tag folgen. Wenn für das Within-Tag kein Wert angegeben ist, wird bis zum Ende der Nutzlast nach einer Übereinstimmung gesucht. |
innerhalb Kann nur mit Inhaltsschlüsselwörtern verwendet werden | <number>; Beispiel: content: "ABC"; content: "DEF"; within:10; | Suchen Sie nach dem Inhalt innerhalb der angegebenen Anzahl von Bytes der Nutzlast. Verwenden Sie das Distanz-Tag. |
Uriinhalt | uricontent:<content string>; Beispiel: uricontent:"%3F"; | Suchen Sie nach dem normalisierten Anforderungs-URI-Feld. Binärdaten können als URI-Wert definiert werden. |
isdata | <value> [,relative]; Beispiel: content: "PASS"; isdataat: 50, relative; | Überprüfen Sie, ob die Nutzlast Daten an einem bestimmten Ort enthält. Suchen Sie optional nach Daten relativ zum Ende der vorherigen Inhaltsübereinstimmung. |
pcre | pcre:[!]"(/<regex>/ | m/<regex>/)[ismxAEGRUB]"; Beispiel: pcre:"/BLAH/i"; | Mit dem Schlüsselwort pcre können Sie Regeln mit Perl-kompatiblen regulären Ausdrücken schreiben. i : Groß-/Kleinschreibung wird nicht beachtet. s : Fügen Sie Zeilenumbrüche in das Punkt-Metazeichen ein. m : Standardmäßig wird die Zeichenfolge als eine große Zeichenfolge behandelt (^ Und $ Übereinstimmung am Anfang und Ende der Zeichenfolge). Wenn m ist eingestellt, ^ Und $ Übereinstimmung am Anfang oder Ende einer beliebigen neuen Zeile im Puffer sowie am Anfang und Ende des Puffers. x : Leerzeichen im Muster werden ignoriert, außer wenn sie maskiert sind oder sich innerhalb einer Zeichenklasse befinden. A : Das Muster muss nur am Anfang des Puffers übereinstimmen (dasselbe wie ^ ). E : Satz $ nur am Ende der Betreffzeile übereinstimmen. Ohne E , $ passt auch unmittelbar vor dem letzten Zeichen, wenn es ein Zeilenumbruch ist (aber nicht vor anderen Zeilenumbrüchen). G : Kehrt die „Gier“ der Quantifizierer um, sodass sie standardmäßig nicht gierig sind, aber gierig werden, wenn auf sie „? †. R : Übereinstimmung relativ zum Ende der letzten Musterübereinstimmung (ähnlich wie distance:0; ). U : Ordnen Sie die dekodierten URI-Puffer zu (ä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; | Testet ein Bytefeld anhand eines bestimmten Wertes (mit Operator). Es kann Binärwerte testen oder repräsentative Bytefolgen in ihre binären Entsprechungen konvertieren und testen. bytes_to_convert : Die Anzahl der vom Paketoperator abzuholenden Bytes, die zum Testen des Werts auszuführende Operation (< ,> ,= ,! ,& ). value : Der Wert, mit dem der konvertierte Wert getestet werden soll. offset : Die Anzahl der Bytes in der Nutzlast, um mit der Verarbeitung zu beginnen. relative : Verwenden Sie einen Offset relativ zur letzten Musterübereinstimmung. big : Verarbeiten Sie die Daten so groß wie möglich. endian (default) little : Verarbeiten Sie die Daten als Little Endian. string : Die Daten werden im Stringformat im Paket gespeichert. hex : Die konvertierten Zeichenfolgendaten werden hexadezimal dargestellt. dec : Die konvertierten Zeichenfolgedaten werden dezimal dargestellt. oct : Die konvertierten Zeichenfolgendaten werden im Oktalformat dargestellt. |
Bytesprung | <bytes_to_convert>, <offset> [,relative] [,multiplier <multiplier value>] [,big] [,little][,string] [,hex] [,dec] [,oct] [,align] [,from_beginning]; Okt, Dez, Hex werden nur mit Zeichenfolge verwendet. Beispiel: content:" | 00 00 00 01 | "; distance: 4; within: 4; byte_jump: 4,12,relative,align | bytes_to_convert : Die Anzahl der Bytes, die aus dem Paket entnommen werden sollen. Multiplikatorwert: Multiplizieren Sie die Anzahl der berechneten Bytes mit dem Wert und überspringen Sie diese Anzahl von Bytes. operator : Die zum Testen des Werts auszuführende Operation (< ,> ,= ,! ,& ). value : Der Wert, mit dem der konvertierte Wert getestet werden soll. offset : Die Anzahl der Bytes in der Nutzlast, um mit der Verarbeitung zu beginnen. relative : Verwenden Sie einen Offset relativ zur letzten Musterübereinstimmung. big : Verarbeiten Sie die Daten so groß wie möglich. endian (default) little : Verarbeiten Sie die Daten als Little Endian. string : Die Daten werden im Stringformat im Paket gespeichert. hex : Die konvertierten Zeichenfolgendaten werden hexadezimal dargestellt. dec : Die konvertierten Zeichenfolgedaten werden dezimal dargestellt. oct : Die konvertierten Zeichenfolgendaten werden im Oktalformat dargestellt. align : Rundet die Anzahl der konvertierten Bytes auf die nächste 32-Bit-Grenze. from_beginning : Springen Sie vom Anfang der Paketnutzlast vorwärts, anstatt von der aktuellen Position im Paket. |
ttl | <number>;><number>;<<number>; | Vergleichen Sie den Time-to-Live-Wert der IP mit dem angegebenen Wert. |
ihnen | <number>; | Überprüfen Sie das IP-TOS-Feld auf den angegebenen Wert. |
Ausweis | <number>; | Überprüfen Sie das IP-ID-Feld auf den angegebenen Wert. |
ipopts | {rr | eol | nop | ts | sec | lsrr | ssrr | satid | any} | rr : Überprüfen Sie, ob die Option IP RR (Route aufzeichnen) vorhanden ist. eol : Überprüfen Sie, ob die Option IP EOL (End of List) vorhanden ist. nop : Überprüfen Sie, ob die IP-NOP-Option (No Op) vorhanden ist. ts : Überprüfen Sie, ob die Option IP TS (Zeitstempel) vorhanden ist. sec : Überprüfen Sie, ob die Option IP SEC (IP-Sicherheit) vorhanden ist. lsrr : Überprüfen Sie, ob die IP-LSRR-Option (Loose Source Routing) vorhanden ist. ssrr : Überprüfen Sie, ob die IP-SSRR-Option (Strict Source Routing) vorhanden ist. satid : Überprüfen Sie, ob die Option IP SATID (Stream-Kennung) vorhanden ist. any : Überprüfen Sie, ob die Option „Any IP“ vorhanden ist. |
Fragoffset | <number>; | Ermöglicht den Vergleich des IP-Fragment-Offset-Felds mit dem Dezimalwert. |
Fragbits | [+*!]<[MDR]>; | Überprüfen Sie, ob im IP-Header IP-Fragmentierung und reservierte Bits gesetzt sind. M : Der Teil „Mehr Fragmente“ D : Der Teil „Nicht fragmentieren“. R : Das reservierte Bit. + : Übereinstimmung mit den angegebenen Bits und allen anderen. * : Übereinstimmung, wenn eines der angegebenen Bits gesetzt ist. ! : Übereinstimmung, wenn die angegebenen Bits nicht gesetzt sind. |
dsize | [< | >] <number>[ <> number]; Beispiel: dsize:300<>400; | Testen Sie die Nutzlastgröße des Pakets. Bei Angabe von data_size wird die Paketneuzusammenstellung automatisch deaktiviert. Eine Signatur mit den Werten data_size und only_stream ist daher falsch. dsize schlägt bei neu aufgebauten Stream-Paketen fehl, unabhängig von der Größe der Nutzlast. |
Flaggen | [! | * | +]<FSRPAU120>[,<FSRPAU120>]; Beispiel: flags:SF,12 | Geben Sie die TCP-Flags an, die in einem Paket übereinstimmen sollen. S : Passt zum SYN-Flag. A : Passt zum ACK-Flag. F : Passt zum FIN-Flag. R : Passt zum RST-Flag. U : Passt zum URG-Flag. P : Passt zum PSH-Flag. 1 : Passt zum reservierten Bit. 1 2 : Passt zum reservierten Bit 2 0 : Übereinstimmung mit gesetzten „Kein TCP“-Flags + : Übereinstimmung mit den angegebenen Bits und allen anderen. * : Übereinstimmung, wenn eines der angegebenen Bits gesetzt ist. ! : Übereinstimmung, wenn 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. Die to_server Wert ist gleich dem from_client Wert. Der to_client Wert ist gleich dem from_server Wert. Der bi_direction Tag sorgt dafür, dass die Signatur in beide Richtungen mit dem Verkehr übereinstimmt. Wenn Sie beispielsweise eine Signatur mit â--dst_port 80â und mit bi_direction gesetzt, die Signatur prüft den Verkehr von und zu Port 80. |
Folge | <number>; | Überprüfen Sie die angegebene TCP-Sequenznummer. |
ack | <number>; | Suchen Sie nach der angegebenen TCP-Bestätigungsnummer. |
Fenster | <number>; | Überprüfen Sie die angegebene TCP-Fenstergröße. |
Typ | [< | >]<number>[<>number]; | Geben Sie den abzugleichenden ICMP-Typ an. |
icode | [< | >]<number>[<>number]; | Geben Sie den abzugleichenden ICMP-Code an. |
ICMP-ID | <number>; | Überprüfen Sie den angegebenen ICMP-ID-Wert. |
icmp_seq | <number>; | Überprüfen Sie den angegebenen ICMP-Sequenzwert. |
RPC | <application number>,[<version number> | *],[<procedure number> | *>; | Suchen Sie in SUNRPCCALL-Anfragen nach RPC-Anwendungs-, Versions- und Prozedurnummern. Sie können das Platzhalterzeichen * 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. |