Wazuh-开源安全平台

举报
kaliarch 发表于 2023/10/21 10:14:39 2023/10/21
【摘要】 一 简介 1.1 Wazuh简介Wazuh 是一个免费的开源平台,用于威胁预防、检测和响应。它能够跨场所、虚拟化、容器化和基于云的环境保护工作负载。解决方案包括一个部署到被监控系统的终端安全代理和一个收集和分析代理收集的数据的管理服务器。此外,Wazuh 已经与 Elastic Stack 完全集成,提供了一个搜索引擎和数据可视化工具,允许用户通过他们的安全警报进行导航。 1.2 能力简要...

一 简介

1.1 Wazuh简介

Wazuh 是一个免费的开源平台,用于威胁预防、检测和响应。它能够跨场所、虚拟化、容器化和基于云的环境保护工作负载。解决方案包括一个部署到被监控系统的终端安全代理和一个收集和分析代理收集的数据的管理服务器。此外,Wazuh 已经与 Elastic Stack 完全集成,提供了一个搜索引擎和数据可视化工具,允许用户通过他们的安全警报进行导航。

1.2 能力

简要介绍 Wazuh 解决方案的一些更常见的用例。

1.2.1 入侵检测

Wazuh 代理扫描被监控的系统,寻找恶意软件,rootkit 和可疑的异常。它们可以检测隐藏文件、隐藏进程或未注册的网络侦听器,以及系统调用响应中的不一致。

除了代理功能之外,服务器组件还使用基于特征的入侵检测方法,使用其正则表达式引擎来分析收集的日志数据并寻找危害的指标。

1.2.2 日志数据分析

Wazuh 代理读取操作系统和应用程序日志,并安全地将它们转发给中央管理器,以便进行基于规则的分析和存储。当没有部署代理时,服务器还可以通过 syslog 从网络设备或应用程序接收数据。

Wazuh 规则帮助您了解应用程序或系统错误、错误配置、企图和/或成功的恶意活动、违反政策以及各种其他安全和操作问题。

1.2.3 完整性检查

Wazuh 监视文件系统,识别需要密切关注的文件的内容、权限、所有权和属性的更改。此外,它本机识别用于创建或修改文件的用户和应用程序。

完整性检查能力可以与威胁情报结合使用来识别威胁或被入侵的主机。此外,一些美国守规标准,如 PCI DSS,要求它。

1.2.4 漏洞检测

Wazuh 代理提取软件清单数据,并将这些信息发送到服务器,在服务器上与不断更新的 CVE (Common vulnerability and Exposure)数据库相关联,以识别众所周知的脆弱软件。

自动的漏洞评估可以帮助您找到关键资产中的弱点,并在攻击者利用它们破坏您的业务或窃取机密数据之前采取纠正措施。

1.2.5 配置评估

Wazuh 监视系统和应用程序配置设置,以确保它们符合您的安全策略、标准和/或加强指南。代理执行定期扫描,以检测已知存在漏洞、未打补丁或配置不安全的应用程序。

此外,可以自定义配置检查,对其进行裁剪以适当地与您的组织保持一致。警报包括更好的配置建议,参考信息和与守规地图的映射。

1.2.6 事故应变

Wazuh 提供开箱即用的主动响应,以执行各种应对主动威胁的对策,例如在满足某些标准时阻止从威胁来源访问系统。

此外,Wazuh 还可用于远程运行命令或系统查询,识别危险指标(IOCs) ,并帮助执行其他实时取证或事件响应任务。

1.2.7 合规

Wazuh 提供了一些必要的安全控制,以符合行业标准和规定。这些特性,结合其可伸缩性和多平台支持,可以帮助组织满足技术遵从性需求。

Wazuh 广泛应用于支付处理公司和金融机构,以满足 PCI DSS (支付卡行业数据安全标准)的要求。它的 web 用户界面提供了报告和仪表板,可以帮助解决这个和其他规则(例如 GPG13或 GDPR)。

1.2.8 云安全

