上一篇只是安装好了 Wazuh 主动式的端点安全解决方案,现在只有一个端点 无法连接,也无法收集信息,自然是不完整的,需要再次准备一台试验机,依旧选择 ubuntu24.4 ,同系统,同网段,应该很好理解为什么吧
接下里就是一些简单的准备工作了
先确保是互通的,Agent 必须要连接上 Manager 才能工作,主要是走两个核心端口
1514/tcp Agent向 Manager 上报数据 例如事件/日志
1515/tcp Agent 注册,申请或者 Client.keys

测试端口

为了防止软件包被人篡改,所以都会需要密钥校对,先把公钥导入到本地,才能让 APT正常验证
sudo mkdir -p /usr/share/keyrings
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --dearmor -o /usr/share/keyrings/wazuh.gpg

检查一下是否有公钥了

告诉 APT 去哪里下载软件包,然后更新一下就行

这里带上了一个 WAZUH 的变量,这是让 Agent 帮你自动填写 IP ,就不需要后续在去手动修改配置文件了

检查一下 IP 是否被正常写入 没有写入也没有关系,写进去就好
#检查 IP 是否正常传递
sudo cat /var/ossec/etc/ossec.conf | grep -A 2 "<server>"
#没有的话 重新写入替换一下
sudo sed -i 's/<address>MANAGER_IP<\/address>/<address>172.16.11.35<\/address>/' /var/ossec/etc/ossec.conf

启动 Agent 服务

这里有个问题 因为我是在 PVE 上跑的虚拟机 两台虚拟机的名字都是一样的,导致 Agent 要去注册的时候,重名导致失败,一定要记得改一下名字,然后在重新注册一下就可以了
重启服务,触发重新注册
sudo systemctl restart wazuh-agent
sudo grep "wazuh-agentd" /var/ossec/logs/ossec.log | tail -10

登录上去看看 可以发现在多了一台活跃主机,点击进去

可以看到 IP 已经识别 并且系统ubuntu 版本等信息都可以正确的识别到了

