# 开源安全平台 wazuh 架构介绍

**URL:** <https://forum.90sec.com/t/topic/200>\
**Category:** 信安之路\
**Created:** [2019 年6 月 29 日 07:33 UTC](https://forum.90sec.com/t/topic/200 "2019-06-29T07:33:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![xazlsec](https://forum.90sec.com/user_avatar/forum.90sec.com/xazlsec/32/659_2.png) [@xazlsec](https://forum.90sec.com/u/xazlsec)\
发布日期： [2019 年6 月 29 日 07:33 UTC](https://forum.90sec.com/t/topic/200/1 "2019-06-29T07:33:13Z")

</div>

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

这个项目的名称是 WAZUH，官网地址：

> [https://wazuh.com/](https://wazuh.com/)

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

> [Wazuh documentation](https://documentation.wazuh.com/current/index.html)

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

 ![image](https://forum.90sec.com/uploads/default/original/2X/b/beb0ce1eb7be3928eb62b3d1aa9d6e65b8d39750.jpeg)

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

> [Architecture - Getting started with Wazuh · Wazuh documentation](https://documentation.wazuh.com/current/getting-started/architecture.html)

### 日志数据收集

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

 ![image](https://forum.90sec.com/uploads/default/original/2X/6/67253cd4b40b8aa114128a9004a92632d9eea5bf.jpeg)

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

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

详细的配置请看：

> [How it works - Log data collection · Wazuh documentation](https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/how-it-works.html)

### 文件监控

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

 ![image](https://forum.90sec.com/uploads/default/original/2X/5/58bb7d0af7b28fee54e40c76d655add26111aa2d.jpeg)

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

> [How it works - File integrity monitoring · Wazuh documentation](https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/how-it-works.html)

### 恶意软件检查

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

 ![image](https://forum.90sec.com/uploads/default/original/2X/c/c39a1d3d760d8e2cdeb31447062f0a6d5b0a54c8.jpeg)

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

> [Malware detection - Capabilities · Wazuh documentation](https://documentation.wazuh.com/current/user-manual/capabilities/anomalies-detection/how-it-works.html)

### 漏洞检测

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

 ![image](https://forum.90sec.com/uploads/default/original/2X/8/888bc6b7e9d76c8fbc7988bd6e29879e438076f8.png)

详情请看：

> [Vulnerability detection - Capabilities · Wazuh documentation](https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection.html#compatibility-matrix)

### 总结

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