OSSEC HIDS 部署实战:开源主机入侵检测系统配置指南

适用场景

OSSEC HIDS 部署适用于需要轻量级主机入侵检测能力的中小规模服务器集群。OSSEC 是一款开源的主机入侵检测系统(HIDS),可对 Linux 与 Windows 主机进行日志分析、文件完整性监控、Rootkit 检测与主动响应。典型场景包括:合规审计要求记录文件变更、检测 SSH 爆破与异常登录、集中收集多台服务器的安全日志,以及在没有商业 EDR 预算的前提下构建基础安全监控能力。

前置条件

  • 一台 Server 端主机(建议 2C4G 起步),操作系统为 CentOS 7+ / Ubuntu 18.04+
  • 若干台被监控主机(Agent),与 Server 之间网络可达
  • Server 端防火墙放行 UDP/TCP 1514 端口(Agent 通信端口)与 1515(注册端口)
  • 所有主机具备 root 权限

原理说明

OSSEC 采用经典的 C/S 架构:Agent 在本地采集系统日志、执行文件完整性(FIM)与 Rootkit 检测,将事件通过加密通道发送至 Server;Server 端的分析引擎(Analysisd)对事件执行规则匹配,命中规则后触发告警,告警可写入本地日志、发送邮件或调用主动响应脚本。规则引擎基于 XML 规则文件,默认自带数千条规则,支持自定义扩展。

操作步骤

步骤一:安装 OSSEC Server

# 安装依赖(CentOS)
yum install -y gcc make libevent-devel zlib-devel openssl-devel pcre2-devel

# 下载源码(以 3.7.0 为例)
cd /opt
curl -L -o ossec-hids-3.7.0.tar.gz https://github.com/ossec/ossec-hids/archive/refs/tags/v3.7.0.tar.gz
tar xzf ossec-hids-3.7.0.tar.gz
cd ossec-hids-3.7.0

# 进入安装向导,按提示选择 server 类型
./install.sh
# 语言选 zh/en 均可;安装类型选 server;其余一路回车默认

步骤二:初始化与启动

# 注册服务并启动
/var/ossec/bin/ossec-control start
systemctl enable ossec 2>/dev/null || true

# 验证进程状态
/var/ossec/bin/ossec-control status
# 预期输出:ossec-monitord / ossec-logcollector / ossec-remoted / ossec-syscheckd / ossec-analysisd / ossec-maild 均为 running

步骤三:添加 Agent 客户端

# 在 Server 端注册 Agent(交互式输入名称、IP)
/var/ossec/bin/manage_agents

# 按提示:A(添加) -> 输入 Agent 名称与 IP -> 确认
# 然后 E(导出) 选择刚添加的 Agent,复制生成的 key

# 在被监控主机安装 Agent(同样执行 install.sh,类型选 agent)
# 安装完成后导入 key
/var/ossec/bin/manage_agents
# 选择 I(导入) 粘贴 Server 导出的 key,然后 R 重启

# Agent 端连接 Server
/var/ossec/bin/ossec-control start

步骤四:验证 Agent 上线

# Server 端查看已连接 Agent 列表
/var/ossec/bin/agent_control -l
# 预期输出中包含刚添加的 Agent,且 Last keep alive 时间不断更新

# 在 Agent 端制造一条测试日志(如错误 SSH 登录)
tail -f /var/ossec/logs/ossec.log

步骤五:文件完整性监控配置

编辑 Server 端 /var/ossec/etc/ossec.conf,在 syscheck 段添加需要监控的目录:

<syscheck>
  <directories check_all="yes">/etc,/usr/bin,/usr/sbin,/root/bin</directories>
  <directories check_all="yes" real_time="yes">/var/www/html</directories>
  <frequency>43200</frequency>
</syscheck>
# 重启使配置生效
/var/ossec/bin/ossec-control restart

配置验证

# 查看告警日志,确认 syscheck 初始基线已生成
grep -i "syscheck" /var/ossec/logs/ossec-alerts.log | tail -20

# 手动修改被监控文件触发告警
echo "test" >> /etc/hosts
sleep 30
grep -i "modified" /var/ossec/logs/ossec-alerts.log | tail -5
# 预期看到 "File '.../hosts' modified" 告警记录

若告警日志中出现文件变更记录,说明文件完整性监控链路已打通。

常见问题

FAQ 1:Agent 无法注册或连接不上 Server?

依次检查:Server 防火墙是否放行 1514/1515 端口(firewall-cmd --add-port=1514/udp --permanent && firewall-cmd --reload);Agent 导入的 key 是否与 Server 导出的一致;Server 端 ossec-remoted 是否 running。也可在 Server 用 tcpdump -i eth0 udp port 1514 确认是否收到 Agent 心跳。

FAQ 2:告警太多被刷屏怎么办?

ossec.confalerts 段调低日志级别,或编辑 /var/ossec/etc/rules/local_rules.xml 为特定规则添加 level="0" 抑制(0 表示不告警)。同时建议将高频事件(如网络错误)单独降级,保留高优先级告警。

总结

OSSEC HIDS 以较低的资源开销提供了日志分析、文件完整性监控与主动响应能力,是中小规模服务器构建基础安全监控的可行方案。部署完成后建议持续观察告警质量,结合 local_rules.xml 定制符合自身业务场景的规则,并与外部 SIEM 或告警平台对接形成闭环。