使用 Wazuh Syscheck 和 Whodata 监控 Linux 关键文件完整性
Wazuh Syscheck 监控关键 Linux 文件(如 /etc/passwd、/etc/shadow、/etc/sudoers 和 /etc/ssh/sshd_config)的变更。Whodata 模式通过 auditd 捕获变更的用户和进程。此配置可集中应用于 Linux 代理组,生成 12 级警报。
Wazuh 架构与 Syscheck 作用
Wazuh 由事件处理的管理器、主机上的代理以及基于 Kibana 的仪表板组成。Syscheck 可定时或实时扫描文件,验证哈希、权限和所有权。在 whodata 模式下,它与 auditd 集成以归因变更。
主要特性:
- 每 300 秒周期性扫描。
- 发送变更差异。
- 检测目录中新文件。
- 排除临时文件以减少噪音。
准备代理
在 linux 组的所有 Linux 代理上安装 auditd。
针对 RHEL 类系统:
sudo dnf install audit audispd-plugins -y
sudo systemctl enable --now auditd
针对 Debian/Ubuntu:
sudo apt install auditd audispd-plugins -y
sudo systemctl enable --now auditd
检查状态:sudo auditctl -l。
验证 linux 组是否存在:ls -la /var/ossec/etc/shared/。如果缺失,在 UI 中创建。
集中式 agent.conf 配置
在管理器上编辑 /var/ossec/etc/shared/linux/agent.conf:
<agent_config>
<syscheck>
<frequency>300</frequency>
<whodata>yes</whodata>
<diff>yes</diff>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/passwd</directories>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/shadow</directories>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/sudoers</directories>
<directories check_all="yes" whodata="yes" report_changes="yes">/etc/ssh/sshd_config</directories>
<ignore>/etc/passwd-</ignore>
<ignore>/etc/shadow-</ignore>
<ignore>/etc/sudoers.tmp</ignore>
<ignore>/etc/.pwd.lock</ignore>
<alert_new_files>yes</alert_new_files>
<scan_on_start>yes</scan_on_start>
<auto_ignore>no</auto_ignore>
</syscheck>
</agent_config>
重启:sudo systemctl restart wazuh-manager。
关键参数:
check_all="yes"— 完整属性检查。whodata="yes"— 通过 auditd 归因。report_changes="yes"— 警报中包含差异。alert_new_files="yes"— 新文件警报。
高优先级警报规则
添加到 /var/ossec/etc/rules/local_rules.xml:
<group name="syscheck,">
<rule id="100100" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/passwd</field>
<description>严重变更:/etc/passwd 被修改</description>
<mitre>
<id>T1078</id>
<id>T1136</id>
</mitre>
</rule>
<rule id="100101" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/shadow</field>
<description>严重变更:/etc/shadow 被修改(密码文件)</description>
<mitre>
<id>T1003</id>
<id>T1078</id>
</mitre>
</rule>
<rule id="100102" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/sudoers</field>
<description>严重变更:/etc/sudoers 被修改</description>
<mitre>
<id>T1078</id>
<id>T1548</id>
</mitre>
</rule>
<rule id="100104" level="12">
<if_sid>550</if_sid>
<field name="file">/etc/ssh/sshd_config</field>
<description>严重变更:/etc/ssh/sshd_config 被修改</description>
<mitre>
<id>T1078</id>
<id>T1548</id>
</mitre>
</rule>
<rule id="100103" level="10">
<if_sid>554</if_sid>
<field name="file">/etc/passwd</field>
<field name="file">/etc/shadow</field>
<field name="file">/etc/sudoers</field>
<options>alert_by_email</options>
<description>用户修改关键文件:$(file) - $(audit.user.name)</description>
<mitre>
<id>T1078</id>
</mitre>
</rule>
</group>
重启管理器。规则基于 if_sid 550(文件变更)触发,优先级 12 级。
测试配置
在代理上验证:sudo cat /var/ossec/etc/shared/agent.conf | grep -A5 "syscheck"。
模拟变更:
sudo cp /etc/passwd /etc/passwd.backup.test
echo "testuser:x:9999:9999:Test User:/home/testuser:/bin/bash" | sudo tee -a /etc/passwd
警报将显示 JSON,包括 rule.level=12、syscheck.path、audit.user.name(root)、process.name(tee)和差异。
恢复:sudo cp /etc/passwd.backup.test /etc/passwd && sudo rm /etc/passwd.backup.test。
关键要点
- Syscheck 结合 whodata 通过 auditd 追踪变更发起者。
- linux 组集中配置减少手动操作。
- /etc/passwd、/etc/shadow 等文件的 12 级规则带 MITRE 标签。
- 警报中包含差异和归因,便于取证。
- 排除临时文件降低误报。
扩展监控
扩展至 /etc/hosts.allow、nginx/apache 配置、SSH 密钥。添加主动响应阻断,并集成外部通知系统。
— Editorial Team
暂无评论。