Regelsyntax
Eine IPS-Regel muss mit der folgenden Struktur dargestellt werden:
Die Aktion teilt cognitix Threat Defender mit, welche Operation bei einem Regeltreffer durchgeführt werden soll.
Der Header definiert das Protokoll, den IP-Netzwerkbereich, die Portbereiche und die Richtung, auf die die Regel zutrifft.
Die Regeldefinition beinhaltet alle Informationen, die die Regel spezifizieren.
Zum Beispiel:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:“Example rule“; pcre:“/Pattern to match/i“; reference:url,example.org/rule-example; classtype:misc-activity; sid:9000000; rev:1;)
Aktion
Aktuell wird nur die Aktion alert
unterstützt. Wenn eine Regel mit dieser Aktion trifft, wird eine Logmeldung an die Benachrichtigungskanäle gesendet, in denen das Logging von IPS-Regeltreffern aktiviert ist.
Um eine Aktion auf Datenströme anzuwenden, die einem bestimmten Typ von IPS-Regeln entsprechen, geben Sie Tags als IPS-Bedingung in einer Regel an.
Protokoll
Der Protokoll-String weist die IPS-Engine von cognitix Threat Defender an, nur auf Datenströme zu treffen, die ein bestimmtes Protokoll verwenden, wie:
tcp
udp
tls (einschließlich ssl)
http
smtp
ssh
dns
ip (trifft alle obigen Protokolle)
Quell- und Zieladresse
Die Quell- und Zieldefinition gibt an, auf welche IP-Adressen oder Netzwerke die Regel angewendet werden muss.
Operator |
Beschreibung |
---|---|
../.. |
IP-Bereiche (CIDR-Notation) |
! |
Negation |
[.., ..] |
Satz IP-Adressen |
Sie können das interne und externe IP-Netzwerk auch mit den Variablen $HOME_NET
und $EXTERNAL_NET
referenzieren. Interne IP-Adressen können auch definiert werden, indem sie einem als intern gekennzeichneten Netzwerkobjekt hinzugefügt werden.
Quell- und Zielports
Ein Port ist ein Kommunikationsendpunkt, der als 16-Bit-Ganzzahl ohne Vorzeichen dargestellt wird, die eine Portnummer identifiziert. Diese Portnummern werden in TCP- und UDP-basiertem Datenverkehr verwendet. Die IANA (Internet Assigned Number Authority) vergibt und verwaltet Portnummern für bekannte Dienste. Das IANA-Register für Portnummern finden Sie unter https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
Operator |
Beschreibung |
---|---|
: |
Portbereiche |
! |
Negation |
[.., ..] |
Satz Ports |
Richtung
Die Richtung legt fest, wie die Signatur übereinstimmen muss. Aktuell können nur Signaturen mit Pfeil nach rechts ->
verwendet werden:
Quelle -> Ziel
Regeloptionen
Wenn der Header der Regel verarbeitet wurde, wird der Rest der Regel als Optionen betrachtet. Die Regeloptionen stehen in runden Klammern und werden durch Semikolons getrennt. Einige Optionen haben die Syntax Keyword: Wert (z. B. sid: 12345
), während andere Flags sind (nocase
):
<Keyword>: <Wert>;
<Keyword>;
Bemerkung
Einige Keywords akzeptieren mehrere Werte. In diesem Fall sind alle Werte kommasepariert. Zum Beispiel:
byte_test: 1, -1, relative, big;
Siehe die Dokumentation des jeweiligen Keywords, falls Sie weitere Informationen benötigen.
Bemerkung
Die Zeichen ;
und "
sind Teil der Syntax der Regeloptionen. Wenn Sie Muster abgleichen möchten, die diese Zeichen enthalten, müssen sie durch Backslash \
maskiert werden. Zum Beispiel:
content:"3rxtc\"\;Date";
Dementsprechend muss auch ein Backslash durch einen weiteren maskiert werden:
content:"HKLM\\\\Software\\\\Microsoft\\\\Internet Explorer\\\\Main\\\\Start Page";
Modifikator-Keywords
Einige Keywords fungieren als Modifikatoren. Es gibt zwei Arten von Modifikatoren:
Inhaltsmodifikatoren untersuchen die Regel rückwärts, z. B.:
alert http any any -> any any (content:"index.html"; nocase; sid:1;)
Im obigen Beispiel wird im Muster
index.html
die Groß- und Kleinschreibung ignoriert.Sticky Buffer werden vor das Keyword gesetzt. Diese Modifikatoren werden auf alle nachfolgenden Keywords angewendet, zum Beispiel:
alert http any any -> any any (http.uri; content:"index.html"; sid:1;)
Im obigen Beispiel wird das Muster
index.html
gegen den HTTP URI geprüft, weil es auf das Keywordhttp.uri
folgt.Beide Typen können auch gleichzeitig verwendet werden. Zum Beispiel:
alert http any any -> any any (content:"index.html"; nocase; sid:1;)alert http any any -> any any (http.uri; content:"index.html"; nocase; sid:1;)