安全审计平台Wazuh架构及功能概览
一、概要Wazuh是一个安全检测,可见性和合规性开源项目。它诞生于OSSEC HIDS的分支,后来又与Elastic Stack和OpenSCAP集成在一起,已发展成为一个更全面的解决方案。Wazuh已与Elastic Stack完全集成,提供了搜索引擎和数据可视化工具,使用户可以浏览其安全警报。Wazuh提供的功能还包括日志数据分析,入侵和恶意软件检测,文件完整性监视,配置评估,漏洞检测以及对法
一、概要
Wazuh是一个安全检测,可见性和合规性开源项目。它诞生于OSSEC HIDS的分支,后来又与Elastic Stack和OpenSCAP集成在一起,已发展成为一个更全面的解决方案。Wazuh已与Elastic Stack完全集成,提供了搜索引擎和数据可视化工具,使用户可以浏览其安全警报。
Wazuh提供的功能还包括日志数据分析,入侵和恶意软件检测,文件完整性监视,配置评估,漏洞检测以及对法规遵从性的支持。
github: https://github.com/wazuh
官方文档:https://documentation.wazuh.com/3.13/getting-started/index.html
OSSEC HIDS是基于主机的入侵检测系统(HIDS),用于安全检测,可见性和合规性监视。它基于多平台代理,该代理将系统数据(例如日志消息,文件哈希和检测到的异常)转发给中央管理器,在中央管理器中对其进行进一步的分析和处理,从而产生安全警报。代理将事件数据传送到中央管理器,以通过安全且经过身份验证的渠道进行分析。
此外,OSSEC HIDS提供集中式系统日志服务器和无代理配置监视系统,可提供对无代理设备(例如防火墙,交换机,路由器,接入点,网络设备等)上的事件和更改的安全洞察。
OpenSCAP:它是一种OVAL(开放漏洞评估语言)和XCCDF(可扩展配置清单描述格式)解释器,用于检查系统配置和检测易受攻击的应用程序,旨在使用企业环境的行业标准安全性基准来检查系统的安全性合规性和强化。
Elastic Stack:它更实际是一个软件套件(Filebeat,Elasticsearch,Kibana),用于收集,解析,索引,存储,搜索和显示日志数据。它提供了一个Web前端,可提供事件的高级仪表板视图,从而可以在事件数据存储中进行高级分析和数据挖掘。
二、 架构
Wazuh平台主要包括三个主要组件,分别是Wazuh代理,Wazuh服务器和Elastic Stack。各组价功能概要如下:
1>Wazuh-agent:它安装在用户终端侧上,例如笔记本电脑,台式机,服务器,云实例或虚拟机。它提供了预防,检测和响应功能。支持Windows,Linux,macOS,HP-UX,Solaris和AIX平台。它还可用于收集不同类型的系统和应用程序数据,然后通过加密并经过身份验证的通道将其转发到Wazuh服务器。
2>Wazuh服务器:它分析从代理收到的数据,通过解码器和规则对其进行处理,并使用威胁情报来查找众所周知的危害指标(IOC)。一台服务器可以分析来自成百上千个代理的数据,并在设置为集群时水平扩展。该服务器还用于管理代理,在必要时进行远程配置和升级。
3>Elastic Stack:它索引和存储Wazuh服务器生成的警报。此外,Wazuh和Kibana之间的集成为数据的可视化和分析提供了强大的用户界面。该界面还可用于管理Wazuh配置并监视其状态。

2.1、代理架构
Wazuh代理具有模块化体系结构,其中不同的组件负责各自的任务:监视文件系统,读取日志消息,收集清单数据,扫描系统配置,查找恶意软件等。用户可以通过配置启用或禁用代理模块设置,使解决方案适应其特定的用例。

