Rootkit 检测是 Linux 服务器安全加固与应急响应中的关键环节,rootkit 一旦植入,攻击者即可长期隐藏后门与恶意进程,常规杀毒软件难以发现。本文介绍如何使用 rkhunter 与 chkrootkit 两款工具完成 Rootkit 检测与查杀,并提供可直接复制执行的完整配置方案。
适用场景
- 服务器疑似被入侵,需要排查隐藏后门与提权后门文件
- 定期安全巡检,建立服务器文件属性基线
- 应急响应时快速定位内核级恶意模块与替换过的系统命令
前置条件
- CentOS 7+ / Ubuntu 18.04+ / Debian 10+ 服务器
- root 权限(工具需要读取系统二进制与内核信息)
- 可正常访问系统软件源或 EPEL 源
原理说明
rootkit 主要分两类:用户态 rootkit 通过 LD_PRELOAD 劫持库函数隐藏进程与文件;内核态 rootkit 以 LKM 内核模块挂钩系统调用实现更深层隐藏。rkhunter 基于已知 rootkit 签名特征库与文件属性基线(SHA-256 哈希)进行比对,首次运行需生成基线,之后每次检查都与基线对比;chkrootkit 则直接检查当前运行进程的二进制与系统命令是否被替换,并探测常见 rootkit 行为特征。两款工具机制互补,建议搭配使用。
操作步骤
1. 安装工具
apt-get update && apt-get install -y rkhunter chkrootkit
# CentOS 7:
# yum install -y epel-release
# yum install -y rkhunter chkrootkit
2. 初始化 rkhunter 基线
rkhunter --propupd
首次或系统升级后必须执行,将当前系统命令哈希写入 /var/lib/rkhunter/db/rkhunter.dat 作为比对基线。
3. 配置 /etc/rkhunter.conf 关键参数
MIRROR_MODE=1
UPDATE_MIRRORS=1
# 误报白名单示例(根据实际情况调整):
# ALLOWHIDDENDIR=/etc/.java
# ALLOW_SSHD_ROOTLOGIN_PROTECTED=1
4. 手动执行检查
rkhunter --check --sk
chkrootkit -q
–check 执行完整检查,–sk 跳过交互式提问;chkrootkit 的 -q 仅输出疑似被替换的条目。
5. 配置定时巡检任务
crontab -e
# 每天凌晨 3 点执行 rkhunter 并邮件告警
0 3 * * * /usr/bin/rkhunter --check --cronjob --report-warnings-only | mail -s "rkhunter daily report" admin@example.com
# 每天 3 点半执行 chkrootkit 并写日志
30 3 * * * /usr/bin/chkrootkit -q 2>/dev/null > /var/log/chkrootkit.log
rkhunter 的 cronjob 模式会自动先更新特征库再执行检查,无需手动 update。
配置验证
- 执行
rkhunter --check --sk,输出末尾 “Rootkits checked” 无告警,整体状态为 OK - 查看
/var/log/rkhunter.log,确认 Warning 条目数量符合预期(属性基线相关警告除外) - 验证检测能力:临时备份并替换
/bin/ls为脚本,运行chkrootkit -q应提示该命令疑似被替换,验证后恢复原文件 - exit code 判断:rkhunter 发现异常返回 1,正常返回 0
常见问题
FAQ 1:检查出现大量误报怎么办?
先结合进程树与文件时间戳人工确认是否为真实入侵。确认误报后,在 /etc/rkhunter.conf 中使用 ALLOWHIDDENDIR、ALLOW_DEVFILE 等指令加入白名单,或用 –sk 跳过交互确认项,避免误判掩盖真实告警。
FAQ 2:系统升级后 rkhunter 告警变多?
系统更新会改变命令与库文件的哈希,属于正常现象。确认升级来源可信后执行 rkhunter --propupd 重建基线,而不是删除告警日志。
FAQ 3:特征库更新失败?
确认服务器可访问外网,设置 UPDATE_MIRRORS=1 与 MIRROR_MODE=1 启用镜像更新;内网环境可手动下载 hashlists 放入 /var/lib/rkhunter/db/ 目录后执行 rkhunter –update。
总结
Rootkit 检测不能依赖单一工具。建议以 rkhunter 的基线比对与特征库检查为主、chkrootkit 的进程级检测为辅,通过定时任务形成常态化巡检,再结合 AIDE 文件完整性监控与 auditd 审计日志,构成完整的 Linux 主机纵深防御体系。任何可疑告警都应立即隔离服务器并保留现场,交由应急响应流程处置。