开源XDR-SIEM一体化平台 Wazuh (1)基础架构

简介

Wazuh平台提供了XDR和SIEM功能,保护云、容器和服务器工作负载。这些功能包括日志数据分析、入侵和恶意软件检测、文件完整性监控、配置评估、漏洞检测以及对法规遵从性的支持。详细信息可以参考Wazuh - Open Source XDR. Open Source SIEM.官方网站

Wazuh解决方案基于Wazuh代理,该代理部署在被监控的端点上,以及三个核心组件:Wazuh服务器、Wazuh索引器和Wazuh仪表板。

Wazuh索引器

Wazuh索引器是一个高度可扩展的全文搜索和分析引擎。这个核心组件索引并存储由Wazuh服务器生成的警报。

Wazuh服务器

Wazuh服务器分析从代理接收到的数据。它通过解码器和规则处理这些数据,利用威胁情报来查找已知的攻击指标(IOC)。单个服务器可以分析来自数百或数千个代理的数据,并可以在设置为集群时水平扩展。这个核心组件还用于管理代理,在必要时进行远程配置和升级。

Wazuh仪表板

Wazuh仪表板是用于数据可视化和分析的网络用户界面。它包括现成的仪表板,用于威胁搜寻、法规遵从性(如PCI DSS、GDPR、CIS、HIPAA、NIST 800-53)、检测到的易受攻击的应用程序、文件完整性监控数据、配置评估结果、云基础设施监控事件等。它还用于管理Wazuh配置并监控其状态。

Wazuh代理

代理安装在端点上,如笔记本电脑、台式机、服务器、云实例或虚拟机。它们提供威胁预防、检测和响应能力。它们可以在Linux、Windows、macOS、Solaris、AIX和HP-UX等操作系统上运行。

除了基于代理的监控功能外,Wazuh平台还可以监控无代理设备,如防火墙、交换机、路由器或网络入侵检测系统(IDS)等。例如,系统日志数据可以通过Syslog收集,并且Wazuh平台能够解析和分析这些数据,以提供全面的安全监控和威胁检测能力。

其运作流程如下:

模块介绍

Wazuh索引器

Wazuh索引器是一个高度可扩展的全文搜索和分析引擎。作为Wazuh平台的核心组件之一,它负责索引和存储由Wazuh服务器生成的警报,并提供接近实时的数据搜索和分析功能。Wazuh索引器可以配置为单节点或多节点集群,以实现可扩展性和高可用性。

Wazuh索引器以JSON文档的形式存储数据。每个文档将一组键(或字段名、属性)与其对应的值相关联,这些值可以是字符串、数字、布尔值、日期、值数组、地理位置或其他类型的数据。

索引是相关文档的集合。在Wazuh索引器中,存储的文档被分布在不同的容器中,这些容器被称为分片(shards)。通过将文档分布在多个分片中,并将这些分片分布在多个节点上,Wazuh索引器可以确保数据的冗余性。这种设计保护了系统免受硬件故障的影响,并且随着节点被添加到集群中,查询能力也会增加。

通过这种方式,Wazuh索引器能够高效地处理大量的安全警报和日志数据,提供快速的数据检索和分析能力,帮助安全团队及时发现并响应潜在的安全威胁。

索引名称 描述
wazuh-alerts 存储由Wazuh服务器生成的警报。每当事件触发优先级足够高(此优先级阈值可配置)的规则时,就会生成这些警报。
wazuh-archives 存储Wazuh服务器接收到的所有事件(归档数据),无论这些事件是否触发了规则。此索引包含所有监控活动的完整记录。
wazuh-monitoring 存储与Wazuh代理随时间变化的状态相关的数据。此信息被Web界面用于表示单个代理的当前或历史状态(例如,活跃、断开连接或从未连接)。
wazuh-statistics 存储与Wazuh服务器性能相关的数据。此索引包含用于Web界面表示服务器性能和资源利用率的指标和统计数据。