各模块功能概述如下:
日志收集器(Log collector):此代理组件可以读取平台日志文件和Windows事件,收集操作系统和应用程序日志消息。支持Windows事件的XPath过滤器,并且可以识别多行格式(例如Linux审核日志)。它还可以使用其他元数据来丰富JSON事件。
命令执行:代理可以定期运行授权命令,收集其输出并将其报告给—>Wazuh服务器以进行进一步分析。此模块可用于满足不同的目的(例如,监视剩余的硬盘空间,获取上次登录用户的列表等)。
文件完整性监视(FIM):此模块监视文件系统,并在创建,删除或修改文件时触发报告。它跟踪文件属性,权限,所有权和内容。事件发生时,它将实时捕获谁,什么以及何时显示详细信息。此外,该模块使用受监视文件的状态构建和维护数据库,从而允许远程运行查询。
安全配置评估(SCA):此组件利用基于Internet安全中心(CIS)基准的即用型检查提供连续的配置评估。用户还可以创建自己的SCA检查来监视和实施其安全策略。
系统清单:此代理模块定期运行扫描,收集清单数据,例如操作系统版本,网络接口,运行的进程,已安装的应用程序以及打开的端口列表。扫描结果存储在本地SQLite数据库中,可以远程查询。
恶意软件检测:使用基于非签名的方法,此组件能够检测异常和rootkit的可能存在。监视系统调用,它将查找隐藏的进程,隐藏的文件和隐藏的端口。
主动响应:检测到威胁时,此模块将自动执行操作。它尤其可以阻止网络连接,停止正在运行的进程或删除恶意文件。用户也可以在必要时创建自定义响应(例如,在沙箱中运行二进制文件,捕获网络连接流量,使用防病毒软件扫描文件等)。
容器安全监视:此代理模块与Docker Engine API集成在一起,以监视容器化环境中的更改。例如,它检测到容器映像,网络配置或数据量的更改。此外,它还警告以特权模式运行的容器以及正在运行的容器中执行命令的用户。
云安全监视:此组件监视诸如Amazon AWS,Microsoft Azure或Google GCP之类的云提供商。它与它们的API进行本地通信。它能够检测云基础架构的更改(例如,创建新用户,修改安全组,停止云实例等),并收集云服务日志数据(例如,AWS Cloudtrail,AWS Macie,AWS GuardDuty ,Azure Active Directory等)
注:Wazuh代理与Wazuh服务器进行通信,将收集的数据和与安全性相关的事件上报给wazhu-server。此外,代理还发送操作数据,报告其配置和状态。连接后,管理员可以从Wazuh服务器远程升级,监视和配置代理。
Wazuh代理与服务器的通信通过安全通道(TCP或UDP)进行,实时提供数据加密和压缩。此外,它包括流控制机制,可避免泛洪,在必要时对事件进行排队并保护网络带宽。
当第一次将Wazuh代理连接到服务器时,Wazuh代理会先注册本身到wazhu-server。此过程将为代理提供了唯一的预共享密钥,该密钥用于与server通信时的身份验证和数据加密。
下图描述了代理程序级别触发的内部任务和过程:
如图所示,代理程序会衍生出多个进程来执行不同的任务,所有代理程序进程都有不同的用途和设置。以下是对此的简短描述:
根检查:此过程执行与检测rootkit,恶意软件和系统异常有关的多项任务。它还针对系统配置文件运行某些基本的安全检查。
日志收集器:此代理组件用于读取操作系统和应用程序日志消息,包括平面日志文件,标准Windows事件日志甚至Windows事件通道。还可以将其配置为定期运行并捕获特定命令的输出。
Syscheck:此过程执行文件完整性监视(FIM),还可以监视Windows系统上的注册表项。它能够检测文件内容,所有权和其他属性的变化,并注意到文件的创建和删除。默认情况下,它执行定期FIM扫描时,也可以配置为与操作系统内核进行通信,以实时检测文件更改并生成文本文件的详细更改报告(差异)。
OpenSCAP:此模块使用已发布的OVAL(开放漏洞评估语言)和XCCDF(可扩展配置清单描述格式)基准安全配置文件。通过定期扫描系统,它可以找到不遵循众所周知的标准(例如CIS(Internet安全中心)基准测试中定义的标准)的易受攻击的应用程序或配置。
代理程序守护程序:这是接收所有其他代理程序组件生成或收集的数据的过程。它通过经过身份验证的通道对数据进行压缩,加密并将其传送到服务器。此过程在隔离的“ chroot”(更改根)环境中运行,这意味着它对受监视系统的访问受到限制。因为它是连接到网络的唯一过程,所以可以提高代理的整体安全性。
2.2、wazhu-server架构
Wazuh服务器组件主要负责分析从代理接收的数据,并在检测到威胁或异常时触发警报。它还用于远程管理代理配置并监视其状态。
Wazuh服务器运行分析引擎,Wazuh RESTful API,代理注册服务,代理连接服务,Wazuh集群守护程序和Filebeat。下图中描绘说明了wazhu服务器体系结构和组件间的关系:
wazhu服务器通常部署在独立的物理机,虚拟机,docker容器或云实例上,安装在Linux操作系统中。以下是主要服务器组件的列表:
代理注册服务(agent registration service):用于通过存储和分配每个代理唯一的预共享身份验证密钥来注册新代理。此过程作为网络服务运行,并支持通过TLS / SSL证书或提供固定密码进行身份验证。
代理连接服务:这是从代理接收数据的服务。它利用预共享密钥来验证每个代理身份并加密agent与Wazuh服务器之间的通信。此外,此服务还用于提供集中配置管理,能够远程推送新的代理设置。
分析引擎:这是执行数据分析的过程。它利用解码器来识别正在处理的信息的类型(例如Windows事件,SSHD日志,Web服务器日志等),并从日志消息中提取相关的数据元素(例如源IP地址,事件ID,用户名等)。 。此后通过使用特定规则,它可以识别解码事件中的特定模式,这些特定模式可能会触发警报,甚至可能要求采取自动对策(例如,防火墙上的IP禁止)。
Wazuh RESTful API:此服务提供了与Wazuh基础结构进行交互的接口。它用于管理代理和服务器配置设置,监视基础结构状态和总体运行状况,管理和编辑Wazuh解码器和规则,以及查询受监视端点的状态。Wazuh Web用户界面(Kibana应用程序)也使用它。
Wazuh群集守护程序:此服务用于水平扩展Wazuh服务器,将它们部署为群集。这种配置与网络负载平衡器相结合,可提供高可用性和负载平衡。Wazuh群集守护程序是Wazuh服务器用来相互通信并保持同步的服务器。
Filebeat:用于将事件和警报发送到Elasticsearch。它读取Wazuh分析引擎的输出并实时发送事件。当连接到多节点Elasticsearch集群时,它还提供负载平衡。

