AI入侵检测配置:从零搭建日志监控与告警规则
AI入侵检测配置的核心是让系统自动分析日志并识别异常行为。
本文以开源工具 Wazuh 为例,在 Ubuntu 22.04 上完成安装、登录、自定义告警规则和验证,适合零基础用户照做。
环境准备与安装前检查
先确认服务器满足最低要求:2 核 CPU、4GB 内存、20GB 磁盘,并已安装 curl 和 gnupg。
执行以下命令检查:
free -h
df -h /
curl --version
如果内存不足 4GB,Wazuh 索引器可能启动失败,建议先升级配置。
安装采用官方一键脚本,需要 root 权限:
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh
bash wazuh-install.sh -a -i
参数 -a 表示安装所有组件,-i 表示忽略硬件检查。
安装完成后终端会输出管理员账号和密码,务必立即保存。
登录后台并确认基础服务
安装成功后,在浏览器访问 https://你的服务器IP,使用上一步输出的账号密码登录。
首次登录会看到安全事件概览面板。
如果页面打不开,先在服务器上检查服务状态:
systemctl status wazuh-manager
systemctl status wazuh-indexer
systemctl status wazuh-dashboard
三个服务都应为 active (running)。
若 dashboard 启动失败,通常是内存不足或端口 443 被占用,用 ss -tlnp | grep 443 查看占用进程。
登录后进入“Security events”模块,确认能看到默认的规则触发记录。
没有记录时,可以手动触发一条测试日志:
echo "test login failure" | logger -t sshd
然后在面板中搜索 sshd,应能看到对应事件。
编写自定义告警规则
Wazuh 的检测规则存放在 /var/ossec/etc/rules/ 目录。
新建一个自定义规则文件:
sudo nano /var/ossec/etc/rules/local_rules.xml
写入以下规则,用于检测短时间内多次 SSH 登录失败:
5710
SSH登录失败超过5次,疑似暴力破解
T1110
规则 ID 必须大于 100000 且不与现有规则冲突。if_matched_sid 引用系统自带的 SSH 失败规则 5710。
保存后重启管理器使规则生效:
sudo systemctl restart wazuh-manager
重启后查看日志确认规则加载成功:
tail -f /var/ossec/logs/ossec.log | grep -i rule
常见配置错误与避坑
新手最容易在规则文件上出错。
XML 格式必须严格闭合,标签不匹配会导致管理器启动失败。
修改前先备份原文件:
sudo cp /var/ossec/etc/rules/local_rules.xml /var/ossec/etc/rules/local_rules.xml.bak
如果重启后管理器无法启动,用 journalctl -u wazuh-manager -n 50 查看具体错误行。
另一个常见问题是防火墙未放行端口,导致 agent 无法上报日志。
需要放行 1514 和 1515 端口:
sudo ufw allow 1514/tcp
sudo ufw allow 1515/tcp
注意不要直接关闭防火墙来“解决”连接问题,只放行必需端口。
验证告警是否生效
在另一台测试机上连续执行 5 次错误的 SSH 登录,或者在本机用循环模拟:
for i in {1..6}; do ssh wronguser@127.0.0.1; done
然后回到 Wazuh 面板,在 Security events 中搜索规则 ID 100200,应能看到告警记录,级别为 10。
如果没出现,检查两点:
- 确认
local_rules.xml中规则 ID 未被其他规则覆盖; - 确认
if_matched_sid对应的基础规则确实产生了事件,可以先用grep 5710 /var/ossec/logs/alerts/alerts.log查看。
告警正常触发后,可根据业务调整 frequency 和 timeframe 的值,避免误报。
日常维护建议
规则上线后,每周检查一次告警日志,确认是否有大量重复误报。
误报多时优先调整阈值,而不是直接关闭规则。
同时保持 Wazuh 版本更新,升级前先备份 /var/ossec/etc 目录。
如果后续需要接入更多服务器,在每台机器安装 agent 并在管理端添加节点即可,具体步骤可参考官方文档的 agent 注册部分。