rkhunter --check 通过比对约150个关键系统命令(如ps、netstat、ls等)的当前MD5值与本地“干净版本”指纹库是否一致来检测篡改,首次运行前必须执行 rkhunter --update 更新数据库、rkhunter --propupd 采集可信快照,否则易误报;发现hash mismatch需结合rpm -Vf或debsums等工具验证是否真实入侵。

直接运行 rkhunter --check 就能触发核心二进制文件校验
rkhunter 默认会检查约 150 个关键系统命令,包括 ps、netstat、ls、du、find、ifconfig、login、ssh、sshd 等。它不是靠实时行为监控,而是比对这些文件的当前 MD5 值与本地数据库中“已知干净版本”的指纹是否一致。
首次运行前必须先更新数据库,否则校验基准过时,误报率极高:
-
rkhunter --update—— 下载最新官方签名和文件指纹库 -
rkhunter --propupd—— 为当前系统重新采集一次“可信快照”(建议在全新干净系统安装后立即执行)
注意:--propupd 不是自动执行的,漏掉这步会导致后续所有 --check 都拿旧快照比对,可能把合法更新识别为篡改。
看到 Warning 或 File hash mismatch 就要立刻停手核查
rkhunter 检测到异常时不会直接告诉你“ps 被替换了”,而是输出类似这样的行:
rkhunter --check ... Warning: File '/bin/ps' has a different MD5 hash than expected. Warning: File '/usr/bin/netstat' has a different MD5 hash than expected.
这类提示说明:当前文件内容与 rkhunter 数据库里记录的“该发行版该版本应有哈希值”不一致 —— 可能是被 rootkit 替换,也可能是系统升级、手动编译或打补丁导致的正常变更。
验证方式优先级如下:
- 查包管理器:对 RPM 系统用
rpm -Vf /bin/ps;对 Debian/Ubuntu 用debsums -s /bin/ps - 比对原始镜像哈希:从对应 ISO 的
SHA256SUMS文件中提取该文件理论值,再用sha256sum /bin/ps实测 - 检查文件路径是否被劫持:
which ps和ls -la $(which ps),确认没被 alias、PATH 前置或/etc/ld.so.preload干扰
/etc/rkhunter.conf 中几个关键配置决定检测精度
默认配置足够覆盖常见场景,但若系统经过定制(如容器环境、精简版发行版),需手动调整以下项:
-
ALLOW_SSH_ROOT_USER=yes—— 若允许 root SSH 登录,此项不设为yes会误报sshd异常 -
DISABLE_TESTS="suspscan hidden_procs"—— 关闭某些高开销或易误报项(如进程隐藏扫描),但filehash测试必须保留 -
SCRIPTWHITELIST="/usr/bin/whitelist_script"—— 若你主动替换过某个工具(如用busybox替代netstat),需显式加入白名单,否则持续告警
修改后务必重新运行 rkhunter --propupd,否则新配置不生效于文件属性比对。
别依赖单次扫描结果,尤其当系统已被入侵过
rkhunter 是静态检测工具,它的数据库和自身二进制文件都可能被攻击者污染。如果已发现可疑进程(如 /tmp/virus/libudev.so)、异常端口或 LD_PRELOAD 劫持痕迹,rkhunter --check 的结果就不可信 —— 因为它调用的 md5sum、ls、awk 等底层命令本身可能已被替换。
此时真正有效的做法是:
- 从 Live CD/USB 启动,挂载原系统盘,在干净环境中运行
rkhunter - 或使用离线校验:提前在干净系统导出
sha256sum /bin/* /usr/bin/* > /safe/checksums.txt,入侵后用该文件比对 - 配合
aide或tripwire这类带签名数据库的完整性工具交叉验证
最危险的情况是:rkhunter 自身的 /usr/bin/rkhunter 被替换成假版本,还伪装成绿色通过 —— 它连警告都不会发。


















