1. ホーム
  2. splunk

[解決済み] Splunk Alert - IP アドレスを時間範囲のみから除外する。

2022-02-08 12:06:07

質問

あるユーザーアカウントが使用されたかどうかを検出することを目的とした Splunk アラートを作成しようとしています。このアラートでは、毎週火曜日と木曜日の時間帯(午前5時から6時の間)を除外したいのです。この時間帯は、アカウントが合法的に使用されているはずです。この時間帯には、それを使用しているサーバーのIPアドレスも除外したい。

わかりやすくするために、例えば、サーバーのIPが 10.10.10.5/32 . このサーバーは、アカウント useraccount 毎週火曜日と木曜日の05:00から06:00の間です。Splunk Alert で、このアカウントが使用されているかどうかを検索する必要があります。 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 Alert検索を構築するにはどうしたらよいでしょうか。

解決方法を教えてください。

Splunk は AND NOT "string" の部分は where コマンドを使用します。 意味がないんです。 文字列をフィールドの値と比較すれば、うまくいくはずです。

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の火曜日または木曜日のイベントを除くすべてのイベントを受け付けます。 さらに、サブサーチは必要ありません。