那么就从上篇到这篇 我们已经完整的尝试了全流程,踩的最大的坑是什么,是主机名,主机名不能一致,一致会导致无法注册,从而报错
我准备测试一下 ,结果一测试没有任何的警告信息,开始查看问题所在
嚯嚯嚯,说实话还不如不看 全是问题 但是没有办法 自己的孩子自己疼 还是要修好的
修复开始
首先是我在 客户端创建了一个文件夹 ,但 Events 和 Dashboard 完全空白,没有任何告警。
第一步:确认 FIM 检测是否真的在工作
在 Agent(172.16.11.88)上:
# 查看 syscheckd 的运行日志
sudo grep -i "syscheck\|fim" /var/ossec/logs/ossec.log | tail -20
发现:FIM 扫描正常运行,扫描完成后显示 FIM sync module started,说明检测本身没问题。
第二步:在 Manager 上检查 alerts.log
SSH 到 Manager(172.16.11.35):
ssh yxwa@172.16.11.35
sudo tail -100 /var/ossec/logs/alerts/alerts.log | grep -A5 "syscheck\|554\|550"
发现:alerts.log 里只有 sudo 审计告警(rule 5402),完全没有 syscheck 告警。说明 FIM 告警没有产生,或产生了但没被记录。
第三步:启用 realtime监控排除周期扫描问
原因:Wazuh 4.x 的 FIM 默认12小时扫描一次,且重启后的初始扫描只更新数据库,不产生告警。需要启用 realtime 模式,让文件变更立即触发告警。
在 Agent 上:
# 查看当前 FIM 配置(确认原始内容)
sudo grep -n "directories" /var/ossec/etc/ossec.conf
# 修改:给 /etc 目录加上 realtime="yes",其他目录单独一行保留
sudo sed -i '109s|<directories>/etc,/usr/bin,/usr/sbin</directories>|<directories realtime="yes">/etc</directories>\n <directories>/usr/bin,/usr/sbin</directories>|' /var/ossec/etc/ossec.conf
# 验证修改
sudo grep -A2 "realtime" /var/ossec/etc/ossec.conf
# 重启 Agent
sudo systemctl restart wazuh-agent
# 确认 realtime 已启动
sudo grep "realtime" /var/ossec/logs/ossec.log
# 应看到:Directory set for real time monitoring: '/etc'
第四步:验证 realtime 后仍无告警 → 检查规则配置
在 Agent 上创建测试文件:
sudo touch /etc/realtime-test.txt
在 Manager 上等待后检查 alerts.log,发现:
- sudo 执行记录出现了(说明 Agent 在发数据)
- FIM 告警依然没有
检查 FIM 规则是否被禁用:
# 在 Manager 上查找 FIM 规则文件
sudo find /var/ossec -name "0015-ossec_rules.xml" | head -5
# 查看 FIM 规则的告警级别
sudo grep -A8 "rule id=\"55[0-4]" /var/ossec/ruleset/rules/0015-ossec_rules.xml | head -40
发现:
- rule 554(文件新增):level 5
- rule 550(文件修改):level 7
- rule 553(文件删除):level 7
同时检查 Manager 的最低告警级别:
sudo grep "log_alert_level" /var/ossec/etc/ossec.conf
# 输出:<log_alert_level>3</log_alert_level>
结论:规则级别都≥ 3,不是被过滤掉了。
第五步:确认 archives.log 也为空→ 找到真正断点
# archives.log 记录所有事件(包括低于告警级别的)
sudo tail -200 /var/ossec/logs/archives/archives.log | grep syscheck
发现:archives.log 里完全没有 syscheck 记录。这说明 FIM 数据根本没有进入 Manager 的事件处理管道。
但 realtime 测试(创建文件后)在 alerts.log 里确实出现了 FIM 告警:
sudo tail -50 /var/ossec/logs/alerts/alerts.log | grep -A10 "realtime-test"
# 输出:Rule: 554 (level 5) -> 'File added to the system.' Mode: realtime
这证明 FIM 告警能写进 alerts.log,但没有出现在 Dashboard。问题在 alerts.log → OpenSearch 这一段。
第六步:检查 OpenSearch 索引 → 发现根本原因
# 查看 OpenSearch 里有哪些索引
sudo curl -XGET "https://localhost:9200/_cat/indices/wazuh-alerts*?v" -u admin:admin -k
发现:只有表头,没有任何 wazuh-alerts-* 索引。告警写进了文件,但没有任何组件把它推送到 OpenSearch。
第七步:修复 indexer-connector 连接
检查 Manager 日志:
sudo grep -i "indexer" /var/ossec/logs/ossec.log | tail -20
# 输出:WARNING: Failed to sync agent '001': No available server
查看 indexer 配置:
sudo sed -n '/<indexer>/,/<\/indexer>/p' /var/ossec/etc/ossec.conf
发现两个问题:
- 地址是
https://0.0.0.0:9200(监听地址,不是连接目标) - SSL 证书路径
/etc/filebeat/certs/不存在
修复步骤:
# 备份配置
sudo cp /var/ossec/etc/ossec.conf /var/ossec/etc/ossec.conf.backup
# 检查 indexer 证书的SAN,确认正确 IP
sudo openssl x509 -in /etc/wazuh-indexer/certs/indexer.pem -text -noout | grep -A3 "Subject Alternative"
# 输出:IP Address:172.16.11.35
# 测试用正确 IP 连接
sudo curl -XGET "https://172.16.11.35:9200" \
--cert /etc/wazuh-indexer/certs/admin.pem \
--key /etc/wazuh-indexer/certs/admin-key.pem \
--cacert /etc/wazuh-indexer/certs/root-ca.pem
# 输出 OpenSearch 版本信息 = 连接成功
# 复制证书到 Manager 可读位置
sudo mkdir -p /var/ossec/etc/indexer-certs
sudo cp /etc/wazuh-indexer/certs/root-ca.pem /var/ossec/etc/indexer-certs/
sudo cp /etc/wazuh-indexer/certs/admin.pem /var/ossec/etc/indexer-certs/
sudo cp /etc/wazuh-indexer/certs/admin-key.pem /var/ossec/etc/indexer-certs/
sudo chown -R wazuh:wazuh /var/ossec/etc/indexer-certs/
# 修复 ossec.conf:改正确 IP
sudo sed -i 's|https://0.0.0.0:9200|https://172.16.11.35:9200|' /var/ossec/etc/ossec.conf
# 替换 SSL 证书路径(用 python3 处理多行块)
sudo python3 -c "
import re
with open('/var/ossec/etc/ossec.conf', 'r') as f:
content = f.read()
content = re.sub(r'\s*<ssl>.*?</ssl>', '''<ssl>
<certificate_authorities>
<ca>/var/ossec/etc/indexer-certs/root-ca.pem</ca>
</certificate_authorities>
<certificate>/var/ossec/etc/indexer-certs/admin.pem</certificate>
<key>/var/ossec/etc/indexer-certs/admin-key.pem</key>
</ssl>''', content, flags=re.DOTALL)
with open('/var/ossec/etc/ossec.conf', 'w') as f:
f.write(content)
print('Done')
"
# 写入 OpenSearch 认证凭据到 Manager keystore
sudo /var/ossec/bin/wazuh-keystore -f indexer -k username -v admin
sudo /var/ossec/bin/wazuh-keystore -f indexer -k password -v admin
# 重启 Manager
sudo systemctl restart wazuh-manager
# 等待后验证(应看到 initialized successfully)
sleep 20
sudo grep -i "indexer" /var/ossec/logs/ossec.log | tail -10
成功标志:IndexerConnector initialized successfully for index: wazuh-states-*
第八步:发现 Filebeat 缺失
indexer-connector 连接成功,但查询 wazuh-alerts 索引仍然为空:
sudo curl -s "https://172.16.11.35:9200/_cat/indices/wazuh-alerts*?v&h=index,health,docs.count" \
--cert /var/ossec/etc/indexer-certs/admin.pem \
--key /var/ossec/etc/indexer-certs/admin-key.pem \
--cacert /var/ossec/etc/indexer-certs/root-ca.pem
# 只有表头,无索引
检查 Filebeat:
sudo systemctl status filebeat
# Unit filebeat.service could not be found.
dpkg -l | grep filebeat
# 空,未安装
根本原因确认:Filebeat 从未安装过。 它是把 alerts.json 推送到 OpenSearch 的唯一管道,apt-get install wazuh-manager 不会自动安装它。
第九步:安装 Filebeat
注意:必须用 7.x,Filebeat 8.x 与 OpenSearch 7.10.2 不兼容(API 版本检查失败)。
# 添加 Elastic apt源
curl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/elasticsearch-keyring.gpg --import
sudo chmod 644 /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update
# 安装 7.10.2(Wazuh 的apt 源里有这个版本会优先使用)
sudo apt-get install -y filebeat=7.10.2
第十步:配置 Filebeat
# 创建证书目录
sudo mkdir -p /etc/filebeat/certs
sudo cp /etc/wazuh-indexer/certs/root-ca.pem /etc/filebeat/certs/
sudo cp /etc/wazuh-indexer/certs/admin.pem /etc/filebeat/certs/
sudo cp /etc/wazuh-indexer/certs/admin-key.pem /etc/filebeat/certs/
# 下载 Wazuh 索引模板
sudo curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.14.6/extensions/elasticsearch/7.x/wazuh-template.json
# 安装 Wazuh Filebeat 模块
sudo curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz | sudo tar -xvz -C /usr/share/filebeat/module
# 写入配置文件
sudo tee /etc/filebeat/filebeat.yml > /dev/null << 'EOF'
output.elasticsearch:
hosts: ["https://172.16.11.35:9200"]
protocol: https
username: "admin"
password: "admin"
ssl.certificate_authorities: ["/etc/filebeat/certs/root-ca.pem"]
ssl.certificate: "/etc/filebeat/certs/admin.pem"
ssl.key: "/etc/filebeat/certs/admin-key.pem"
filebeat.modules:
- module: wazuh
alerts:
enabled: true
archives:
enabled: false
setup.template.json.enabled: true
setup.template.json.path: '/etc/filebeat/wazuh-template.json'
setup.template.json.name: 'wazuh'
setup.template.overwrite: true
setup.ilm.enabled: false
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0644
EOF
# 测试配置和连接
sudo filebeat test config# 应输出:Config OK
sudo filebeat test output# 应输出:talk to server... OK / version: 7.10.2
# 启动 Filebeat
sudo systemctl enable filebeat
sudo systemctl start filebeat
sudo systemctl status filebeat
第十一步:验证
# 确认 wazuh-alerts 索引已创建
sudo curl -s "https://172.16.11.35:9200/_cat/indices/wazuh-alerts*?v&h=index,health,docs.count" \
--cert /etc/filebeat/certs/admin.pem \
--key /etc/filebeat/certs/admin-key.pem \
--cacert /etc/filebeat/certs/root-ca.pem
# 应看到:wazuh-alerts-4.x-2026.07.24 green 400+
在 Agent 上创建测试文件:
ssh yxwa@172.16.11.88
sudo touch /etc/realtime-final-$(date +%s).txt
10秒后在 Dashboard Threat Hunting 搜索 rule.groups:syscheck,FIM 告警正常显示。

Comments | NOTHING