2.3、Elastic Stack
Elastic Stack是流行的开源项目的统一套件,用于日志管理,包括Elasticsearch,Kibana,Filebeat等。其中,与Wazuh解决方案特别相关的项目概述如下:
Filebeat:一种轻量级转发器,用于通过网络传送日志,通常将日志传送到Elasticsearch。在Wazuh服务器上使用它来将事件和警报发送到Elasticsearch。它读取Wazuh分析引擎的输出,并通过加密通道实时发送事件。当连接到多节点Elasticsearch集群时,它还提供负载平衡。
Elasticsearch:高度可扩展的全文本搜索和分析引擎。Elasticsearch是分布式的,这意味着数据索引分为多个碎片,每个碎片可以具有零个或多个副本。Wazuh对警报数据,原始事件和状态监视信息使用不同的索引。
Kibana:灵活,直观的Web可视化界面,用于挖掘,分析和可视化数据。它在Elasticsearch集群中的索引内容之上运行。Wazuh Web用户界面已以插件的形式完全嵌入在Kibana中。它包括用于安全事件,法规遵从性(例如PCI DSS,GDPR,CIS,HIPAA,NIST 800-53)的现成仪表板,检测到的易受攻击的应用程序,文件完整性监控数据,配置评估结果,云基础架构监控事件等。
Elastic Stack提供了广泛用于威胁检测、可见性和事件响应的安全分析功能。Elasticsearch索引和搜索安全相关信息的速度和规模使安全分析师能够更有效地工作,而Kibana仪表盘提供广泛的可见性,并支持交互式威胁搜索。机器学习引擎可以自动分析复杂的数据集,使它有可能更早发现入侵者,而不被忽视。
通过Wazuh与Elastic Stack集成,提供了供Elasticsearch索引的已解码消息的提要,以及用于警报和日志数据分析的实时Web控制台。此外,在Kibana之上运行的Wazuh用户界面用于管理和监视Wazuh基础结构。
Elasticsearch索引是具有相似特征(例如某些公共字段和共享数据保留要求)的文档的集合。Wazuh利用每天创建的多达三个不同的索引来存储不同的事件类型:
wazuh-alerts:Wazuh服务器生成的警报的索引。每当事件触发具有足够高优先级的规则(此阈值是可配置的)时,就会创建这些规则。
wazuh-events:无论是否执行规则,从代理收到的所有事件(存档数据)的索引。
wazuh-monitoring:一段时间内与Wazuh代理状态相关的数据的索引。它是用来通过Web管理界面来表示,当个别代理商或已经Active,Disconnected或。Never connected索引由文档组成。对于以上索引,文档是单个警报,已归档事件或与Wazuh代理状态相关的数据。
Elasticsearch索引分为一个或多个分片,并且每个分片可以有一个或多个副本。每个主分片和副本分片都是一个单独的Lucene索引。因此,Elasticsearch索引由许多Lucene索引组成。在Elasticsearch索引上运行搜索时,将在所有分片上并行执行搜索,并合并结果。在多节点Elasticsearch集群中使用Elasticsearch索引划分为多个分片和副本,目的是扩大搜索范围并实现高可用性。单节点Elasticsearch集群通常每个索引只有一个分片,没有副本。
下面是一个基于主机和网络的IDS技术的部署示例,与Elastic Stack集成在一起:
其中,Suricata sensor负责监控网络流量。该sensor(传感器)通常配置为通过网络tap、镜像端口或SPAN(交换端口分析器)端口监控流量,也可以直接部署到wazhu服务器上。本图示例中,使用Wazuh规则来分析Suricata警报,统一警报格式并允许我们进行关联(例如与威胁情报来源)并触发自动响应。通过配置Wazuh代理来读取Suricata JSON输出来完成的。该代理充当一个收集器,将Suricata NIDS警报转发到Wazuh服务器,在那里通过Wazuh日志分析规则处理这些警报,从而产生新的和丰富的安全事件。NIDS和HIDS警报都通过Filebeat(配置为读取Wazuh警报)和Logstash(也用于地理位置丰富)发送到Elasticsearch,在那里我们将使用机器学习作业来检测异常和不寻常的行为
2.4、集群架构
Elasticsearch集群是一个或多个节点的集合,这些节点相互通信以对索引执行读取和写入操作。不需要处理大量数据的小型Wazuh部署可以通过单节点群集轻松处理。当有大量受监视的端点,预期有大量数据或需要高可用性时,建议使用多节点群集。
对于生产环境,建议将Wazuh服务器和Elasticsearch部署到不同的主机。在这种情况下,Filebeat用于使用TLS加密将Wazuh警报和/或存档的事件安全地转发到Elasticsearch群集(单节点或多节点)。

