本文目录导读:

主机入侵检测系统(HIDS)的配置是一个综合性的过程,涉及代理安装、规则定义、日志收集、告警配置和响应机制,最常用的开源HIDS是 OSSEC 和 Wazuh(Wazuh是OSSEC的增强分支),商业方案有CrowdStrike、SentinelOne等。
以下以 Wazuh(推荐) 和 OSSEC 为例,提供详细的配置步骤和核心配置项说明。
第一阶段:基础架构规划
在配置前,需要明确架构:
- Server端:负责收集日志、分析告警、管理规则(需要较高的CPU和内存,建议4C8G以上)。
- Agent端:部署在每台需要监控的服务器上(Windows/Linux/macOS)。
- 通信方式:通常使用加密通信(预共享密钥或证书)。
第二阶段:配置 Wazuh(现代推荐方案)
Wazuh 提供了开箱即用的功能,配置相对友好,且拥有强大的规则引擎和仪表板。
安装和管理端(Manager)
在管理服务器上安装 Wazuh Manager 和 Wazuh Indexer(可选,用于存储和可视化)。
# 官方一键安装脚本(CentOS/RHEL/Ubuntu) curl -s https://packages.wazuh.com/4.x/wazuh-install.sh | sudo bash # 安装完成后,记录自动生成的 admin 密码和 agent 注册密码
安装并注册 Agent(被监控主机)
在每台需要监控的服务器上执行:
# 安装 Agent WAZUH_MANAGER="你的管理端IP" yum install wazuh-agent # 或使用官方一键脚本(推荐) curl -s https://packages.wazuh.com/4.x/wazuh-agent.sh | sudo bash -s -- -m 管理端IP -A 注册密码 # 启动并设置开机自启 systemctl restart wazuh-agent systemctl enable wazuh-agent
核心配置项(/var/ossec/etc/ossec.conf)
这是决定 HIDS 能力的关键文件,主要修改以下部分:
- 文件完整性监控(FIM):监控关键目录的变更。
<syscheck> <directories check_all="yes" realtime="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes" whodata="yes">/var/www/html</directories> <!-- who-data 可以记录谁修改的 --> <ignore>/etc/mtab</ignore> <!-- 忽略动态变化文件 --> <scan_on_start>yes</scan_on_start> </syscheck> - 日志分析(Log Analysis):指定监控哪些日志源。
<localfile> <location>/var/log/auth.log</location> <!-- Linux SSH 登录日志 --> <log_format>syslog</log_format> </localfile> <localfile> <location>/var/log/secure</location> <!-- RHEL/CentOS 安全日志 --> <log_format>syslog</log_format> </localfile> <localfile> <location>/var/log/messages</location> <log_format>syslog</log_format> </localfile> <!-- Windows 事件日志 --> <localfile> <location>Security</location> <log_format>eventchannel</log_format> </localfile> - 命令监控(Command Monitoring):执行自定义脚本。
<wodle name="command"> <disabled>no</disabled> <tag>check_ports</tag> <command>ss -tuln</command> <interval>1h</interval> </wodle> - 主动响应(Active Response):自动封禁IP等操作(谨慎使用)。
<active-response> <disabled>no</disabled> <command>firewall-drop</command> <!-- 默认有 iptables/systemctl 命令 --> <location>local</location> <level>10</level> <rules_id>5710</rules_id> <!-- 只对特定规则触发,如SSH暴力破解 --> </active-response>
规则配置(决定告警质量)
- 位置:
/var/ossec/ruleset/rules/ - 自定义规则:不要直接修改系统规则,应创建
/var/ossec/etc/rules/local_rules.xml。 - 示例:自定义一个规则,监控“root用户登录”并设置告警级别为10。
<group name="local_syslog,"> <rule id="100001" level="10"> <decoded_as>syslog</decoded_as> <field name="program_name">^sudo$</field> <match>COMMAND=/bin/su -</match> <description>Root elevation detected via su</description> </rule> </group> - 调整规则级别:
level 0-3:信息level 4-6:警告level 7-9:严重(需要关注)level 10-12:紧急(可能入侵成功)level 13-15:严重安全事件
日志与告警查看
- 服务端日志:
/var/ossec/logs/ossec.log - 代理端日志:
/var/ossec/logs/ossec.log - 告警日志:
/var/ossec/logs/alerts/alerts.json(适合接入SIEM或Elasticsearch)
第三阶段:配置 OSSEC(经典方案)
对于需要轻量化、高稳定性的场景,OSSEC 仍是不错的选择。
安装服务端
wget -U ossec https://github.com/ossec/ossec-hids/archive/3.6.0.tar.gz tar -zxf ossec-hids-3.6.0.tar.gz cd ossec-hids-3.6.0 ./install.sh
安装过程中选择 server 模式,并配置邮件告警(可选)。
安装并注册 Agent
# 在服务端生成密钥 /var/ossec/bin/ossec-authd # 在被监控主机安装 agent,并运行 /var/ossec/bin/ossec-agent-authd -m 服务端IP service ossec restart
核心配置(/var/ossec/etc/ossec.conf)
- :与Wazuh非常相似,只是少了
wodle和inventory等高级模块。 - 文件监控:
<syscheck> <frequency>3600</frequency> <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes">/root</directories> </syscheck> - 主动响应:OSSEC 的
active-response配置语法与Wazuh一致,但支持的命令较少。
规则自定义
- 存放位置:
/var/ossec/rules/local_rules.xml - 逻辑与Wazuh一致,但OSSEC不支持
<decoded_as>等温组件。
第四阶段:通用配置最佳实践(无论选哪种HIDS)
以下配置能极大提升检测效果与系统稳定性:
-
白名单配置:
- 排除合法操作(如Puppet/Ansible的定期更新、备份脚本的读取)。
- 在
<syscheck>中添加<ignore>标签,例如忽略/proc、/sys、数据库数据文件(*.ibd)。
-
日志源覆盖(尽可能全):
- Linux:
auth.log、secure、messages、syslog、cron、apache/nginx error.log、audit.log(审计日志)。 - Windows:Security(登录/权限)、System(服务/驱动)、Application(应用程序)、Sysmon(如有安装)。
- 数据库:MySQL general log、PostgreSQL日志(需开启SQL审计)。
- Linux:
-
告警抑制:
- 避免频繁无用的告警刷屏,例如
cron的正常执行、系统回包IP的扫描。 - 创建规则设置
if_matched_sid排除已知的正常事件。
- 避免频繁无用的告警刷屏,例如
-
性能调优:
- 避免对整个 根目录启用实时监控(
realtime=“yes”),建议指定具体目录。 - 调整扫描频率:
<frequency>43200</frequency>(12小时一次)。 - 如果Agent所在主机配置较低,关闭
who-data(记录谁修改),改用realtime。
- 避免对整个 根目录启用实时监控(
-
主动响应策略(安全与风险的平衡):
- 不要 使用默认的
firewall-drop对任何外部IP进行全局封禁(可能导致误封正常用户)。 - 推荐策略:将告警级别达到10以上的事件,触发
ossec-slack.sh或ossec-alert发送到邮件/钉钉,由人工判断是否封禁。 - 如果必须自动化,请设置
timeout参数,例如封禁30分钟(<timeout>1800</timeout>)。
- 不要 使用默认的
如何选择配置方案?
| 场景 | 推荐方案 | 配置重点 |
|---|---|---|
| 新手入门 / 中小企业 | Wazuh | 一键安装,自带Web仪表板(Kibana),规则库完善,支持容器监控。 |
| 追求极简 / 老旧机器 | OSSEC | 安装包小(约5MB),资源占用低,配置简单。 |
| Windows 环境监控 | Wazuh | 原生支持Windows事件日志、注册表监控、Sysmon集成。 |
| 云原生 / Kubernetes | Wazuh + Falco | Wazuh负责宿主机层,Falco负责容器运行时异常。 |
| 金融 / 合规要求高 | 商业HIDS(CrowdStrike等) | 侧重EDR(终端检测与响应),溯源能力强,AI分析。 |
最后的忠告:
- 先测试,后上线:在非生产环境运行48小时,观察误报情况,调整规则级别。
- 监控HIDS本身:确保Agent进程(
ossec-agent)一直在运行,如果挂掉要能通过自愈脚本重启或发告警。 - 日志不要只存本地:将告警日志汇聚到ELK/Splunk等平台,以便回溯历史入侵事件。
如果你能提供具体的操作系统版本和业务场景(比如是Web服务器还是数据库服务器),我可以给出更精准的规则配置建议。