Splunk 警报 - 仅从时间范围内排除 IP 地址

Splunk Alert - exclude IP address from time range only

我正在尝试构建一个 Splunk 警报,其目的是检测用户帐户是否已被使用。在此警报中,我想在每个星期二和星期四排除一个时间范围(介于 5 到 6 a.m.)。在此期间,该帐户应该是合法使用的。在此时间范围内,我还想排除正在使用它的服务器的 IP 地址。

为了清楚起见,假设我们有一台 IP 地址为 10.10.10.5/32 的服务器。此服务器在每周二和周四 05:00 和 06:00 之间使用帐户 useraccount。我需要 Splunk 警报来搜索该帐户的任何使用情况,即使在 10.10.10.5 上也是如此,但对于上述时间段,如果有意义,请从警报搜索中排除 10.10.10.5

这是我目前所知道的,我还没有想出在这段时间范围内也排除服务器 IP 地址的方法。

index=firewall  [search sourcetype="pan_panorama" AND "useraccount"]
| where NOT ( (date_wday=="tuesday" OR date_wday=="thursday")  AND NOT (date_hour >= 5 AND date_hour < 6) )

如果我尝试这样做:

index=firewall  [search sourcetype="pan_panorama" AND "useraccount"]
| where NOT ( (date_wday=="tuesday" OR date_wday=="thursday")  AND NOT (date_hour >= 5 AND date_hour < 6) AND NOT ("From: 10.10.10.5") )

我收到了Error in 'where' command: Typechecking failed. 'XOR' only takes boolean arguments.

我不确定如何从这里开始。如何构建 Splunk 警报搜索,排除某个时间段和仅在该时间段内的 IP 地址?

Splunk 在 where 命令的 AND NOT "string" 部分阻塞。这没有意义。将字符串与字段值进行比较,应该可以。

index=firewall sourcetype="pan_panorama" AND "useraccount"
| where NOT ( (date_wday=="tuesday" OR date_wday=="thursday")  
  AND date_hour = 5 AND cidrmatch(From, "10.10.10.5/32") )

另外,我认为双重否定逻辑不会产生正确的结果。此查询接受 IP 地址为 10.10.10.5 的 0500-0559 周二或周四除外的所有事件。 此外,不需要子搜索。