小型单节点:
2.5、默认端口
对于Wazuh组件的通信,整个架构使用了多种服务。下面是这些服务使用的默认端口列表。用户可以在必要时按需修改这些端口号。

通讯和数据流:

1)代理服务器通信:
Wazuh代理使用OSSEC消息协议通过端口1514(UDP或TCP)将收集的事件发送到Wazuh服务器。然后,Wazuh服务器使用分析引擎对接收到的事件进行解码和规则检查。触发规则的事件会增加警报数据,例如规则ID和规则名称。可以将事件假脱机到以下一个文件或两个文件中,具体取决于规则是否被触发:
该文件/var/ossec/logs/archives/archives.json包含所有事件,无论它们是否违反规则。
该文件/var/ossec/logs/alerts/alerts.json仅包含违反规则的事件。
注意:如果同时使用这两个文件,则警报将重复,两个文件都接收完全解码的事件数据。Wazuh消息协议使用具有完整16轮实现的192位Blowfish加密或具有每个块128位和256位密钥的AES加密。
2)Wazuh-弹性通讯
Wazuh服务器使用Filebeat通过TLS加密将警报和事件数据发送到Elasticsearch服务器。
Filebeat格式化传入的数据,并有选择地使用GeoIP信息丰富它,然后再将其发送到Elasticsearch(端口9200 / TCP)。将数据编入Elasticsearch后,将使用Kibana(端口5601 / TCP)来挖掘和可视化信息。
Wazuh应用程序在Kibana内部运行,不断查询RESTful API(Wazuh管理器上的端口55000 / TCP),以显示服务器和代理的配置和状态相关信息,并在需要时重新启动代理。此通信使用TLS加密,并使用用户名和密码进行身份验证。


三、安装部署
参见:https://www.cnblogs.com/backlion/p/10397092.html

3.1、安装Wazuh服务器
Wazuh服务器可以安装在任何类型的Unix操作系统上。最常见安装在Linux上。如果可以为您的系统提供自动化脚本,则安装过程会更容易,但是,从源码构建和安装也非常简单。
通常在Wazuh服务器上安装两个组件:管理器和API。此外,对于分布式体系结构(Wazuh服务器将数据发送到远程Elastic Stack集群),需要安装Filebeat。
强烈建议在64位操作系统上安装Wazuh Server,因为Wazuh API在32位平台上不可用。如果没有Wazuh API,Wazuh Kibana应用程序的大部分功能都将无法使用。同样,如果使用Red Hat或CentOS来构建Wazuh Server平台,请确保它是版本6或更高版本才能正确安装Wazuh API。
注:在安装组件之前,请确认时间同步服务已配置并在服务器上运行,这通常是通过NTP完成的。
1)单节点架构
2)分布式架构
详细参见:https://documentation.wazuh.com/3.13/installation-guide/index.html
特别鸣谢:https://blog.90.vc/archives/497,https://www.cnblogs.com/backlion/p/10397092.html,https://www.elastic.co/blog/improve-security-analytics-with-the-elastic-stack-wazuh-and-ids
更多推荐
所有评论(0)