我有兴趣搜索这批大量的/ var / log / secure文件,查找在SSH登录过程中接受和失败的所有IP地址。
如何编写处理此问题的搜索查询?
答案 0 :(得分:1)
注意:针对我自己的CentOS 7 Linux服务器在Splunk Enterprise 6.2.2上进行了测试
我没有假设在这里提取过任何字段。我的安全日志为成功和失败的登录提供了两个不同的消息。它们看起来像这样:
Mar 24 13:03:59 localhost sshd[3588]: Failed password for adrian from 172.20.255.111 port 4753 ssh2
Mar 24 12:52:41 localhost sshd[2762]: Accepted password for adrian from 172.20.255.111 port 4656 ssh2
有了这个,我想出了以下搜索:
source="*secure" process=sshd "password for"
| rex field=_raw "(?<result>Accepted|Failed) password for (?<username>\w+) from (?<ipaddr>[0-9A-Fa-f:\.]+)"
|eval success=if(result=="Failed",0,1)
|stats count as total,sum(success) as success by ipaddr
|where total!=success AND success!=0
rex执行字段extrations生成字段result,username和ipaddr。如果结果字段未失败,则成功字段为1。由于正则表达式只接受接受或失败的值,这意味着接受,但您可以更改环境的正则表达式以更改它。然后我做一个典型的统计数据,找出连接总数与成功连接的不同之处,并且成功连接非零(以匹配您的AND查询)。