Wazuh服务器

Wazuh服务器组件负责分析从代理接收的数据,并在检测到威胁或异常时触发警报。它还被用于远程管理代理的配置并监控其状态。

Wazuh服务器利用威胁情报源来提高其检测能力。通过使用MITRE ATT&CK框架和法规遵从性要求(如PCI DSS、GDPR、HIPAA、CIS和NIST 800-53),Wazuh服务器还能丰富警报数据,为安全分析提供有用的上下文。

此外,Wazuh服务器可以与外部软件进行集成,包括ServiceNow、Jira和PagerDuty等工单系统,以及Slack等即时消息平台。这些集成有助于简化安全操作流程。

Wazuh服务器架构

Wazuh服务器运行着分析引擎、Wazuh RESTful API、代理注册服务、代理连接服务、Wazuh集群守护进程以及Filebeat。该服务器安装在Linux操作系统上,并通常运行在独立的物理机、虚拟机、Docker容器或云实例上。

  1. 代理注册服务:用于注册新代理。此服务为每个代理提供并分发唯一的认证密钥。该服务作为网络服务运行,并支持通过TLS/SSL证书或提供固定密码进行身份验证。

  2. 代理连接服务:此服务接收来自代理的数据。它使用注册服务共享的密钥来验证每个代理的身份,并加密Wazuh代理与Wazuh服务器之间的通信。此外,该服务还提供集中式配置管理功能,允许远程推送新的代理设置。

  3. 分析引擎:这是执行数据分析的服务器组件。它使用解码器来识别正在处理的信息类型(如Windows事件、SSH日志、Web服务器日志等)。这些解码器还从日志消息中提取相关数据元素,如源IP地址、事件ID或用户名。然后,通过分析引擎中的规则,它识别解码后的事件中的特定模式,这些模式可能触发警报,甚至可能调用自动化应对措施(例如,禁止IP地址、停止正在运行的进程或删除恶意软件工件)。

  4. Wazuh RESTful API:此服务提供了一个与Wazuh基础架构交互的接口。它用于管理代理和服务器的配置设置,监控基础架构的状态和整体健康状况,管理和编辑Wazuh解码器和规则,以及查询受监控端点的状态。Wazuh仪表板也使用此API。

  5. Wazuh集群守护进程:此服务用于水平扩展Wazuh服务器,将它们部署为集群。这种配置与网络负载均衡器结合使用,提供了高可用性和容错能力。在集群模式下,多个Wazuh服务器实例可以共同处理数据,确保即使在单个服务器发生故障时,系统也能继续运行并维护数据的完整性和一致性。集群守护进程负责处理集群节点之间的通信和协调,以确保数据在节点之间正确分发和同步。

  6. Filebeat:虽然Filebeat本身是一个轻量级的日志收集器,但在Wazuh服务器架构中,它可能被用于从特定来源(如日志文件)收集数据,并将这些数据作为事件的一部分发送给分析引擎进行处理。它还能在连接到多节点Wazuh索引器集群时提供负载平衡作用。

Wazuh 仪表盘

Wazuh 仪表盘是一个灵活且直观的Web用户界面,用于挖掘、分析和可视化安全事件和警报数据。它还被用于Wazuh平台的管理和监控。此外,它还提供了基于角色的访问控制(RBAC)和单点登录(SSO)的功能。

数据可视化与分析

Wazuh的Web界面帮助用户浏览由Wazuh代理收集的不同类型的数据,以及由Wazuh服务器生成的安全警报。这一界面不仅提供了数据的概览,还允许用户深入探索数据的细节,以便更好地理解系统的安全状况。

在数据可视化方面,Wazuh提供了丰富的图表、图形和地图等可视化工具,使用户能够直观地看到数据的趋势、模式和异常情况。这些可视化工具不仅有助于用户快速识别潜在的安全威胁,还能帮助他们更好地理解数据的上下文和含义。

此外,Wazuh还允许用户生成报告,这些报告可以包含有关安全事件、警报、系统状态等信息的详细汇总。用户可以根据需要自定义报告的内容、格式和样式,以满足不同的需求和目的。

代理监控与配置

Wazuh仪表盘为用户提供了强大的代理管理和监控功能。通过仪表盘,用户可以轻松配置和管理各个监控端点的代理,确保它们按照预期运行并收集必要的安全数据。

对于每个被监控的端点,用户都可以在Wazuh仪表盘中定义代理的模块配置。这意味着用户可以指定哪些模块将被启用,以收集特定类型的数据。例如,用户可以选择启用文件完整性监控模块来跟踪系统关键文件的任何更改,或者启用网络监控模块来捕获网络流量中的异常行为。

此外,用户还可以配置代理以读取特定的日志文件。通过指定日志文件的路径和格式,代理可以自动收集这些日志中的信息,并将其发送到Wazuh服务器进行分析。这有助于用户及时发现和响应潜在的安全事件,如未授权的访问尝试或恶意软件活动。

除了文件监控和日志收集外,用户还可以配置代理以执行配置检查。这些检查可以确保系统的关键配置设置符合预期,从而帮助防止配置错误导致的安全问题。例如,用户可以配置代理以检查系统的防火墙规则是否已正确设置,或者检查系统用户账户是否具有适当的权限。

平台管理

在平台管理方面,Wazuh仪表盘首先提供了对Wazuh服务器状态的实时监控。用户可以查看服务器的性能指标、资源使用情况以及任何潜在的问题或警告。这有助于确保服务器的稳定性和可靠性,从而保障整个监控系统的正常运行。

此外,仪表盘还允许用户查看和分析Wazuh的日志文件。这些日志包含了系统运行过程中的详细记录,对于诊断问题、追踪事件以及优化性能都非常有用。用户可以根据需要搜索、过滤和导出日志,以便进行更深入的分析。

在统计方面,Wazuh仪表盘提供了丰富的统计数据和报告,帮助用户了解监控系统的整体状况。这些统计数据可能包括事件数量、警报类型分布、响应时间等,为用户提供了一个全面的视角来评估系统的安全性和性能。

除了基本的监控和日志分析功能外,Wazuh仪表盘还允许用户配置Wazuh服务器。用户可以根据需要调整服务器的设置,如修改网络配置、设置用户权限等。此外,用户还可以创建自定义的规则和解码器,以优化日志分析和威胁检测过程。这些自定义规则和解码器可以根据特定的业务需求和安全策略进行定制,从而提供更加准确和有效的安全监控。

开发者工具

Wazuh仪表盘为开发者提供了一系列实用的工具,其中最显著的是"规则集测试"工具。这个工具允许用户处理日志消息,以检查它们是如何被解码的,并确定这些消息是否匹配任何威胁检测规则。这一功能在开发自定义解码器和规则时尤为有用,因为它可以帮助开发者快速验证他们的代码是否按预期工作。

在开发自定义规则和解码器时,确保它们能够准确地识别出潜在的安全威胁是至关重要的。通过使用规则集测试工具,开发者可以模拟实际环境中的日志消息,并观察这些消息是如何被Wazuh系统处理的。如果消息被正确解码并触发了相应的威胁检测规则,那么这就表明自定义规则和解码器是有效的。反之,如果消息没有被正确解码或没有触发任何规则,那么开发者就可以根据测试结果进行调整和优化。

Wazuh Agent

Wazuh Agent是Wazuh安全监控平台的核心组件之一,它能够在多种操作系统上运行,包括但不限于Linux、Windows、macOS、Solaris、AIX等。

Wazuh Agent的主要职责是保护系统免受威胁,提供预防、检测和响应能力。它通过监控系统的关键组件和应用程序,实时收集安全相关的数据,并将这些数据通过加密和认证的方式传输到Wazuh服务器。这些数据包括但不限于系统日志、文件完整性校验、网络流量、进程活动等,为后续的安全分析和威胁检测提供了丰富的数据源。