通过使用集成模块从著名的云服务提供商那里获取安全数据,例如 Amazon AWS、 Azure 或 Google Cloud,Wazuh 帮助在 API 级别上监控云基础设施。此外,Wazuh 还提供了评估云环境配置的规则,可以很容易地发现弱点。

此外,Wazuh 轻量级和多平台代理通常用于实例级监视云环境。

1.2.9 容器安全

Wazuh 提供对 Docker 主机和容器的安全可见性,监视它们的行为并检测威胁、漏洞和异常。Wazuh 代理与 Docker 引擎本地集成,允许用户监视图像、卷、网络设置和运行中的容器。

不断收集和分析详细的运行时信息。例如,为以特权模式运行的容器、易受攻击的应用程序、在容器中运行的 shell、对持久卷或映像的更改以及其他可能的威胁发出警报。

二 wazuh架构及组件

Wazuh 平台提供了保护云、容器和服务器工作负载的特性。这些技术包括日志数据分析、入侵和恶意软件检测、完整性检查安全、配置评估、漏洞检测以及对守规安全的支持。Wazuh 解决方案基于以下三个组成部分:

总体组件架构

2.1 Wazuh Agent

Wazuh 代理运行在 Linux、Windows、macOS、Solaris、AIX 和其他操作系统上。它可以部署到笔记本电脑、台式机、服务器、云实例、容器或虚拟机。它提供威胁预防、检测和响应功能。它还用于收集不同类型的系统和应用程序数据,并通过加密和身份验证的通道将这些数据转发到 Wazuh 服务器

2.1.1 Agent架构

这个 Wazuh 代理有一个模块化的架构,不同的组件负责自己的任务: 监控文件系统,读取日志消息,收集库存数据,扫描系统配置,寻找恶意软件等等。用户可以通过配置设置启用或禁用代理模块,根据自己的特定用例调整解决方案。

2.1.2 Agent模块

  • 日志收集器: 这个代理组件可以读取平面日志文件和 Windows 事件,收集操作系统和应用程序日志消息。它确实支持 Windows 事件的 XPath 过滤器,并识别多行格式(例如 Linux 审计日志)。它还可以使用额外的元数据来丰富 JSON 事件。

  • 命令执行: 代理可以定期运行授权命令,收集它们的输出并将其报告给 Wazuh 服务器,以便进一步分析。这个模块可以用于不同的目的(例如监控剩余的硬盘空间,获取最近登录的用户列表等)。

  • 文件完整性监控:这个模块监视文件系统,报告文件创建、删除或修改的完整性检查。它跟踪文件属性、权限、所有权和内容。当一个事件发生时,它会实时捕捉人物、内容和时间细节。此外,该模块构建并维护一个带有被监视文件状态的数据库,从而允许远程运行查询。

  • 安全配置评估(SCA) : 该组件提供持续的配置评估,利用基于 Internet 安全中心(CIS)基准的开箱即用检查。用户还可以创建自己的 SCA 检查,以监视和执行其安全策略。

  • 系统库存: 这个代理模块定期运行扫描,收集库存数据,例如操作系统版本、网络接口、运行进程、已安装的应用程序和打开的端口列表。扫描结果存储在本地 SQLite 数据库中,可以进行远程查询。

  • 恶意软件检测: 使用非签名为基础的方法,这个组件是能够检测异常和可能存在的 rootkit。监视系统调用,它查找隐藏进程、隐藏文件和隐藏端口。

  • 主动响应: 该模块在检测到威胁时自动运行动作。其中,它可以阻止网络连接、停止正在运行的进程或删除恶意文件。用户也可以在必要时创建自定义响应(例如在沙盒中运行二进制文件、捕获网络连接流量、用防病毒软件扫描文件等)。

  • 容器安全监视: 这个代理模块与 Docker 引擎 API 集成,以便监视容器化环境中的更改。例如,它检测容器图像、网络配置或数据卷的更改。此外,它还会警告以特权模式运行的容器和正在运行的容器中执行命令的用户。

  • 云安全监视: 这个组件监视云提供商,比如 Amazon AWS、 Microsoft Azure 或 Google GCP。它与它们的 api 进行本机通信。它能够检测云基础设施的更改(例如创建新用户、修改安全组、停止云实例等) ,并收集云服务日志数据(例如 AWS Cloudtrail、 AWS Macie、 AWS GuardDuty、 Azure Active Directory 等)

