需求是 在Graylog log 搜出及過濾特定目標,
以簡單的帳戶鎖定為例.
以下這樣是符合需求的 , 結果不含特定電腦名稱
EventID:4740 AND "DC1.domain.com" OR "DC2.domain.com" NOT "呼叫者電腦名稱: TW-TESTPC1"
但如果是用 * 只要開頭是AU 的電腦都過濾掉,是無作用的,
但如果是完整電腦名稱是可以過濾掉
有參考官方文件
EventID:4740 AND "DC1.domain.com" OR "DC2.domain.com" NOT "呼叫者電腦名稱: TW-TESTPC1" NOT 呼叫者電腦名稱: "AU*"
請問應該要怎麼下 才能達到需求?
(實際測了很多方式都但不成功,這裡只舉上方的例子)
2022/12/02/17:35 更新
我再試了一下, 以下 萬用字元竟然是有效的
EventID:4740 AND "DC01.domain.com" OR "DC02.domain.com" NOT "呼叫者電腦名稱: SERVER1" NOT "呼叫者電腦名稱: APPS*" NOT "呼叫者電腦名稱: LP-*"
但為什麼 把LP-* , APPS* 分別改為 LP* , APP*
則LP* 生效 , APP* 就不生效, AU* 萬年不生效
想知道這規則是什麼
EventID:4740 AND "DC01.domain.com" OR "DC02.domain.com" NOT "呼叫者電腦名稱: SERVER1" NOT "呼叫者電腦名稱: APP*" NOT "呼叫者電腦名稱: LP*"
NOT 呼叫者電腦名稱: "AU*" ==> AND NOT "呼叫者電腦名稱: AU*"
如果沒有把"呼叫者電腦名稱" parse 出來成單獨欄位,要在full message中搜尋,引號要像上面這樣加,同時要注意:和AU中間的空白數量也要對,另一個NOT前面應該也要加AND才比較合理。
改成這樣也是無作用, 昨天也試過, 另外如果在 另一個NOT前也加 AND
就完全搜不到結果了
以下可以過濾在SERVER1 鎖定的LOG , 但還是會出現AU開頭的電腦
EventID:4740 AND "DC01.domain.com" OR "DC02.domain.com" NOT "呼叫者電腦名稱: SERVER1" AND NOT "呼叫者電腦名稱: AU*"
https://www.elastic.co/guide/en/elasticsearch/guide/2.x/_wildcard_and_regexp_queries.html
這頁最下方的說明"呼叫者電腦名稱: SERVER1",因為有空格會被當成兩個詞處理,就沒辦法配合萬用字元使用。
試試這個
EventID:4740 AND source:/DC[12].domain.com/ AND NOT TargetDomainName:(TW-TESTPC1 OR AU*)
一樣欸, 結果會變成連 tw-testpc1 都沒被過濾了..