Agent 架构

Wazuh Agent采用了模块化的架构设计,这种设计使得每个组件都专注于执行自己的特定任务。这种分工合作的方式不仅提高了Agent的灵活性和可扩展性,还使得其能够高效地处理各种安全监控任务。

以下是Wazuh Agent中各个模块的不同用途和功能的详细介绍

日志收集器(Log Collector):

这个模块负责读取和操作系统以及应用程序的日志文件,包括平面日志文件和Windows事件。

它支持对Windows事件的XPath过滤器,并识别如Linux审计日志等多行格式。

该模块还可以为JSON事件添加额外的元数据,以便进行更丰富的分析和处理。
命令执行(Command Execution):

Agents会定期执行授权的命令,并收集这些命令的输出结果,然后将结果报告回Wazuh服务器进行进一步分析。

这个模块可以用于多种目的,比如监控剩余硬盘空间、获取最近登录用户的列表等。
文件完整性监控(File Integrity Monitoring, FIM):

该模块监控文件系统,报告文件的创建、删除或修改情况。

它跟踪文件属性、权限、所有权和内容的变化,并在事件发生时实时捕获谁、什么、何时等详细信息。

FIM模块还构建和维护一个包含受监控文件状态的数据库,允许远程执行查询。
安全配置评估(Security Configuration Assessment, SCA):

这个组件提供持续的配置评估,使用基于互联网安全中心(Center of Internet Security, CIS)基准的现成检查。

用户还可以创建自己的SCA检查来监控和执行他们的安全策略。
系统库存(System Inventory):

这个Agent模块定期运行扫描,收集如操作系统版本、网络接口、运行进程、已安装应用程序和开放端口列表等库存数据。

扫描结果被存储在本地SQLite数据库中,这些数据库可以被远程查询。
恶意软件检测(Malware Detection):

此组件采用非签名基方法,能够检测系统中的异常以及可能存在的rootkit。在监控系统调用时,它还会查找隐藏进程、隐藏文件和隐藏端口。这种方法使得它能够识别出与正常系统行为不符的恶意活动,从而提供对潜在威胁的及时警报。

主动响应(Active Response):

当检测到威胁时,此模块会自动执行一系列操作,如阻断网络连接、停止运行中的进程或删除恶意文件等。用户还可以根据需要创建自定义响应,例如将二进制文件运行在沙箱环境中、捕获网络流量、使用杀毒软件扫描文件等。这种主动响应机制增强了系统的安全防御能力,能够迅速应对各种安全威胁。

容器安全监控(Container Security Monitoring):

此Agent模块与Docker Engine API集成,用于监控容器化环境中的变化。它能够检测到容器镜像、网络配置或数据卷等方面的更改,并及时发出警报。此外,它还会警告用户关于以特权模式运行的容器以及用户在运行中的容器内执行命令的情况,帮助用户保持对容器环境的全面掌控。

云安全监控(Cloud Security Monitoring):

此组件专门用于监控云提供商(如Amazon Web Services、Microsoft Azure或Google GCP)的环境。它通过与这些云服务的API进行原生通信,能够检测到云基础设施的变化(如新用户创建、安全组修改、云实例停止等),并收集云服务日志数据(如AWS CloudTrail、AWS Macie、AWS GuardDuty、Azure Active Directory等)。这种全面的监控能力有助于用户及时发现并解决云环境中的安全问题,确保云资源的安全性和合规性。

Wazuh 架构

Wazuh 的架构基于运行在被监控端点上的代理,这些代理将安全数据转发到中央服务器。此外,Wazuh 还支持无代理设备(如防火墙、交换机、路由器和接入点),这些设备可以通过 Syslog、SSH 或使用其 API 主动提交日志数据。

