我正在尝试执行 Splunk 查询,我在 10 分钟窗口内看到来自同一源 IP 的连接超过 50 次。所以基本上,我正在寻找 DDOS 攻击。
现在是我的查询:
index="*" srccountry!="Reserved" | stats count by src_ip AS ip_count | timechart span=10m count | table src_ip, ip_count | where ip_count > 50
但不是表,是事件视图
我很惊讶你能从那个查询中得到任何东西。
stats
命令在语法上不正确,其余命令使用不存在的字段。
同时使用
stats
和 timechart
计算事件是多余的。由于您正在查看 10 分钟的窗口,timechart
是更好的选择。
index="*" srccountry!="Reserved" | timechart span=10m count as ip_count by src_ip
一旦你有了时间和计数列表,使用
where
命令过滤掉少于 51 个连接的那些。
| where ip_count > 50
这应该会生成一个表格,但是您可以使用
table
命令让 Splunk 按特定顺序显示字段。
| table src_ip ip_count
顺便说一句,正确的
stats
命令(不是你需要的)是stats count as ip_count by src_ip
。 stats
是一个转换命令,这意味着它不会传递timechart
所需的_time字段,因此该命令不会产生任何结果。同样,timechart
也是一个转换命令,因此 ip_count 不可用于查询的其余部分。
编辑 以下是可能更适合您的查询变体。它将
timechart
替换为 bin
和 stats
.
index="*" srccountry!="Reserved"
| bin span=10m _time
| stats count as ip_count by _time,src_ip
| where ip_count > 50
RichG 的查询 没有像写的那样工作,但它让我部分地在那里。这有效:
index="*" srccountry!="Reserved"
| timechart span=10m count as ip_count by src_ip where count > 50