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.