2.2 Wazuh Server

Wazuh 服务器组件负责分析从代理程序接收的数据,当检测到威胁或异常时触发警报。它还用于远程管理代理配置并监视其状态。Wazuh 服务器使用威胁情报来源来提高其检测能力。它还利用了守规需求(例如 PCI DSS,HIPAA,NIST 800-53…)和 Mitre att & ck 框架来丰富警报数据,提供围绕它们的有用上下文。此外,Wazuh 服务器可以集成外部软件,如票务系统(如 Service Now,Jira,PagerDuty)和即时通讯/服务平台(如 Slack)。这可以方便地简化安全操作。

2.2.1 Wazuh Server架构

Wazuh 服务器运行分析引擎、Wazuh RESTful API、代理注册服务、代理连接服务、Wazuh 集群守护进程和 Filebeat。下图表示服务器架构和组件:

2.2.2 Wazuh Server组件

服务器通常在独立的物理机器、虚拟机、 docker 容器或云实例上运行。它安装在 Linux 操作系统上。下面是主要服务器组件的列表:

  • 代理注册服务: 它通过提供和分发每个代理所独有的预共享身份验证密钥来注册新的代理。此过程作为网络服务运行,并支持通过 TLS/SSL 证书或提供固定密码进行身份验证。

  • 代理连接服务: 这是从代理接收数据的服务。它使用预共享密钥来验证每个代理标识,并加密代理和 Wazuh 服务器之间的通信。此外,这项服务还可以提供集中式的代理组态管理,可以远程推送新的代理设置。

  • 分析引擎: 这是执行数据分析的过程。它利用解码器识别正在处理的信息类型(例如 Windows 事件、 SSHD 日志、 web 服务器日志等) ,并从日志消息中提取相关数据元素(例如源用户名 IP 地址、事件 ID、等等)。接下来,通过使用规则,它识别解码事件中的特定模式,这些模式可能触发警报,甚至可能调用自动对策(例如防火墙上的 IP 禁止)。

  • Wazuh restfulapi: 这个服务提供了一个与 Wazuh 基础设施交互的接口。它用于管理代理和服务器配置设置、监视基础设施状态和总体健康状况、管理和编辑 Wazuh 解码器和规则,以及查询被监视端点的状态。它也被 Wazuh 网络用户界面使用,这是 Kibana 应用程序。

  • Wazuh 集群守护进程: 此服务用于水平伸缩 Wazuh 服务器,将它们部署为集群。这种配置与网络负载均衡器相结合,提供了高可用性和负载均衡。Wazuh 集群守护进程是 Wazuh 服务器用来相互通信和保持同步的。

  • Filebeat: 用于向 Elasticsearch 发送事件和警报。它实时读取 Wazuh 分析引擎的输出并发布事件。当连接到多节点 Elasticsearch 集群时,它还提供负载平衡。弹性堆栈

2.3 Elastic Stack

弹性堆栈: 它索引和存储 Wazuh 服务器生成的警报。此外,Wazuh 和 Kibana 的整合为数据可视化和分析提供了强大的用户界面。此接口还用于管理 Wazuh 配置并监视其状态。

除了基于代理的监控功能外,Wazuh 平台还可以监控无代理的设备,如防火墙、交换机、路由器或网络 IDS 等。例如,可以通过 Syslog 收集系统日志数据,并通过定期探测其数据(例如通过 SSH 或通过 API)监视其配置。

