ElasticAlert基於聚合告警

背景

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

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

elasticalert的基礎配置可參考://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
Tags: