在 Linux 系统中,Rootkit 是一种隐藏型恶意软件,它会潜伏在系统中,绕过普通检测手段,甚至获取 root 权限。为了确保系统安全,我们可以使用 RKHunter(Rootkit Hunter) 来扫描系统潜在威胁。本文将详细介绍 Ubuntu 系统上安装、配置 RKHunter,并解决常见误报的完整流程。
1️⃣ 安装 RKHunter
首先,使用 apt 安装 RKHunter 以及 curl(用于联网更新镜像):
sudo apt update
sudo apt -y install rkhunter curl
安装完成后,可以检查版本:
rkhunter --version
RKHunter 默认包含大量检测规则,包括系统文件完整性、隐藏文件、网络端口异常等。
2️⃣ 配置 RKHunter
RKHunter 的配置主要涉及 定期扫描 和 网络更新。我们先修改默认参数:
2.1 /etc/default/rkhunter
编辑此文件以启用每日 cron 任务,并设置报告邮箱:
sudo nano /etc/default/rkhunter
修改内容:
# 是否启用每日扫描任务
CRON_DAILY_RUN="yes"
# 接收扫描报告的邮箱
REPORT_EMAIL="root"
保存并退出。
2.2 /etc/rkhunter.conf
主要配置项如下:
sudo nano /etc/rkhunter.conf
- 更新镜像:
UPDATE_MIRRORS=1
MIRRORS_MODE=0
- 禁用自动联网更新(Ubuntu 包默认禁止,安全性高):
WEB_CMD=""
- 允许自定义 TCP 端口(例如你部署的 frps 服务监听 7000 端口):
ALLOW_TCP_PORTS=7000
- 如果系统允许 root 登录 SSH,可修改:
ALLOW_SSH_ROOT_USER=Yes
保存并退出。
3️⃣ 更新系统文件属性基线
第一次安装 RKHunter 后,需要建立系统文件属性基线:
sudo rkhunter --propupd
输出示例:
[ Rootkit Hunter version 1.4.6 ]
File updated: searched for 180 files, found 142
这里记录了关键系统文件的当前状态(大小、权限、校验和),方便后续扫描发现异常变更。
4️⃣ 扫描系统
执行非交互扫描,并仅显示警告:
sudo rkhunter --check --skip-keypress --nocolors --report-warnings-only
扫描结果会写入日志 /var/log/rkhunter.log,也可直接查看最近警告:
sudo tail -n 200 /var/log/rkhunter.log
5️⃣ 常见警告及处理方法
RKHunter 扫描时可能出现一些误报,下面是常见示例:
5.1 TCP 端口占用
Warning: Network TCP port 7000 is being used by /root/bin/frps/frps.
Possible rootkit: Possible rogue IRC bot
- 原因:RKHunter 检测到高端口监听,默认怀疑 IRC 木马。
- 解决方法:
- 如果是你自己部署的服务(如 frps 内网穿透),属于误报。
- 配置允许端口:
ALLOW_TCP_PORTS=7000 - 更新基线:
sudo rkhunter --propupd
5.2 系统用户/组变动
Warning: User 'postfix' has been added
Warning: Group 'postfix' has been added
Warning: Changes found in group 'postdrop'
- 原因:系统安装 postfix 邮件服务或自带服务时自动创建。
- 解决方法:
- 属于正常行为,更新基线即可:
sudo rkhunter --propupd
- 属于正常行为,更新基线即可:
5.3 SSH 配置不匹配
Warning: SSH configuration option 'PermitRootLogin': yes
Rkhunter configuration option 'ALLOW_SSH_ROOT_USER': no
- 原因:rkhunter 配置禁止 root 登录,但 SSH 允许。
- 解决方法:
- 如果确实需要 root 登录,修改 rkhunter 配置:
ALLOW_SSH_ROOT_USER=Yes - 如果不需要 root 登录,建议修改 SSH 配置:
PermitRootLogin no sudo systemctl restart ssh
- 如果确实需要 root 登录,修改 rkhunter 配置:
5.4 隐藏文件
Warning: Hidden file found: /etc/.resolv.conf.systemd-resolved.bak
Warning: Hidden file found: /etc/.updated
- 原因:系统备份或更新文件。
- 解决方法:
- 可忽略,或者删除不必要的隐藏文件:
sudo rm /etc/.resolv.conf.systemd-resolved.bak sudo rm /etc/.updated sudo rkhunter --propupd
- 可忽略,或者删除不必要的隐藏文件:
6️⃣ 自动化日常扫描
可以使用 cron 实现每日自动扫描:
- 创建脚本
/etc/cron.daily/rkhunter-check:
sudo tee /etc/cron.daily/rkhunter-check > /dev/null <<'EOF'
#!/bin/sh
# Daily RKHunter scan
/usr/bin/rkhunter --check --skip-keypress --nocolors --report-warnings-only
EOF
- 添加执行权限:
sudo chmod +x /etc/cron.daily/rkhunter-check
每天扫描会生成日志,可通过邮件或定期查看日志了解系统安全状态。
7️⃣ 总结
- RKHunter 是 Linux 系统中常用的 Rootkit 检测工具。
- Ubuntu 默认禁用网络更新(WEB_CMD=””),也可手动联网更新镜像。
- 初次使用需建立基线 (
--propupd),扫描时误报可通过配置和删除不必要文件解决。 - 结合 cron 可以实现每日自动扫描和报告。
通过本文步骤,你可以在 Ubuntu 系统上 安全、稳定地部署 RKHunter,同时减少误报,提高系统安全监控效率。