Linux 后门检测实战:rkhunter、chkrootkit 与手工排查对比 核心要点图解,rkhunter 与 chkrootkit 只能覆盖已知特征,手工排查才是发现未知后门的关键。;扫描工具误报率高,必须结合文件时间戳、进程与网络连接交叉验证。;入侵后先取证再清理,直接删文件会破坏溯源线索。;持久化点集中在 cron、systemd、SSH 公钥与 LD_PRELOAD,优先检查这四处。
Linux 后门检测实战:rkhunter、chkrootkit 与手工排查对比 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • rkhunter 与 chkrootkit 只能覆盖已知特征,手工排查才是发现未知后门的关键。
  • 扫描工具误报率高,必须结合文件时间戳、进程与网络连接交叉验证。
  • 入侵后先取证再清理,直接删文件会破坏溯源线索。
  • 持久化点集中在 cron、systemd、SSH 公钥与 LD_PRELOAD,优先检查这四处。

半夜收到告警,登录服务器发现 CPU 跑满、陌生 IP 频繁连接,却不知道从哪查起——这是很多运维和站长遇到 Linux 后门时的真实状态。本文把 rkhunter、chkrootkit 与手工排查三种 Linux 后门检测方案放到同一张桌面上,给出可直接复制的命令、误报判断方法和检查清单,目标是让你在半小时内完成一轮有结论的排查。

三种方案各自解决什么问题

先明确边界,避免把工具当万能药。

  • rkhunter:基于特征库与文件属性基线,检查 Rootkit、被替换的系统命令、异常网络参数与隐藏文件,覆盖广但依赖更新。
  • chkrootkit:轻量本地检查,重点在已知 Rootkit 特征、日志异常与网络接口混杂模式,速度快、误报也相对集中。
  • 手工排查:不依赖特征库,从进程、网络、账号、持久化项反推异常,是发现未知后门与内存马的主要手段。

结论很直接:工具负责快速筛查,手工排查负责定性。只跑扫描工具就宣布“服务器干净”,是应急响应里最常见的错误。

方案一:rkhunter 安装与实战扫描

Debian/Ubuntu 与 RHEL 系均可直接安装:

apt install rkhunter -y
# 或 yum install rkhunter -y
rkhunter --update
rkhunter --propupd
rkhunter --check --sk

首次执行 --propupd 会建立文件属性基线,务必在确认系统干净时做,否则基线本身就被污染。扫描结果在 /var/log/rkhunter.log,重点关注 Warning 行。

常见误报与处理:

  • 隐藏文件告警:多为应用自身生成的 .htaccess、.env,核对路径即可。
  • 端口或协议异常:容器环境、NAT 下常见,结合 ss -tunlp 实际监听判断。
  • 系统命令被替换:这是高危信号,用 rpm -V coreutils 或 debsums 校验包完整性确认。

方案二:chkrootkit 快速筛查

apt install chkrootkit -y
chkrootkit -q
chkrootkit -x | less   # 专家模式,输出更详细

输出中 INFECTED 必须逐条核实,not infected 可略过。Checking `bindshell'、Checking `sniffer' 出现异常时,配合 lsof -i 与 ip link 确认是否存在监听后门或网卡混杂模式。

chkrootkit 的已知弱点是特征陈旧,对近年的挖矿木马、SSH 暴力破解后植入的公钥后门基本无感,因此它只能作为第一道筛子。

方案三:手工排查六步清单

这一步决定你能否发现未知后门。按顺序执行,边查边记录。

1. 进程与网络

ps auxf | grep -v '\[' | sort -k3 -nr | head -20
ss -tunlp
lsof -i -P -n | grep LISTEN

关注:无父进程的孤儿进程、路径在 /tmp、/dev/shm 的可执行文件、监听在非常规端口的服务。

2. 账号与提权配置

awk -F: '==0{print }' /etc/passwd
grep -v '^#' /etc/sudoers
ls -la /etc/sudoers.d/

除 root 外出现 UID 为 0 的账号、sudoers 中陌生的 NOPASSWD 条目,都要立即处置。