Elastic Stack 是一套用于日志管理的流行开源项目的统一套件,包括 Elasticsearch、Kibana、Filebeat 等。与 Wazuh 解决方案特别相关的项目是:

  • Filebeat: 一个轻量级的转发器,用于通过网络传送日志,通常是传送到 Elasticsearch。它被用在 Wazuh 服务器上将事件和警报发送到 Elasticsearch。它读取 Wazuh 分析引擎的输出,并通过加密通道实时发送事件。当连接到多节点 Elasticsearch 集群时,它还提供负载平衡。
  • Elasticsearch: 一个高度可扩展的全文搜索和分析引擎。Elasticsearch 是分布式的,这意味着数据索引被划分为碎片,每个碎片可以有零个或多个副本。Wazuh 对警报数据、原始事件和状态监视信息使用不同的索引。
  • 一个灵活和直观的 web 界面,用于挖掘、分析和可视化数据。它在 Elasticsearch 集群中的索引内容之上运行。网络用户界面已经以插件的形式完全嵌入 Kibana。它包括用于安全事件的开箱即用的指示板,守规,检测易受攻击的应用程序,完整性检查数据,配置评估结果,云基础设施监控事件等等。

Wazuh 集成了 Elastic Stack,提供了一个由 Elasticsearch 索引的已解码消息的提要,以及一个用于警报和日志数据分析的实时 web 控制台。此外,在 Kibana 上运行的 Wazuh 用户界面用于管理和监控 Wazuh 基础设施。

  • Wazuh-alerts: Wazuh 服务器生成的警报索引。每当事件超过具有足够高优先级的规则时(此阈值是可配置的) ,就会创建这些选项。

  • Wazuh-events: 从代理接收的所有事件(存档数据)的索引,不管它们是否触发了规则。

  • Wazuh-monitoring: 随着时间的推移,与 Wazuh 代理状态有关的数据索引。它是由网络界面用来表示当个别代理处于或已经处于活动状态、断开连接或从未连接。

Elasticsearch 索引被划分为一个或多个分片,每个分片可以有选择地拥有一个或多个副本。每个主碎片和副本碎片都是一个单独的 Lucene 索引。因此,一个 Elasticsearch 索引由许多 Lucene 索引组成。当在 Elasticsearch 索引上运行搜索时,将对所有分片并行执行搜索,并合并结果。将 Elasticsearch 索引划分为多个碎片和副本在多节点 Elasticsearch 集群中使用,目的是扩展搜索和高可用性。单节点 Elasticsearch 集群通常每个索引只有一个分片,没有副本。服务器/架构

三 安装

3.1 自动安装

curl -so ~/all-in-one-installation.sh https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/unattended-installation/all-in-one-installation.sh && bash ~/all-in-one-installation.sh

# 配置javahome

3.2 分步安装

3.2.1 先决条件

yum install zip unzip curl -y

3.2.2 安装Elasticsearch

# 更新yum源
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

cat > /etc/yum.repos.d/elastic.repo << EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

# 安装es
yum install elasticsearch-7.11.2 -y

# 下载es配置文件
curl -so /etc/elasticsearch/elasticsearch.yml https://packages.wazuh.com/resources/4.2/elastic-stack/elasticsearch/7.x/elasticsearch_all_in_one.yml


# 下载证书配置文件
curl -so /usr/share/elasticsearch/instances.yml https://packages.wazuh.com/resources/4.2/elastic-stack/instances_aio.yml

# 使用证书生成工具生成证书
/usr/share/elasticsearch/bin/elasticsearch-certutil cert ca --pem --in instances.yml --keep-ca-key --out ~/certs.zip
# 解压证书
unzip ~/certs.zip -d ~/certs

