Linux主机入侵检测的核心在于及时发现偏离正常行为的异常活动,重点监控非工作时间SSH登录、sudo提权、陌生网络连接、关键文件篡改及多源日志交叉验证,依赖对系统常态的清晰认知而非工具堆砌。

Linux主机入侵检测的核心在于及时发现与正常行为明显偏离的异常活动。重点不是堆砌工具,而是理解哪些行为在真实环境中往往预示风险——比如非运维时段的sudo提权、陌生进程调用网络连接、关键配置文件被意外修改等。
关注登录与权限使用的异常模式
攻击者常通过合法账户横向移动或提权。需重点检查:
- 非工作时间(如凌晨2–5点)的SSH登录,尤其是来自非常用IP或新地理位置的会话
- 普通用户频繁执行sudo命令,特别是调用bash、python、nc、curl等高风险工具
- /var/log/auth.log中出现大量密码失败后突然成功的记录,可能暗示爆破成功
- 新增的sudoers规则(visudo -f /etc/sudoers.d/*)或用户被加入wheel/admin组
识别隐蔽的进程与网络行为
恶意进程常伪装或隐藏,不能只依赖ps简单查看:
- 用ps auxf --forest观察进程树,留意父进程为systemd但子进程无明确服务名的可疑分支
- 运行lsof -i -P -n | grep -v "127.0.0.1"筛选出对外建立非本地连接的进程,比对是否属于已知服务
- 检查/proc/[pid]/cmdline内容,有些木马会清空该文件或写入不可见字符,可用hexdump -C快速验证
- 用ss -tulpn确认监听端口与对应进程是否匹配,特别注意非标准端口(如31337、4242)上运行的未知二进制
监控关键系统文件与配置的非预期变更
攻击者植入后门常修改以下位置,建议每日校验或启用inotify实时跟踪:
- /etc/passwd与/etc/shadow:新增UID 0用户、空密码字段、或shell设为/bin/bash以外的可疑路径(如/bin/shellx)
- /etc/crontab与/var/spool/cron/:非管理员添加的定时任务,尤其包含base64解码、wget/curl下载、或重定向到/dev/null的任务
- /etc/init.d/、/etc/systemd/system/:新注册的伪装服务,检查ExecStart指向是否为临时目录下的可执行文件
- ~/.bashrc、~/.profile、/etc/profile.d/:追加的PATH修改或alias定义,可能劫持常用命令(如ls、ps)
利用基础日志交叉验证行为合理性
单一日志易被清除或伪造,需多源比对:
- 将/var/log/secure中的登录时间,与lastlog输出、w命令当前登录列表对照,排查时间断层或未记录会话
- 把journalctl -u sshd --since "2 hours ago" 的日志,和sshd_config中设置的AllowUsers/Match块对比,确认登录用户是否合规
- 当发现异常进程时,查其启动时间:ps -o lstart= -p [PID],再回溯同一时刻的syslog或audit.log,看是否有相关execve事件
- 启用auditd后,重点监控auditctl -w /etc/passwd -p wa -k identity_change这类规则,确保变更留痕
不复杂但容易忽略。真正有效的异常识别,靠的是对自身环境“常态”的清晰认知,而不是等待告警响起才开始排查。