3. 持久化项

crontab -l; ls -la /etc/cron.*/
systemctl list-unit-files --state=enabled
cat /etc/rc.local 2>/dev/null
cat /etc/ld.so.preload 2>/dev/null

/etc/ld.so.preload 非空是典型的用户态 Rootkit 手法,正常情况下该文件不应存在。

4. SSH 后门

cat /root/.ssh/authorized_keys
find / -name authorized_keys 2>/dev/null

逐个比对公钥指纹,陌生密钥直接移除并轮换密码。

5. 文件时间戳与 SUID

find / -xdev -mtime -7 -type f -perm -u+x 2>/dev/null | head -50
find / -xdev -perm -4000 -type f 2>/dev/null

入侵时间窗内新增的可执行文件、异常 SUID 程序,是最有价值的线索。

6. 日志与登录记录

last -a | head -20
lastb | head -20
grep -i 'accepted' /var/log/auth.log | tail -30

三种方案对比与选用建议

维度rkhunterchkrootkit手工排查
覆盖范围广,含基线比对窄,偏已知特征取决于经验
未知后门弱弱强
误报率中中高低(需经验)
耗时5–15 分钟3–10 分钟20–40 分钟
适用场景日常巡检快速初筛疑似入侵定性

推荐流程:日常用 rkhunter 定时巡检建立基线,告警后先跑 chkrootkit 快速初筛,再用手工六步清单定性,三者结果交叉验证后才下结论。

处置与加固建议

确认后门后,先取证再清理:备份日志与可疑文件、记录哈希与进程信息,再删除持久化项、轮换所有凭据、升级存在漏洞的组件。加固层面,关闭不必要端口、禁用密码登录、限制 sudo 范围、对关键目录做哈希基线并持续监控。在防护建议上,可借助 AegisX 的主机防护能力实现文件完整性与异常进程的实时告警,把“事后排查”前移为“事中拦截”。

行动建议:今天就对生产服务器执行一次 rkhunter --propupd 建立干净基线,并把本文六步清单固化成脚本加入巡检,下一次告警时你会有据可查。

常见问题(FAQ)

rkhunter 和 chkrootkit 能查出所有后门吗?

不能。两者都基于已知特征库与基线比对,对新型 Rootkit、内存马、被篡改的合法二进制无能为力。正确用法是让它们做第一轮快速筛查,再用手工排查核对进程、网络连接、账号与持久化项,最后用文件哈希与时间戳交叉验证,任何单一工具的结果都不足以定论。

扫描时出现大量警告,怎么判断哪些是真后门?

先看警告类型。隐藏进程、/dev 下异常文件、被替换的系统命令属于高危;隐藏文件、端口异常多为误报。对每个警告记录路径与哈希,用 rpm -V 或 debsums 校验包完整性,再对照文件修改时间是否落在可疑时间窗内,能快速筛掉大部分误报。

服务器疑似被入侵,第一步应该做什么?

先隔离再取证。断开公网访问但保留运行状态,立即备份 /var/log、/etc/passwd、crontab、进程列表与网络连接快照,记录可疑文件哈希。不要在取证前重启或直接删除可疑文件,否则内存中的进程信息与日志线索会丢失,后续溯源和定责都会变得困难。

手工排查最少要检查哪些位置?

至少覆盖六处:异常进程与网络连接、/etc/passwd 与 sudoers 中的可疑账号、cron 与 systemd 定时任务、SSH authorized_keys、/etc/ld.so.preload 与启动脚本、/tmp 与 /dev/shm 下的可执行文件。这六处覆盖了绝大多数持久化手法,逐项核对耗时通常在半小时以内。

怎么避免以后再次被植入后门?

核心是收敛入口与建立基线。关闭不必要端口、禁用密码登录改用密钥、限制 sudo 权限、定期审计账号与计划任务,并对关键目录做哈希基线,出现变化即告警。可借助 AegisX 的主机防护能力做文件完整性与异常进程监控,把事后排查变成事中拦截。