中央服务器负责解码和分析接收到的信息,并将结果传递给 Wazuh 索引器进行索引和存储。Wazuh 索引器集群由一个或多个节点组成,这些节点相互通信以执行对索引的读写操作。

  • 小型部署:对于不需要处理大量数据的小型 Wazuh 部署,可以轻松地通过单个节点集群来处理。
  • 大型部署:当存在大量被监控端点、预期有大量数据或需要高可用性时,建议使用多节点集群。

对于生产环境,建议将 Wazuh 服务器和 Wazuh 索引器部署到不同的主机上。在这种场景下,Filebeat 被用来通过 TLS 加密安全地将 Wazuh 警报和归档事件转发到 Wazuh 索引器集群(无论是单节点还是多节点)。

以下是一个 Wazuh 部署架构的示意图,展示了解决方案的组件以及 Wazuh 服务器和 Wazuh 索引器节点如何配置为集群,以提供负载均衡和高可用性:

[被监控端点]  
   │  
   ├───[Wazuh 代理]───┬────[Wazuh 服务器]───┬───[Filebeat]───┬───[Wazuh 索引器集群]  
   │   (转发安全数据)│    (解码/分析)  │    (TLS加密转发) │   (索引/存储)  
   ├───[无代理设备]───(Syslog/SSH/API)───┘  
   │  
   ...  
   │  
   └───[其他被监控端点]  
  
[Wazuh 索引器集群]  
   ├───[节点 1]  
   ├───[节点 2]  
   └───[节点 ...]

在这个架构中,Wazuh 代理安装在每个被监控的端点上,负责收集安全相关的数据,并将这些数据发送到 Wazuh 服务器。无代理设备则通过 Syslog、SSH 或 API 直接发送日志数据到 Wazuh 服务器。Wazuh 服务器对接收到的数据进行解码和分析,然后利用 Filebeat 将警报和归档事件安全地转发到 Wazuh 索引器集群进行索引和存储。索引器集群可以是一个或多个节点,根据需求进行扩展,以提供高可用性和负载均衡。

Wazuh Agent 与 Wazuh Server 的通信

Wazuh代理与Wazuh服务器进行通信,以发送收集到的数据和与安全相关的事件。此外,代理还会发送操作数据,报告其配置和状态。一旦连接成功,Wazuh服务器就可以远程升级、监控和配置代理。

代理与服务器之间的通信通过安全通道(TCP或UDP)进行,实时提供数据加密和压缩功能。这种通信机制还包含了流量控制机制,以避免网络拥塞,在必要时对事件进行排队,并保护网络带宽。

在首次将代理连接到服务器之前,需要进行注册(或称为"入会")过程。此过程为代理提供一个唯一的密钥,用于身份验证和数据加密。这样,代理和服务器之间的通信就能够确保安全,防止未授权访问和数据泄露。

Wazuh Server 与 Wazuh Indexer 的通信

Wazuh 服务器利用 Filebeat 将警报和事件数据发送到 Wazuh 索引器,这一过程中使用了 TLS 加密以确保数据传输的安全性。Filebeat 读取 Wazuh 服务器的输出数据,并将其发送到 Wazuh 索引器(默认监听 TCP 端口 9200)。一旦数据被 Wazuh 索引器索引,就可以通过 Wazuh 仪表板来挖掘和可视化这些信息。

Wazuh 仪表板通过查询 Wazuh RESTful API(默认在 Wazuh 服务器上监听 TCP 端口 55000)来显示 Wazuh 服务器和代理的配置及状态相关信息。此外,它还支持通过 API 调用来修改代理或服务器的配置设置。这种通信也是通过 TLS 加密的,并使用用户名和密码进行身份验证,以确保通信的安全性。

通过这种架构,Wazuh 提供了一个灵活且安全的系统,用于收集、分析和可视化来自多个被监控端点的安全数据。无论是实时警报还是历史数据,都可以通过 Wazuh 仪表板进行方便的查询和可视化,从而帮助安全团队更好地理解和应对潜在的安全威胁。

