该模块的功能 #
rootkit 是一种恶意软件,专为潜入你的服务器并藏匿自身而设计:它替换系统命令、打开后门,并抹除自己的痕迹,让你察觉不到。问题恰恰就在于此 — 当它运作良好时,你根本注意不到。因此定期检查系统很有必要。
rkhunter 模块借助 rkhunter(Rootkit Hunter)为你完成这项工作:它扫描系统,将文件和命令与已知 rootkit 的特征进行比对,监控可疑属性(异常权限、隐藏端口、被修改的二进制文件),并用通俗的语言为你汇总警告,让你知道该关注什么。此外,它还维护一份基线 — 即你的文件应有状态的快照 — 并保持特征库更新,这两者正是检测可靠性所依赖的核心。
在安装模块或更新系统软件包后,用 update-baseline 更新基线。如果不这样做,合法的变更(例如一次 apt upgrade)会显示为警告,让你难以区分正常与可疑。
常见任务 #
选择你想做的事。每个方案都附有写好的命令 — 复制、粘贴,再点击复制。
1
立即扫描系统
启动一次完整分析,并获取警告汇总。
用 ubuntu 用户通过 SSH 连接到你的服务器。
启动扫描。它会花一点时间:rkhunter 会检查数百个文件和命令。
$ sudo imaxe rkhunter check从脚本调用它,或想与其他工具集成?加上 --json:
$ sudo imaxe rkhunter check --json2
查看上次扫描的警告
以可读的格式回顾 rkhunter 标记的内容。
显示上次 check 的警告,无需重新扫描:
$ sudo imaxe rkhunter report3
检查状态
一目了然:安装情况、基线、上次扫描和警告。
快速概览 rkhunter 是否就绪、是否存在基线、上次扫描的时间、留下了多少警告,以及是否有已计划的扫描:
$ sudo imaxe rkhunter status用于监控或脚本时,以 JSON 请求它:
$ sudo imaxe rkhunter status --json4
更新基线
把文件的当前状态接受为可信参照。
把文件的当前属性保存为基线(相当于 rkhunter --propupd)。仅在你信任系统状态时才这样做 — 例如,刚安装完毕或经历一次你所认可的更新之后:
$ sudo imaxe rkhunter update-baselinecheck 将以这份新的参照快照为起点。5
更新特征库
下载 rkhunter 最新的数据文件。
更新 rkhunter 的数据文件和特征库(相当于 rkhunter --update),让检测能够识别最新的 rootkit:
$ sudo imaxe rkhunter update-datacheck 可检测更新近期的威胁。建议在一次重要扫描之前执行它。第一次运行或刚更新软件包后,这很正常:rkhunter 发现了尚未纳入基线的变更。用 report 审阅它们,如果你确认它们是合法的,用 update-baseline 接受它们。如果你怀疑系统已被入侵,切勿更新基线。
用法概要 #
imaxe rkhunter <subcomando> [--json]所有子命令都需要 root 权限(使用 sudo),因为 rkhunter 需要读取系统文件、比对二进制文件,并写入其基线和数据。为 check 或 status 加上 --json,即可获得机器可读的输出,适合脚本处理和监控。
子命令 #
| 子命令 | 功能 | 相关标志 |
|---|---|---|
| check | 启动一次 rootkit/恶意软件扫描并汇总警告。 | --json |
| report | 以可读方式显示上次扫描的警告。 | — |
| status | 状态:是否已安装、是否存在基线、上次扫描、警告以及已计划的扫描。 | --json |
| update-baseline | 把文件的当前属性接受为基线(rkhunter --propupd)。 | — |
| update-data | 更新 rkhunter 的数据文件/特征库(rkhunter --update)。 | — |
参数与标志 #
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| --json | bool | false | 在 check/status 中,将结果以结构化 JSON 输出到 stdout,适合脚本处理和监控。 |
子命令 report、update-baseline 和 update-data 不接受标志:直接无参数运行即可。
文件与路径 #
| 路径 | 内容 |
|---|---|
| /etc/imaxe/rkhunter.yml | 模块配置:默认情况下,check 仅报告警告(report_warnings_only)。 |
| /var/lib/rkhunter/db/ | 文件属性基线,以及由 update-baseline 和 update-data 更新的数据文件/特征库。 |
| /var/log/rkhunter.log | 上次扫描的日志,report 从中提取警告。 |
rkhunter.yml 示例:
check:
report_warnings_only: true退出码与日志 #
每次执行都会返回一个退出码,你可以用 echo $? 查看 — 便于在脚本中串联或从监控发出告警:
审阅时查看上次扫描的日志:
$ sudo imaxe rkhunter report
$ sudo tail -f /var/log/rkhunter.log故障排查 #
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 更新软件包后出现 WARN(退出码 1) | 尚未纳入基线的合法变更。 | 用 report 审阅;如果你确认无误,用 update-baseline 接受它们。 |
status 显示「baseline: no presente」(基线不存在) | 模块刚安装,还没有参照快照。 | 在系统处于可信状态时运行一次 update-baseline。 |
| 大量关于旧文件或版本的警告 | rkhunter 的特征库和数据已过期。 | 运行 update-data 并重复 check。 |
| 出现 ERR(退出码 3) | rkhunter 未安装或二进制文件无响应。 | 检查模块的安装情况,并查看 /var/log/rkhunter.log。 |
rkhunter 模块遇到问题了?
把「imaxe <module> status --json」的输出发给我们,我们会尽快回复你。