Zabbix 对 root 登录发出警报

Zabbix 对 root 登录发出警报

我已经开始使用 Zabbix,并且可以看到当 /etc/passwd 等内容发生变化时它会发出警报。

搜索“zabbix 在 root 登录时发出警报”并没有出现任何提示——请问我该如何在 root 登录时发出警报?

答案1

您不应该完全允许 ​​root 登录,因为这不安全。您应该只允许普通用户登录,一旦登录,用户就可以以sudoroot 身份执行命令。

话虽如此,为什么只检查 root 登录?检查普通用户登录同样重要。互联网上的机器人一直在对普通用户进行暴力攻击。

无论哪种方式,您都需要检查/var/log/auth.logSSH 登录是否成功。检查日志文件需要主动 Zabbix 代理检查。因此,首先您需要确保主动检查正常运行(请参阅这篇博文)。

其次,Zabbix 用户(默认情况下)以用户身份运行zabbix。因此它将无法读取/var/log/auth.log,因为该文件仅可由 root 和组中的用户读取adm。因此您可以将zabbix用户添加到adm组。这允许 Zabbix 读取许多日志文件(来源)。

最后,需要在Zabbix前端创建监控项和触发器。

创建项目:

Name: SSH successful authentication
Type: Zabbix agent (active)
Key: log[/var/log/auth.log,"Accepted .*",,,skip,\0]

为该项目创建一个触发器:

Name: Successful SSH authentication on {HOST.NAME}
Expression: {Template OS Linux - Extra:log[/var/log/auth.log,"Accepted .*",,,skip,\0].strlen()}>0 and {Template OS Linux - Extra:log[/var/log/auth.log,"Accepted .*",,,skip,\0].nodata(5m)}=0

注意Accepted .*项目中的正则表达式。这应该匹配所有类型的 SSH 身份验证,无论是密码身份验证还是公钥身份验证。当然,在您的例子中,您可以将正则表达式更改为仅匹配来自 root 的登录。但如前所述,从安全角度来看,这毫无意义。

还请注意,我使用了log[...],因为这会导致正则表达式匹配的负责日志行包含在 Zabbix 将发送的通知电子邮件中。这样,您就可以在电子邮件中看到哪个用户已通过身份验证。

答案2

对于基于 debian 的系统,你需要/var/log/auth.log像这样解析文件:

log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]

https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/zabbix_agent

本质上:

log.count[/var/log/auth.log,*root*Accepted,,,skip]

相关内容