组件 端口 协议 用途
Wazuh 服务器 1514 TCP (默认) 代理连接服务,用于接收来自Wazuh代理的事件和警报数据
Wazuh 服务器 1514 UDP (可选,默认禁用) 代理连接服务(UDP协议,通常不推荐使用,因为UDP不保证数据完整性)
Wazuh 服务器 1515 TCP 代理注册服务,用于新代理的注册和配置
Wazuh 服务器 1516 TCP Wazuh集群守护进程,用于Wazuh服务器之间的集群通信
Wazuh 服务器 514 UDP (默认禁用) Wazuh Syslog收集器,用于接收Syslog数据(需要启用)
Wazuh 服务器 514 TCP (可选,默认禁用) Wazuh Syslog收集器(TCP协议,需要启用)
Wazuh 服务器 55000 TCP Wazuh服务器RESTful API,用于配置查询、状态监控等
Wazuh 索引器 9200 TCP Wazuh索引器RESTful API,用于与索引器进行交互和数据查询
Wazuh 索引器 9300-9400 TCP Wazuh索引器集群通信,用于索引器节点之间的通信和数据同步
Wazuh 仪表板 443 TCP Wazuh Web用户界面,提供HTTPS访问,用于展示数据、配置监控等

数据存储

在Wazuh系统中,除了将警报和非警报事件发送到Wazuh索引器外,这些事件还会被存储在Wazuh服务器上的文件中。这些文件可以以JSON格式(.json)或纯文本格式(.log)进行存储,并且每天都会被压缩并使用MD5、SHA1和SHA256校验和进行签名,以确保数据的完整性和安全性。

root@wazuh-manager:/var/ossec/logs/archives/2024/Jan# ls -l  
total 176  
-rw-r----- 1 wazuh wazuh 234350 Jan  2 00:00 ossec-archive-01.json.gz  
-rw-r----- 1 wazuh wazuh    350 Jan  2 00:00 ossec-archive-01.json.sum  
-rw-r----- 1 wazuh wazuh 176221 Jan  2 00:00 ossec-archive-01.log.gz  
-rw-r----- 1 wazuh wazuh    346 Jan  2 00:00 ossec-archive-01.log.sum  
...
这里,ossec-archive-XX.json.gz 和 ossec-archive-XX.log.gz 是压缩后的JSON和日志文件,而 ossec-archive-XX.json.sum 和 ossec-archive-XX.log.sum 是对应的校验和文件。

文件轮换和备份

根据Wazuh服务器的存储容量,建议对归档文件进行轮换。可以使用cron作业来管理服务器上本地存储的归档文件的时间窗口。

仅依赖Wazuh索引器进行归档存储

另一种选择是不存储归档文件,而是完全依赖Wazuh索引器进行归档。这在定期备份Wazuh索引器快照,或者拥有一个具有分片副本的高可用性多节点Wazuh索引器集群时可能更受欢迎。

索引器快照备份:你可以定期备份Wazuh索引器的快照,并将其存储在安全的位置。

使用cron作业移动快照:你还可以使用cron作业将快照索引移动到最终数据存储服务器,并使用MD5、SHA1和SHA256哈希对其进行签名,以确保数据的完整性和安全性。

相关推荐
liuxin334455663 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
007php0074 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时4 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
djykkkkkk4 小时前
ubuntu编译遇到的问题
linux·运维·ubuntu
LinkTime_Cloud4 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
qq_429856574 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
我要学编程(ಥ_ಥ)5 小时前
初始JavaEE篇 —— 网络原理---传输层协议:深入理解UDP/TCP
java·网络·tcp/ip·udp·java-ee
就爱学编程5 小时前
重生之我在异世界学编程之C语言:数据在内存中的存储篇(下)
java·服务器·c语言
Smile丶凉轩5 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木5 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器