入侵检测需多层策略:基于文件完整性(如AIDE)、进程与网络异常监控、日志审计(远程转发+fail2ban)、eBPF实时追踪。关键措施包括初始化AIDE数据库、定期校验告警、检查非常规端口/进程、分析日志异常、启用tracee或bpftrace实时监控。

Linux系统一旦被入侵,往往表现为异常进程、可疑网络连接、文件篡改或日志消失。有效的入侵检测不是靠单一工具,而是结合行为基线、文件完整性、日志审计和实时监控的多层策略。
基于文件完整性的入侵痕迹识别
攻击者常替换关键二进制文件(如/bin/bash、/usr/bin/sudo)或植入后门脚本。使用AIDE(Advanced Intrusion Detection Environment)或Tripwire可定期比对文件哈希、权限、属主等属性变化。
- 首次部署后立即初始化数据库:aide --init && mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
- 每周自动校验并邮件告警:0 2 * * 0 /usr/bin/aide --check | grep -E "(changed|added|removed)" | mail -s "AIDE Alert" admin@example.com
- 数据库文件必须存放在只读介质或独立安全主机上,防止被攻击者覆盖
进程与网络连接的非常规行为监控
合法服务通常有固定端口、父进程和启动方式。异常可能包括:非标准端口上的SSH监听、/tmp目录下运行的Python/Perl进程、无tty的高权限shell。
- 用ps auxf --sort=-%cpu | head -20快速查看CPU占用异常进程
- 检查监听端口与对应进程:ss -tulnp | grep -v "127.0.0.1",重点关注非80/443/22/25等常见端口
- 发现可疑进程后,用lsof -p PID查打开文件,cat /proc/PID/environ看环境变量,常能发现恶意载荷路径
系统日志的集中采集与异常模式匹配
/var/log/auth.log、/var/log/secure、journalctl输出中隐藏大量线索:暴力破解IP频次、sudo提权失败记录、用户登录时间异常(如凌晨3点root登录)、命令执行日志缺失(说明history被清空或bash未记录)。
- 启用rsyslog远程转发,避免本地日志被删除:*.* @syslog-server:514
- 用goaccess或grep -E "Failed password|invalid user|session opened for user root"做初步筛选
- 配置fail2ban自动封禁高频失败登录IP,并记录其后续行为(如是否转向其他服务)
轻量级运行时监控:Sysmon for Linux 或 eBPF 工具链
传统日志滞后性强,而eBPF驱动的工具(如bpftrace、tracee)可在内核层捕获进程执行、文件打开、网络连接等事件,近乎实时。
- 用tracee --output format:table --trace event=execve实时跟踪所有命令执行,过滤出/dev/shm或/run/.lock等隐蔽路径的调用
- 编写简单bpftrace脚本监控非白名单路径的动态库加载:uprobe:/lib/x86_64-linux-gnu/libc.so.6:system { printf("suspicious system() call from %s\n", comm); }
- 注意资源开销,生产环境建议仅对关键主机开启核心事件追踪










