一、前言
1.1 文档用途
本文针对全国技能大赛网络安全项目中 “隔离网络环境下 Wazuh 部署” 场景,提供Wazuh 4.7.5 版本单节点离线部署全流程。适配大赛标准 Amazon Linux 2023 操作系统,解决无网络环境下的依赖安装、组件部署及通信加密问题,既可用于比赛场景复现,也可作为日常运维实践参考。
1.2 环境说明
| 项目 | 配置详情 |
|---|---|
| 复现平台 | 天枢一体化虚拟仿真靶场平台 |
| 操作系统 | Amazon Linux 2023(x86_64 架构) |
| Wazuh 版本 | 4.7.5 |
| 部署模式 | 单节点离线部署 |
| 核心依赖 | curl(替换系统默认 curl-minimal) |
1.3 组件作用说明
| 组件名称 | 核心功能 |
|---|---|
| Wazuh Indexer | 基于 OpenSearch 构建,负责日志数据的存储、检索与索引管理 |
| Wazuh Manager | 核心管理组件,接收 Agent 上报数据、执行规则匹配、生成安全告警、管理 Agent |
| Filebeat | 日志转发组件,将 Wazuh Manager 产生的告警日志同步至 Indexer 进行存储 |
| Wazuh Dashboard | 可视化管理界面,支持告警查看、规则配置、Agent 监控、安全报表生成 |
二、前置准备
2.1 权限要求
必须使用root用户或具备sudo权限的账号执行所有操作,避免因权限不足导致文件创建、服务启动失败。 验证权限:执行whoami,输出root即满足要求;若为普通用户,需执行su - root切换至 root。
2.2 依赖冲突处理
Amazon Linux 2023 默认安装的curl-minimal与 Wazuh 下载脚本依赖的完整curl冲突,需先替换依赖包:
替换curl-minimal为curl
dnf swap curl-minimal curl
- 验证替换结果:执行curl --version查看是否替换成功
三、在线下载离线资源(有网络环境执行)
若比赛环境无网络,需提前在有网络的相同系统环境中下载以下资源,再通过 U 盘、移动硬盘等介质拷贝至目标服务器。
3.1 下载 Wazuh 安装脚本与离线包
#1. 下载Wazuh安装助手脚本
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh
# 2. 赋予脚本执行权限(744:所有者可执行,其他用户只读)
chmod 744 wazuh-install.sh
# 3. 下载离线安装包(-dw rpm:指定下载RPM格式包,适配Linux系统)
./wazuh-install.sh -dw rpm
- 下载结果:离线包存储于wazuh-offline/目录,包含所有组件的 RPM 安装包)。
3.2 下载证书工具与配置模板
# 1. 下载节点配置模板(用于生成SSL证书)
curl -sO https://packages.wazuh.com/4.7/config.yml
# 2. 下载证书生成脚本
curl -sO https://packages.wazuh.com/4.7/wazuh-certs-tool.sh
# 3. 赋予证书脚本执行权限
chmod 744 wazuh-certs-tool.sh
四、离线部署 Wazuh(无网络环境执行)
4.1 配置文件修改(适配单节点)
修改config.yml文件将“indexer-node-ip”、“wazuh-manager-ip”、“dashboard-node-ip”替换为127.0.0.1,然后执行证书安装脚本。
# 编辑配置文件
cat config.yml
修改后完整配置如下(注释多余节点,仅保留单节点配置):
nodes:
# Wazuh Indexer节点配置
indexer:
- name: node-1
ip: 127.0.0.1
# Wazuh Manager节点配置
server:
- name: wazuh-1
ip: 127.0.0.1
# Wazuh Dashboard节点配置
dashboard:
- name: dashboard
ip: 127.0.0.1
- 注意:节点名称(name字段)需与后续证书部署时的环境变量完全一致,不可随意修改。
4.2 生成 SSL 证书(组件通信加密)
Wazuh 组件间通信需通过 SSL 证书加密,避免数据泄露,执行以下命令生成证书:
# --all参数:生成所有组件(Indexer、Manager、Dashboard、Admin)的证书
./wazuh-certs-tool.sh --all |
- 执行结果:生成wazuh-certificates/目录,包含以下关键证书文件:
18/11/2025 07:46:31 INFO: Admin certificates created.
18/11/2025 07:46:31 INFO: Wazuh indexer certificates created.
18/11/2025 07:46:31 INFO: Wazuh server certificates created.
18/11/2025 07:46:32 INFO: Wazuh dashboard certificates created.
4.3 解压离线安装包
# 解压离线包至当前目录(-xvf:显示解压过程,保留文件属性)
tar -xvf wazuh-offline.tar.gz
解压后生成wazuh-offline/目录,包含两个子目录:
- wazuh-packages/:Wazuh Indexer、Manager、Dashboard、Filebeat 的 RPM 安装包。
- wazuh-files/:GPG 密钥(验证安装包完整性)、Filebeat 配置文件、索引模板等。
4.4 安装 Wazuh Indexer(日志存储组件)
4.4.1 导入 GPG 密钥(验证安装包合法性)
# 导入Wazuh官方GPG密钥,确保安装包未被篡改
rpm --import ./wazuh-offline/wazuh-files/GPG-KEY-WAZUH |
4.4.2 安装 RPM 包
# 安装Indexer(*.rpm匹配所有Indexer安装包)
rpm -ivh ./wazuh-offline/wazuh-packages/wazuh-indexer*.rpm
- 成功标志:输出1:wazuh-indexer-4.7.5-1 ##############################[100%],无报错信息。
4.4.3 部署 SSL 证书
# 1. 声明环境变量(与config.yml中Indexer节点名称一致:node-1)
NODE_NAME=node-1
# 2. 创建Indexer证书目录
mkdir /etc/wazuh-indexer/certs
# 3. 移动Indexer节点证书至指定目录
mv -n wazuh-certificates/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem
mv -n wazuh-certificates/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
# 4. 移动管理员证书与根证书(用于Indexer安全配置)
mv wazuh-certificates/admin-key.pem /etc/wazuh-indexer/certs/
mv wazuh-certificates/admin.pem /etc/wazuh-indexer/certs/
cp wazuh-certificates/root-ca.pem /etc/wazuh-indexer/certs/
# 5. 设置证书权限(最小权限原则:仅所有者可读写)
chmod 500 /etc/wazuh-indexer/certs # 目录:所有者可进入,其他用户不可访问
chmod 400 /etc/wazuh-indexer/certs/* # 文件:仅所有者可读
chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs # 归属Indexer用户组
4.4.4 启动并验证 Indexer
# 1. 重新加载系统服务配置(让systemd识别新安装的服务)
systemctl daemon-reload
# 2. 设置Indexer开机自启(避免服务器重启后需手动启动)
systemctl enable wazuh-indexer
# 3. 启动Indexer服务
systemctl start wazuh-indexer
# 4. 查看服务状态(确保Active: active (running))
systemctl status wazuh-indexer
4.4.5 初始化 Indexer 安全配置
# 执行安全初始化脚本,配置Indexer集群认证、角色权限等
/usr/share/wazuh-indexer/bin/indexer-security-init.sh
- 成功标志:输出Done with success,表示 Indexer 安全配置初始化完成。
4.4.6 验证 Indexer 服务可用性
# 通过API验证Indexer是否正常运行(默认账号:admin,密码:admin)
# -k:忽略SSL证书验证(自签名证书);-u:指定认证账号密码
curl -XGET https://localhost:9200 -u admin:admin -k
4.5 安装 Wazuh Manager(核心管理组件)
4.5.1 安装 RPM 包
# 安装Manager(*.rpm匹配所有Manager安装包)
rpm --import ./wazuh-offline/wazuh-files/GPG-KEY-WAZUH
rpm -ivh ./wazuh-offline/wazuh-packages/wazuh-manager*.rpm
4.5.2 启动并验证 Manager
# 1. 重新加载系统服务配置
systemctl daemon-reload
# 2. 设置Manager开机自启
systemctl enable wazuh-manager
# 3. 启动Manager服务
systemctl start wazuh-manager
# 4. 查看服务状态(确保所有子进程正常运行,如wazuh-apid、wazuh-analysisd)
systemctl status wazuh-manager
4.6 安装 Filebeat(日志转发组件)
4.6.1 安装 RPM 包
# 安装Filebeat(*.rpm匹配所有Filebeat安装包)
rpm -ivh ./wazuh-offline/wazuh-packages/filebeat*.rpm
4.6.2 拷贝配置文件与模板
# 1. 拷贝Filebeat主配置文件(覆盖默认配置)
cp ./wazuh-offline/wazuh-files/filebeat.yml /etc/filebeat/
# 2. 拷贝Indexer索引模板(定义日志存储结构)
cp ./wazuh-offline/wazuh-files/wazuh-template.json /etc/filebeat/
# 3. 赋予模板文件读取权限(其他用户可读取,确保Filebeat能加载)
chmod go+r /etc/filebeat/wazuh-template.json
4.6.3 调整索引分片配置(适配单节点)
单节点部署时,需将索引分片数从默认的 3 改为 1(多分片在单节点下会导致资源浪费):
# 编辑索引模板文件
vi /etc/filebeat/wazuh-template.json
找到"index.number_of_shards"字段,修改为 1:
"settings": {
"index.refresh_interval": "5s",
"index.number_of_shards": "1", # 改为1(原默认3)
"index.number_of_replicas": "0",
...
}
- 保存退出:按Esc,输入:wq,回车保存。
4.6.4 配置 Filebeat 密钥库(存储认证信息)
为避免明文存储 Indexer 的账号密码,通过 Filebeat 密钥库管理认证信息:
# 1. 创建Filebeat密钥库(若已存在,会提示覆盖)
filebeat keystore create
# 2. 添加Indexer用户名(admin)至密钥库(--stdin:从标准输入读取,避免明文显示)
echo admin | filebeat keystore add username --stdin --force
# 3. 添加Indexer密码(admin)至密钥库
echo admin | filebeat keystore add password --stdin --force
- 验证密钥库:执行filebeat keystore list,输出username和password即配置成功。
4.6.5 安装 Wazuh Filebeat 模块
# 解压Wazuh Filebeat模块至Filebeat模块目录(/usr/share/filebeat/module)
tar -xzf ./wazuh-offline/wazuh-files/wazuh-filebeat-0.3.tar.gz -C /usr/share/filebeat/module
- 模块作用:提供 Wazuh 日志的专用解析规则,确保日志格式与 Indexer 兼容。
4.6.6 部署 SSL 证书
# 1. 声明环境变量(与config.yml中Manager节点名称一致:wazuh-1)
NODE_NAME=wazuh-1
# 2. 创建Filebeat证书目录
mkdir /etc/filebeat/certs
# 3. 移动Filebeat证书至指定目录
mv -n wazuh-certificates/$NODE_NAME.pem /etc/filebeat/certs/filebeat.pem
mv -n wazuh-certificates/$NODE_NAME-key.pem /etc/filebeat/certs/filebeat-key.pem
# 4. 拷贝根证书(用于验证Indexer证书合法性)
cp wazuh-certificates/root-ca.pem /etc/filebeat/certs/
# 5. 设置证书权限
chmod 500 /etc/filebeat/certs
chmod 400 /etc/filebeat/certs/*
chown -R root:root /etc/filebeat/certs # Filebeat运行用户为root,归属root用户组
4.6.7 启动并验证 Filebeat
# 1. 重新加载系统服务配置
systemctl daemon-reload
# 2. 设置Filebeat开机自启
systemctl enable filebeat
# 3. 启动Filebeat服务
systemctl start filebeat
# 4. 查看服务状态
systemctl status filebeat
# 5. 验证Filebeat与Indexer连接(确保输出"talk to server... OK")
filebeat test output
4.7 安装 Wazuh Dashboard(可视化界面)
4.7.1 安装 RPM 包
# 导入GPG密钥(若已导入可跳过)
rpm --import ./wazuh-offline/wazuh-files/GPG-KEY-WAZUH
# 安装Dashboard(*.rpm匹配所有Dashboard安装包)
rpm -ivh ./wazuh-offline/wazuh-packages/wazuh-dashboard*.rpm
4.7.2 部署 SSL 证书
# 1. 声明环境变量(与config.yml中Dashboard节点名称一致:dashboard)
NODE_NAME=dashboard
# 2. 创建Dashboard证书目录
mkdir /etc/wazuh-dashboard/certs
# 3. 移动Dashboard证书至指定目录
mv -n wazuh-certificates/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem
mv -n wazuh-certificates/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem
# 4. 拷贝根证书
cp wazuh-certificates/root-ca.pem /etc/wazuh-dashboard/certs/
# 5. 设置证书权限(归属Dashboard用户组)
chmod 500 /etc/wazuh-dashboard/certs
chmod 400 /etc/wazuh-dashboard/certs/*
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs
4.7.3 启动并验证 Dashboard
systemctl daemon-reload
# 2. 设置Dashboard开机自启
systemctl enable wazuh-dashboard
# 3. 启动Dashboard服务
systemctl start wazuh-dashboard
# 4. 查看服务状态(确保Active: active (running))
systemctl status wazuh-dashboard
4.8 修改默认密码(安全加固)
Wazuh 默认管理员账号密码为admin:admin,安全性较低,需立即修改:
# 1. 进入Indexer密码工具目录
cd /usr/share/wazuh-indexer/plugins/opensearch-security/tools/
# 2. 执行密码修改脚本(-u:指定用户名,-p:指定新密码)
# 新密码示例:Skills123.(需满足复杂度:8位以上,含大小写、数字、特殊符号)
./wazuh-passwords-tool.sh -u admin -p Skills123.
# 3. 重启Filebeat和Dashboard,使新密码生效
systemctl restart filebeat wazuh-dashboard
- 注意:新密码需牢记,若遗忘需重新执行脚本重置。
五、部署验证与访问
5.1 访问 Wazuh Dashboard
- 访问地址:打开浏览器,输入https://服务器IP(示例:https://10.0.8.2,服务器 IP 需替换为实际部署的 IP)。
- 证书提示处理:因使用自签名证书,浏览器会提示 “不安全”,点击 “高级”→“继续访问”(生产环境需替换为 CA 签发的可信证书)。
- 登录认证:用户名:admin 密码:修改后的密码(示例:Skills123.)
5.2 验证部署成功
登录 Dashboard 后,确认以下状态即部署成功: