ElasticAlert基於聚合告警

Goun發表於2021-09-12

背景

最近公司網站經常被漏洞掃描,雖然並沒有什麼漏洞給對方利用,但是每次掃描我們也必須要察覺到,如果掃描的量太大,可以考慮從公有云的安全組上禁用掉這個IP,所以需要統計指定時間內每個IP的訪問次數,這是一個手動的過程,非常麻煩。

ElasticAlert目前已經放棄維護了,如果不是依賴很重,建議直接使用新版本:https://github.com/jertel/elastalert2(看簡介,支援Helm,對kubernetes更加友好)

elasticalert的基礎配置可參考:https://www.cnblogs.com/GXLo/p/9230362.html

配置

name: Too Many Requests

# 告警型別
type: metric_aggregation

# 索引
index: web-nginx-access-*

# 指定聚合的key,這裡用的是客戶端的IP
metric_agg_key: remote_addr.keyword
# 聚合型別,支援avg,max,min等
metric_agg_type: value_count
# 只有日誌中,存在這個key,才會被聚合進去
query_key: remote_addr.keyword

# 如果 5min中的聚合資料,大於這個,就會觸發告警
max_threshold: 10000

# 快取時間,每次會查詢10min內的資料
buffer_time:
  minutes: 10

# 桶的間隔時間
bucket_interval:
  minutes: 5

sync_bucket_interval: true

# 查詢DSL,這裡還是查詢所有,沒有使用agg 查詢語句
filter:
- query:
    match_all: {}

具體引數詳解,可檢視官方文件

告警效果

to many request on 178.128.81.2

相關文章