“实际上,agent端指标的白名单和黑名单也是Zabbix培训中的一个重要主题。”
——Kaspars Mednis , 全球培训师负责人,Zabbix SIA
本文整理自Kaspars 在2020Zabbix中国峰会的演讲,ppt获取链接见文末。更多演讲视频可关注官方Bilibili账号主页(ID:Zabbix中国)。
目录
一 为什么需要agent端指标的白名单和黑名单
二 如何保障安全性
三 关于通配符
四 关于功能注释
五 哪个更安全?白名单还是黑名单?
为什么需要agent端指标的白名单和黑名单
首先,第一个问题是为什么?我们为什么需要agent端指标的白名单和黑名单?
实际上,我们都知道,Zabbix agent主要的功能就是采集监控,但也可以从配置文件、日志文件、密码文件或任何其他敏感数据源收集到一些敏感信息。正如大家现在所看到的一个简单示例,通过Zabbix get功能,我们可以对密码文件的内容实现读取。我想现在大家心中都会认为这也太不安全了,对吧?这属于敏感信息。
除此之外,另一个问题是system run[]命令,system run[]命令是非常有用、非常强大的命令,它实际上允许你直接在被监视的主机上从Zabbix前端执行任何命令,这也意味着你可以收集很多有用的信息,但这里的关键词是“任何命令”。实际上,有些人可能会使用这些命令执行一些有害代码。正如大家现在所看到的,在第一个示例中,用户将尝试从Web下载一些恶意代码,然后将尝试执行,以期获得根权限或其他权限。或者,在另外一个示例中,用户想要删除一些活动痕迹,试图删除一些日志文件。这些只是几个例子,都可以从前端执行。
我是从命令行使用Zabbix get,因为这样可以更容易的测试。但需要指出的是,如果从前端执行也可以实现同样的效果。当然,通常Zabbix agent是以非特权帐户运行的,这就意味着并不是所有这些命令都会成功。但是如果在windows上运行Zabbix,那么Zabbix的运行位置是windows的本地系统。实际上,在这里,几乎可以运行所有的命令。
如何保障安全性
这就引出了下一个问题,我们如何防止这种情况发生?
- Enable Remote Commands参数
在Zabbix5.0发布之前,我们在Zabbix agent配置文件中设置了一个选项,称为Enable Remote Commands。如果您将此参数设置为零,则远程命令就会被禁用。因此ÿ