Keywords für Thresholds

threshold

Mit dem Keyword threshold kann die Alarmhäufigkeit einer Regel gesteuert werden. Es hat drei Typen: threshold, limit und both.

Syntax:

threshold: type <threshold|limit|both>, track <by_src|by_dst>, count <N>, seconds <T>

threshold

Mit diesem Typ kann ein Mindestwert für eine Regel festgelegt werden, der erreicht werden muss, bevor sie einen Alarm erzeugt. Ist threshold auf N gesetzt, bedeutet dies, dass ein Alarm erzeugt wird, wenn die Regel zum N-ten Mal getroffen wird.

Zum Beispiel:

alert tcp any any -> any any (msg: "threshold example"; \
classtype:misc-attack; content: "placeholder"; \
threshold: type threshold, track by_src, count 5, seconds 1; sid:1; rev:1;)

Diese Signatur erzeugt nur einen Alarm, wenn innerhalb eines 1-sekündigen Intervalls fünf oder mehr Pakete den String placeholder enthalten.

Wenn eine Signatur ein Flowbit setzt, werden diese Aktionen dennoch bei jedem Treffer durchgeführt.

limit

Mit diesem Typ wird sichergestellt, dass das System nicht mit Alarmen überflutet wird. Ist limit auf N gesetzt, werden maximal N Alarme generiert.

Zum Beispiel:

alert http any any -> any any (msg:"thresholding limit example"; \
http.header; content:"Accept"; \
threshold: type limit, track by_src, count 15, seconds 1800; sid:2; rev:1;)

Innerhalb von 30 Minuten erzeugt diese Signatur maximal 15 Alarme für HTTP-Responses, die den String Accept im Header enthalten.

Wenn eine Signatur ein Flowbit setzt, werden diese Aktionen dennoch bei jedem Treffer durchgeführt.

both

Mit both können threshold und limit kombiniert werden, um sowohl untere als auch obere Grenzwerte zu setzen.

Zum Beispiel:

alert http any any -> any any (msg:"thresholding limit example"; \
http.header; content:"Accept"; \
threshold: type both, track by_src, count 15, seconds 1800; sid:2; rev:1;)

Diese Regel erzeugt nur dann einen Alarm, wenn innerhalb von 30 Minuten 15 Mal oder mehr der String Accept im Header von HTTP-Responses erkannt wird. In diesen 30 Minuten wird nur ein Alarm erzeugt.

Wenn eine Signatur ein Flowbit setzt, werden diese Aktionen dennoch bei jedem Treffer durchgeführt.

detection_filter

Mit dem Keyword detection_filter wird nach dem Erreichen eines Grenzwerts bei jedem Treffer ein Alarm erzeugt. Es unterscheidet sich vom Typ Threshold, da für jeden Regeltreffer nach dem Erreichen des ursprünglichen Grenzwerts ein Alarm erzeugt wird.

Syntax:

detection_filter: track <by_src|by_dst>, count <N>, seconds <T>

Zum Beispiel:

alert tcp any any -> any any (msg: "detection filter example"; \
classtype:misc-attack; content: \"placeholder\"; \
threshold: type detection_filter, track by_src, count 100, seconds 10; sid:1; rev=1;)

Diese Regel erzeugt immer dann einen Alarm, wenn 100 oder mehr Treffer innerhalb von 10 Sekunden erkannt wurden.

Wenn eine Signatur ein Flowbit setzt, werden diese Aktionen dennoch bei jedem Treffer durchgeführt.