开源安全平台 wazuh 架构介绍

安全圈的大事刚刚结束,安全圈的小伙伴也从加班的阴影中走了出来,这期间,学习写文章投稿的人很少,估计还是忙吧,大考结束之后,大家可以放松一下,然后继续学习新知识,打基础,为了迎接下一次的挑战而做准备。做安全防御,入侵检测是必不可少的,而入侵检测通常分为网络层面和主机层面,今天就来看一个带有主机入侵检测功能的安全平台,他不止包含主机入侵检测的功能,还包含其他的一些功能,比如:基线漏洞监控、合规性扫描,能力强的还可以根据检测的结果自动响应。

这个项目的名称是 WAZUH,官网地址:

https://wazuh.com/

作为一个优秀的开源产品,详细的文档是必不可少的,大家可以前往人家官网查看:

https://documentation.wazuh.com/current/index.html

整个项目的内容非常多,这一篇文章是讲不完的,所以只是聊一下他的内部架构是如何实现他的功能的。下图是他的整体架构:

收集信息是通过 agent 的方式,信息处理在服务端,展示和存储数据用的是 ELK,agent 与 server 之间的通信是通过 AES 加密后传输,服务端分析完成之后通过 Filebeat 将数据打入 es。详细的介绍请看:

https://documentation.wazuh.com/current/getting-started/architecture.html

日志数据收集

安全平台基本上就是一个日志收集、分析处理、报表展示、时间报警和处理的综合体,日志收集是每一个主机入侵检测系统的核心功能,下图是 wazuh 中关于日志收集的架构图:

从上图可以看到,wazuh 的 agent 上包含一个 Logcollector 模块,在 Linux 下可以读日志文件、在 Windows 下可以读 事件日志文件的方式将日志收集起来发送到 wazuh 的 server 端,除了 agent 这种模式之外,还可以通过 rsylog 的方式将日志送到 wazuh 的 server 端,wazuh 的 server 上其实自带了 agent 的功能,也算是对自己服务端的日志收集。

收集到日志之后,服务器端的分析模块,可以将日志进行一系列的操作后与 wazuh 的规则集进行匹配,从而输出报警和一些其他信息,这些信息会被送往 es 集群中, 通过 Kibana 进行可视化展示。

详细的配置请看:

https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/how-it-works.html

文件监控

这个功能主要是为了监控一些关键的文件是否被查看或者修改,比如 linux 下的密码文件:passwd、shadow 等,windows 下的注册表文件,这在入侵检测的阶段非常有用,黑客在拿到系统权限之后,对这些文件是非常感兴趣的,下图就是 wazuh 下 syscheckd 模块的架构图:

服务器端基本上与 日志收集模块差不多,就是在 agent 上使用的模块名称不同。详情请看:

https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/how-it-works.html

恶意软件检查

这个模块主要包含的功能有:文件监控(恶意软件可能会替换文件)、检测运行的进程(恶意软件可能隐藏自己进程,根据 getsid 和 getpgid 的方式检测所有进程 ID)、检测隐藏的端口(恶意软件可能会隐藏自己端口,使用 bind 函数检测被占用的端口与 netstat 列出的端口列表进行对比,来识别隐藏端口)、检测权限异常的文件(比如 suid 文件、隐藏目录或文件等)、检测是否使用了混杂模式、rootkit 检查等。这个功能使用了两个模块,分别为 rootcheck 和 syscheckd,架构如图:

架构差不多,也没啥新的东西,详情请看:

https://documentation.wazuh.com/current/user-manual/capabilities/anomalies-detection/how-it-works.html

漏洞检测

这里主要是针对 Linux,通过获取远程漏洞库,通过比较本地系统内所有软件包的版本信息,如果版本低于漏洞库里所记录的最低版本信息,则认为该组件或者软件包存在漏洞,然后做提醒,配置的话可以通过离线和在线两种方式,主要是为了满足,服务端无法上外网的情况,可以通过手动更新漏洞库的方式来使用这个功能。支持的系统版本如下:

详情请看:

https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection.html#compatibility-matrix

总结

这里挑了几个比较重要的功能做了一些解释,其功能的强大只有自己去挖掘了,还有一点比较好的是,之前遇到问题,在 github 上提 issue,很快能得到解决,而且更新的频率很快,自己还没玩好这个版本,去看文档的时候,已经更新了好几个大版本,又得重新安装, 其中的坑只有自己淌过才更加的深刻。之前在搞的时候翻译过两个文档,用的版本是 3.61,现在都更新到 3.9 版本了,欢迎大家试用,我在圈子里等你一起交流,厚颜无耻的打个广告,请见谅,希望对大家有用。只有打好基础才能在战时不至于手忙脚乱,共勉!