wazuh文档学习:搭建实践

简介

根据官网,Wazuh是一个免费的开源安全平台,它统一了XDR和SIEM的功能。它可以保护本地、虚拟化、容器化和基于云的环境中的工作负载。

Wazuh由多种开源项目组成,可以替代商业的XDR和SIEM解决方案。它可以保护从传统数据中心到公有云在内的多种环境。

Wazuh解决方案由一个通用代理和三个核心组件组成:Wazuh服务器,Wazuh索引器和Wazuh控制面板。

组件

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

  • Wazuh索引器是一个高度可扩展的全文搜索和分析引擎。这个核心组件索引和存储由Wazuh服务器生成的警报。
  • Wazuh服务器分析从代理收到的数据。它通过解码器和规则处理数据,使用威胁情报查找已知的渗透指标(IOCs)。单个服务器可以分析数百或数千个代理的数据,并在设置为集群时水平扩展。这个核心组件也用于管理代理,在必要时远程配置和升级它们。
  • Wazuh控制面板是用于数据可视化和分析的Web用户界面。它内置了安全事件、法规合规(如PCI DSS、GDPR、CIS、HIPAA、NIST 800-53)、检测到的易受攻击的应用程序、文件完整性监控数据、配置评估结果、云基础架构监控事件等的控制面板。它也用于管理Wazuh配置和监控其状态。
  • Wazuh代理安装在端点上,如笔记本电脑、台式机、服务器、云实例或虚拟机。它们提供威胁防范、检测和响应能力。它们运行在诸如Linux、Windows、macOS、Solaris、AIX和HP-UX之类的操作系统上。

下图表示 Wazuh 组件和数据流。

架构

Wazuh基于在被监控端点上运行的代理,这些代理将安全数据转发到中央服务器。无代理设备如防火墙、交换机、路由器和接入点也受支持,可以通过Syslog、SSH或使用其API主动提交日志数据。中央服务器解码和分析传入的信息,并将结果传递给Wazuh索引器进行索引和存储。

Wazuh索引器集群是一组一个或多个节点的集合,这些节点相互通信以对索引执行读写操作。不需要处理大量数据的小型Wazuh部署可以轻松地由单节点集群处理。当有许多监控端点时,当预计有大量的数据量时,或者当需要高可用性时,建议使用多节点集群。

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

下图是Wazuh部署架构。它显示了解决方案的组件以及如何将Wazuh服务器和Wazuh索引器节点配置为集群,从而提供负载平衡和高可用性。

Wazuh代理与Wazuh服务器之间的通信

Wazuh代理持续地将事件发送到Wazuh服务器进行分析和威胁检测。为开始传输这些数据,代理与服务器上的代理连接服务建立连接,默认监听在1514端口上(这可以配置)。然后Wazuh服务器使用分析引擎解码并用规则检查接收到的事件。触发规则的事件会被添加警报数据,如规则ID和规则名称。事件可以根据是否触发了规则被缓存到下列一个或两个文件中:

/var/ossec/logs/archives/archives.json包含所有事件,无论是否触发了规则。
/var/ossec/logs/alerts/alerts.json仅包含优先级足够高的触发了规则的事件(阈值可以配置)。
Wazuh消息协议默认使用128 bits per block 和256-bit keys.的AES加密。也可选用Blowfish加密。

Wazuh服务器与Wazuh索引器之间的通信

Wazuh服务器使用Filebeat通过TLS加密将警报和事件数据发送到Wazuh索引器。Filebeat读取Wazuh服务器的输出数据并将其发送到Wazuh索引器(默认监听在9200/TCP端口)。一旦数据被Wazuh索引器索引,Wazuh控制面板用于挖掘和可视化信息。

Wazuh控制面板查询Wazuh RESTful API(默认在Wazuh服务器的55000/TCP端口上监听)来显示Wazuh服务器和代理的配置和状态相关信息。它还可以通过API调用修改代理或服务器配置设置。此通信使用TLS加密,并使用用户名和密码进行认证。

下面是Wazuh组件的默认端口

Archival data storage

警报和非警报事件除了被发送到Wazuh索引器,也存储在Wazuh服务器上的文件中。这些文件可以以JSON格式(.json)或纯文本格式(.log)编写。这些文件使用MD5、SHA1和SHA256校验和每天压缩和签名。目录和文件名结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@wazuh-manager:/var/ossec/logs/archives/2022/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
-rw-r----- 1 wazuh wazuh 224320 Jan 2 00:00 ossec-archive-02.json.gz
-rw-r----- 1 wazuh wazuh 350 Jan 2 00:00 ossec-archive-02.json.sum
-rw-r----- 1 wazuh wazuh 151642 Jan 2 00:00 ossec-archive-02.log.gz
-rw-r----- 1 wazuh wazuh 346 Jan 2 00:00 ossec-archive-02.log.sum
-rw-r----- 1 wazuh wazuh 315251 Jan 2 00:00 ossec-archive-03.json.gz
-rw-r----- 1 wazuh wazuh 350 Jan 2 00:00 ossec-archive-03.json.sum
-rw-r----- 1 wazuh wazuh 156296 Jan 2 00:00 ossec-archive-03.log.gz
-rw-r----- 1 wazuh wazuh 346 Jan 2 00:00 ossec-archive-03.log.sum

根据Wazuh服务器的存储容量,建议轮换和备份存档文件。通过使用cron作业,您可以轻松管理仅在服务器上本地保留存档文件的特定时间窗口,例如过去一年或过去三个月。(应该是通过cron定期删除过去一年或者过去三个月的文件)

也可以选择不存储存档文件,而只需依靠 Wazuh 索引器进行存档存储。

如果您定期运行Wazuh索引器快照备份和/或拥有用于高可用性的分片副本的多节点Wazuh索引器集群,则此替代方案可能更可取。

您甚至可以使用cron作业将快照索引移动到最终的数据存储服务器并使用MD5、SHA1和SHA256哈希算法对其进行签名。

安装Wazuh管理端

注:下面以Ubuntu 20.04为例

下载并运行 Wazuh 安装助手

1
curl -sO https://packages.wazuh.com/4.6/wazuh-install.sh && sudo bash ./wazuh-install.sh -a

注意:假如不能连接GitHub,可以将https://raw.githubusercontent.com/wazuh/wazuh/${source_branch}/extensions/elasticsearch/7.x/wazuh-template.json提前下载到自己服务器,再修改脚本的地址

下面表示安装成功

1
2
3
4
5
INFO: --- Summary ---
INFO: You can access the web interface https://<wazuh-dashboard-ip>
User: admin
Password: <ADMIN_PASSWORD>
INFO: Installation finished.

可以在wazuh-install-files.tar中的wazuh-passwords.txt文件中找到所有Wazuh索引器和Wazuh API用户的密码。要打印它们,请运行以下命令:

1
sudo tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt

安装agent代理

linux

安装了服务端登录,点击添加agent,就会给出命令

1
wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.6.0-1_amd64.deb && sudo WAZUH_MANAGER='192.168.X.X' dpkg -i ./wazuh-agent_4.6.0-1_amd64.deb

启动agent服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

windows

powershell管理员运行

1
2
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.6.0-1.msi -OutFile ${env.tmp}\wazuh-agent; msiexec.exe /i ${env.tmp}\wazuh-agent /q WAZUH_MANAGER='192.168.X.X' WAZUH_AGENT_NAME='FuzzManager' WAZUH_REGISTRATION_SERVER='192.168.X.X' 
NET START WazuhSvc

参考

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

打赏专区