【问题标题】:Splunk Alert - exclude IP address from time range onlySplunk 警报 - 仅从时间范围中排除 IP 地址
【发布时间】:2021-07-09 21:02:46
【问题描述】:

我正在尝试构建一个 Splunk 警报,其目的是检测用户帐户是否已被使用。在此警报中,我想排除每周二和周四的时间范围(早上 5 点到 6 点之间)。在此期间,该帐户应该被合法使用。在此时间范围内,我还想排除正在使用它的服务器的 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.

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

【问题讨论】:

    标签: splunk splunk-query


    【解决方案1】:

    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 之外的所有事件。 此外,不需要子搜索。

    【讨论】:

    • 嗨!不幸的是,From: 似乎是日志中的一个刺痛字段。我是否需要将其提取为 cidrmatch 工作的新字段?
    • 我想出了这个:index=firewall sourcetype="pan_panorama" AND "useraccount" | where NOT ( (date_wday=="tuesday" OR date_wday=="thursday") AND date_hour = 5 ) | search NOT ("From: 10.10.10.5" OR "From: 10.10.10.6") 但它似乎不能正常工作。例如,如果我将日期更改为星期日和星期一,尽管选择了日期或时间,它仍然会隐藏来自 IP 地址的任何登录。有什么建议吗?
    • 该查询仍然尝试对字符串进行布尔逻辑。如果 Splunk 支持它,“From: 10.10.10.5”总是正确的,但它不支持。如果它不是一个领域,那就让它成为一个领域。 index=firewall sourcetype="pan_panorama" AND "useraccount" | rex "From:\s(?&lt;From&gt;\d+\.\d+\.\d+\.\d+)" | where NOT ( (date_wday=="tuesday" OR date_wday=="thursday") AND date_hour = 5 AND cidrmatch(From, "10.10.10.5/32") )
    • 谢谢!我无法让cidrmatch 工作,所以最终为我工作的是:index=firewall sourcetype="pan_panorama" AND "useraccount" | rex "From:\s(?&lt;From&gt;\d+\.\d+\.\d+\.\d+)" | where NOT ( (date_wday=="tuesday" OR date_wday=="thursday") AND date_hour = 5 AND (From="10.10.10.5" OR From="10.10.10.6"))
    猜你喜欢
    • 2022-01-12
    • 2017-02-20
    • 2022-07-22
    • 2020-10-07
    • 2017-11-27
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多