1)前世今生:HIDS 是怎么来的
早期:NIDS 不够用了
最早安全体系以 网络入侵检测 NIDS(例如 Snort)为主,它在网络层抓包分析。
但很快发现问题:
- HTTPS 普及后,流量加密,抓包看不到内容
- 内网横向移动、主机落地行为,网络侧很难看全
- 攻击者直接在主机上改文件、提权、删日志,网络设备无法感知
所以必须要有一个“住在主机里”的探针。
HIDS 兴起:OSSEC 时代
OSSEC 是最经典的开源 HIDS 之一(2000s 时代),特点是:
- 轻量 Agent
- 规则引擎(检测登录失败、sudo 提权、异常进程、文件篡改)
- LogCollector(采集系统日志)
- Syscheck(文件完整性检测)
很多 HIDS 产品就是从 OSSEC 体系演化出来的。
新时代:Wazuh / EDR 化
后来出现了 Wazuh(OSSEC 的现代增强版),更偏向:
- 集成 Elastic/Kibana 做安全分析
- MITRE ATT&CK 映射
- 支持漏洞检测、合规检查(CIS 基线)
- 容器/云环境支持更强
再往后就是 EDR(Endpoint Detection & Response) 的概念:不仅检测,还要能隔离主机、终止进程、回滚、溯源。
2)你这个 hids-agent 的组成模块(对应 systemctl 输出)
你看到的进程非常典型:
hids-agentd
- Agent 主进程
- 负责和中心端建立通信(心跳、注册、发送事件)
- 相当于“总线”
hids-execd
- 告警触发后的执行器
- 例如规则命中后执行脚本:封 IP、kill 进程、禁用账号等
- 这属于 主动响应(Active Response)
hids-logcollector
- 采集
/var/log/auth.log、/var/log/secure、nginx 日志等 - 把日志喂给规则引擎分析
hids-syscheckd
- 文件完整性监控(FIM)
- 典型监控目录:
/etc、/bin、/usr/bin - 检测文件 hash 改变、权限变化、owner 变化
hids-modulesd
- 模块管理器(扩展功能入口)
- 例如漏洞检测、rootkit 检测、合规扫描等通常挂在这里
所以整体就是一个“多进程分工”的 Agent。
3)hids-agent 的核心能力(它到底干嘛)
① 主机日志审计与规则告警
比如:
- SSH 爆破:短时间大量 failed login
- sudo 提权
- 新增用户 / 修改 passwd
- cron 被写入后门任务
- 系统关键服务异常重启
它会通过规则引擎把日志匹配成事件。
② 文件完整性监控(最典型的 HIDS 功能)
监控敏感文件:
/etc/passwd/etc/shadow/etc/ssh/sshd_config/bin/bash/usr/bin/sudo
一旦被篡改,立刻告警。
适用于:
- 防止 webshell 落地替换系统文件
- 检测后门替换二进制(比如替换 ls/ps)
③ Rootkit / 异常进程检测(部分版本支持)
检测典型 rootkit 特征、隐藏端口、异常模块加载。
④ 主机基线与合规(CIS、等保)
一些 HIDS 会检查:
- ssh 是否允许 root 登录
- 密码策略是否符合要求
- 是否开启 auditd
- 系统是否存在高危配置
这就是“等保合规检查”的核心组件之一。
⑤ 主动响应(Active Response)
例如:
- 自动封禁攻击源 IP(iptables/nftables)
- 自动 kill 可疑进程
- 自动隔离主机(更高级 EDR 才常见)
但现实运维中,这个功能一般会谨慎开启,因为误杀风险大。
4)典型使用场景(企业里为什么要装它)
场景 A:服务器被入侵后的第一道证据链
HIDS 会记录:
- 谁登录了
- 什么时间执行了 sudo
- 哪些文件被改
- 哪些日志异常增长
这对溯源非常关键。
场景 B:等保/审计要求
很多合规要求必须具备:
- 主机审计能力
- 文件完整性监控
- 安全告警留痕
HIDS 是最直接的落地方案。
场景 C:内网横向移动检测
攻击者拿到一台机器后会:
- 扫描内网
- dump 凭证
- 建立反弹 shell
- 写计划任务持久化
这些行为往往在主机侧更明显。
场景 D:云服务器、K8s 节点安全
云环境里网络流量复杂,NIDS 很难完整覆盖,HIDS/EDR 更适合直接装在节点上做监控。
5)HIDS vs Auditbeat(你前面问过的刚好能对比)
简单一句话:
- Auditbeat:偏“采集型”,把系统事件/文件变化发到 ES
- hids-agent:偏“检测型”,自带规则引擎 + 告警 + 响应能力
Auditbeat 更像“安全数据管道”,hids-agent 更像“安全判断器”。
6)你这套 hids-agent 的运维关注点
从你 systemctl status 看:
- 39MB 常驻内存很正常
- peak 357MB 说明某个阶段可能扫描量大(syscheck 初始化扫描、规则加载、日志突增)
运维常见问题:
- syscheck 扫描目录太大 → CPU 飙升
- 日志量突增(例如 nginx access log)→ logcollector 吃满 IO
- 与中心端连接异常 → agentd 重连风暴
- active response 误封 → 线上事故
7)一句话总结
hids-agent 是装在主机上的安全探针,起源于 OSSEC 体系,核心价值是:
监控主机日志 + 检测入侵行为 + 文件篡改告警 + 合规审计 + 必要时自动响应。
它适用于等保合规、主机安全运营、入侵溯源、云环境安全监控。
1)服务管理(systemd)
查看状态
systemctl status hids-agent.service
启停/重启
systemctl start hids-agent
systemctl stop hids-agent
systemctl restart hids-agent
开机自启
systemctl enable hids-agent
systemctl disable hids-agent
看启动日志(systemd 层)
journalctl -u hids-agent -f
journalctl -u hids-agent --since "1 hour ago"
2)进程级检查(确认子模块都在)
看进程树
ps -ef | grep hids-
看模块是否都起来了(你这套应当包含)
- hids-agentd
- hids-execd
- hids-syscheckd
- hids-logcollector
- hids-modulesd
3)核心日志位置(排障最常用)
一般都在:
ls -lh /var/ossec/logs/
重点文件:
主日志(最关键)
tail -f /var/ossec/logs/ossec.log
agent 通信相关(如果存在)
tail -f /var/ossec/logs/hids-agentd.log
syscheck 文件完整性扫描日志
tail -f /var/ossec/logs/syscheck.log
active response / execd
tail -f /var/ossec/logs/active-responses.log
模块日志(vuln/rootcheck 可能在这里)
tail -f /var/ossec/logs/modules.log
4)配置文件检查(是否写错)
一般主配置:
cat /var/ossec/etc/ossec.conf
常见的 agent 配置目录:
ls -lh /var/ossec/etc/
5)配置校验(运维必备)
很多 OSSEC/Wazuh 系都有内置校验工具。
试试:
/var/ossec/bin/hids-control info
或者:
/var/ossec/bin/hids-control status
如果你的版本是 Wazuh/OSSEC 风格,可能叫:
/var/ossec/bin/ossec-control status
你可以直接列一下 /var/ossec/bin/:
ls -lh /var/ossec/bin/
6)连通性检查(Agent 是否连上 Manager)
看是否有连接失败日志
grep -iE "error|fail|disconnect|reconnect|unable" /var/ossec/logs/ossec.log | tail -n 50
看 agentd 是否在尝试连接 manager
grep -iE "agentd|manager|connected|connection" /var/ossec/logs/ossec.log | tail -n 50
如果 manager 端口是 1514/udp 或 1514/tcp(常见)
ss -antup | grep 1514
7)文件完整性(FIM / syscheck)运维验证
看 syscheck 是否运行
ps -ef | grep hids-syscheckd
查看 syscheck 监控的目录(在 ossec.conf)
grep -n "syscheck" -n /var/ossec/etc/ossec.conf
测试 FIM 是否生效(推荐)
touch /etc/test_hids_file
echo "hello" >> /etc/test_hids_file
然后观察:
tail -f /var/ossec/logs/ossec.log
tail -f /var/ossec/logs/syscheck.log
如果规则配置正确,会产生 file added / modified 告警。
8)日志采集(logcollector)排障
查看 logcollector 是否正常采集
grep -i logcollector /var/ossec/logs/ossec.log | tail -n 50
看是否有权限问题(常见)
grep -iE "permission|denied|cannot open" /var/ossec/logs/ossec.log | tail -n 50
9)Active Response(误封/误杀排查)
查看 active response 触发记录
tail -n 200 /var/ossec/logs/active-responses.log
搜某个 IP 是否被封
grep "1.2.3.4" /var/ossec/logs/active-responses.log
如果它封 iptables,你可以查:
iptables -L -n --line-numbers
iptables -S | grep -i ossec
10)性能排查(CPU/内存 peak 443MB 的原因)
看哪个子进程吃资源
top -p $(pgrep -d',' -f "/var/ossec/bin/hids-")
或者:
ps -eo pid,cmd,%cpu,%mem,rss --sort=-%cpu | head -n 20
syscheck 扫描期间 CPU 高是正常现象
重点关注是否:
- 扫描目录过大(/var/log、/home、/data 这种不该扫)
- 扫描频率太高
11)常见故障快速定位套路(推荐你收藏)
① agent 起不来
systemctl status hids-agent
journalctl -u hids-agent -xe
tail -n 200 /var/ossec/logs/ossec.log
② agent 起了但不告警
tail -f /var/ossec/logs/ossec.log
tail -f /var/ossec/logs/syscheck.log
tail -f /var/ossec/logs/alerts/alerts.log
(如果有 alerts 目录)
③ agent 不上报 manager
grep -iE "connect|disconnect|error|fail" /var/ossec/logs/ossec.log | tail
ss -antup | grep 1514
ping <manager-ip>
nc -vz <manager-ip> 1514
12)版本信息 / 编译信息
/var/ossec/bin/hids-agentd -V
/var/ossec/bin/hids-modulesd -V
如果支持:
/var/ossec/bin/hids-control info
13)建议你常用的“一键巡检命令”
你可以直接跑这个:
echo "==== systemd ===="
systemctl status hids-agent --no-pager
echo "==== processes ===="
ps -ef | grep /var/ossec/bin/hids- | grep -v grep
echo "==== last logs ===="
tail -n 50 /var/ossec/logs/ossec.log
echo "==== network ===="
ss -antup | grep -E "1514|1515" || true
echo "==== disk usage ===="
du -sh /var/ossec/logs/*
14)运维经验提醒(很重要)
- peak 内存很高:多数是 syscheck 初次扫描或 logcollector 遇到日志暴增
- CPU 高:一般是 syscheck 扫描目录不合理(扫了 /data 或 /var/lib/docker)
- 误报多:规则没调优,尤其是 web server 日志和 sudo 日志
- active response 慎开:不开没事,一开容易误封业务 IP