# 创建证书
mkdir /etc/elasticsearch/certs/ca -p
cp -R ~/certs/ca/ ~/certs/elasticsearch/* /etc/elasticsearch/certs/
chown -R elasticsearch: /etc/elasticsearch/certs
chmod -R 500 /etc/elasticsearch/certs
chmod 400 /etc/elasticsearch/certs/ca/ca.* /etc/elasticsearch/certs/elasticsearch.*
rm -rf ~/certs/ ~/certs.zip

# 启动es
systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

# 生成es密码,需要记录密码一备后用
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto



# 检测es服务
curl -XGET https://localhost:9200 -u elastic:<elastic_password> -k

记录生成密码

[root@VM-1-53-centos ~]# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = wVNSqXihSZ9g3S5ZyPUW

Changed password for user kibana_system
PASSWORD kibana_system = qLYEofiWdqthaZCZqQfq

Changed password for user kibana
PASSWORD kibana = qLYEofiWdqthaZCZqQfq

Changed password for user logstash_system
PASSWORD logstash_system = 7lQxxcQ4WIPthMXE5UXj

Changed password for user beats_system
PASSWORD beats_system = WoK75HGfU7sVH52hUwW5

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = kjF1u3wLzRqSr6pZJb1X

Changed password for user elastic
PASSWORD elastic = R8QSKDoyXUTRy81K50ix

3.2.3 安装Wazuh server

# 配置yum源
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH

cat > /etc/yum.repos.d/wazuh.repo << EOF
[wazuh]
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=EL-$releasever - Wazuh
baseurl=https://packages.wazuh.com/4.x/yum/
protect=1
EOF

# 安装软件
yum install wazuh-manager -y

# 启动
systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager

# 查看服务状态
systemctl status wazuh-manager

3.2.4 安装Filebeat

yum install filebeat-7.11.2 -y

# 下载配置文件
curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/resources/4.2/elastic-stack/filebeat/7.x/filebeat_all_in_one.yml

# 下载es告警模版
curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.2/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json

# 下载wazuh filebeat模版
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.1.tar.gz | tar -xvz -C /usr/share/filebeat/module

编辑 /etc/filebeat/filebeat.yml,填写es正确密码。

# 复制es证书到filebeat
cp -r /etc/elasticsearch/certs/ca/ /etc/filebeat/certs/
cp /etc/elasticsearch/certs/elasticsearch.crt /etc/filebeat/certs/filebeat.crt
cp /etc/elasticsearch/certs/elasticsearch.key /etc/filebeat/certs/filebeat.key

# 启动filebeat服务
systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat

# 进行测试
filebeat test output

3.2.5 安装kibana

yum install kibana-7.11.2 -y


mkdir /etc/kibana/certs/ca -p
cp -R /etc/elasticsearch/certs/ca/ /etc/kibana/certs/
cp /etc/elasticsearch/certs/elasticsearch.key /etc/kibana/certs/kibana.key
cp /etc/elasticsearch/certs/elasticsearch.crt /etc/kibana/certs/kibana.crt
chown -R kibana:kibana /etc/kibana/
chmod -R 500 /etc/kibana/certs
chmod 440 /etc/kibana/certs/ca/ca.* /etc/kibana/certs/kibana.*


# 下载kibana配置文件
curl -so /etc/kibana/kibana.yml https://packages.wazuh.com/resources/4.2/elastic-stack/kibana/7.x/kibana_all_in_one.yml

编辑 /etc/kibana/kibana.yml,填写es正确密码。

# 创建kiban数据目录
mkdir /usr/share/kibana/data
chown -R kibana:kibana /usr/share/kibana

# 安装kibana wazuh 插件
cd /usr/share/kibana
sudo -u kibana /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/4.x/ui/kibana/wazuh_kibana-4.2.0_7.11.2-1.zip

# 将 Kibana 的套接字链接到特权端口 443:
setcap 'cap_net_bind_service=+ep' /usr/share/kibana/node/bin/node

# 启动服务
systemctl daemon-reload
systemctl enable kibana
systemctl start kibana

四 使用

4.1 页面访问

URL: https://<wazuh_server_ip>
user: elastic
password: <PASSWORD_elastic>

  • 查看es数据
curl -k -u elastic:R8QSKDoyXUTRy81K50ix https://localhost:9200/_cluster/
curl -k -u elastic:R8QSKDoyXUTRy81K50ix https://localhost:9200/_cat/indices

4.2 Agent安装

sudo WAZUH_MANAGER='localhost' WAZUH_AGENT_GROUP='default' yum install https://packages.wazuh.com/4.x/yum/wazuh-agent-4.2.0-1.x86_64.rpm -y

sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

参考链接

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。