Hids-agent 基本就是 OSSEC / Wazuh 这一类体系的分支或二次封装版本

分类: 兴趣杂文 标签: Hids-agent Hids-agent 运维 入侵检测

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