如何使用 RKHunter 来防范 Ubuntu VPS 上的 Rootkit如何使用 RKHunter 来防范 Ubuntu VPS 上的 Rootkit如何使用 RKHunter 来防范 Ubuntu VPS 上的 Rootkit如何使用 RKHunter 来防范 Ubuntu VPS 上的 Rootkit
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何使用 RKHunter 来防范 Ubuntu VPS 上的 Rootkit

状态:已弃用

本文涵盖不再受支持的 Ubuntu 版本。如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

  • 升级到 Ubuntu 14.04。
  • 从 Ubuntu 14.04 升级到 Ubuntu 16.04
  • 将服务器数据迁移到支持的版本

原因:

请参阅:

介绍

将任何计算机暴露在互联网上在某些方面是有风险的。您的服务器受到远程系统和恶意软件的危害或攻击的方式有很多种,这是一个持续和主动的过程,可以保护您自己免受潜在威胁。

一个潜在的问题是 Rootkit。 Rootkit 是由恶意入侵者秘密安装的软件,一旦安全遭到破坏,允许该用户继续访问服务器。这是一个极其危险的问题,因为即使在用户最初用来获取访问权限的入口向量被修复之后,他们仍然可以继续使用他们安装的 Rootkit 进入服务器。

一种可以帮助您保护系统免受此类问题影响的工具是 rkhunter。该软件根据已知 Rootkit 数据库检查您的系统。此外,它还可以检查其他系统文件以确保它们符合预期的属性和值。

在本指南中,我们将安装和配置 rkhunter 来保护我们的 Ubuntu 12.04 VPS。

从源安装 RKHunter

因为 Ubuntu 存储库有一个过时的 rkhunter 版本,其中包含一个未修补的错误,我们将从源代码安装,以便我们的程序能够正常运行。

更改到您的主目录并下载文件。在撰写本文时,1.4.0 是最新版本,但您可以转到项目主页查看是否有更新的版本可用:

cd
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.0/rkhunter-1.4.0.tar.gz

下载完成后,解压缩文件并进入生成的目录:

tar xzvf rkhunter*
cd rkhunter*

在里面,我们应该看到一个 \files 目录和一个安装程序脚本。我们将使用它来安装我们的程序。指定将其安装在 /usr 目录中的布局,以便它位于我们的默认路径:

sudo ./installer.sh --layout /usr --install

这将安装软件和配置文件。

现在,我们已经安装了 rkhunter,但我们仍然需要一些实用程序来使用它的所有功能。我们可以从 Ubuntu 存储库中获取这些:

sudo apt-get update
sudo apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 ssl-cert unhide.rb mailutils

您将被问到一些关于邮件服务器设置的问题。如果你愿意,你可以配置它,但为了简洁起见,我们不会配置面向网络的邮件服务器。选择“仅限本地”以遵循我们的示例。

如果您在本地安装,您可以将系统邮件命名为任何名称。否则,请确保使用完全限定的域名。

现在,我们的软件已安装并准备好进行测试和配置。

初始测试运行

在我们开始配置之前,我们将使用默认设置进行一些测试运行,以了解软件的运行方式并设置一个基准来指导我们的修改。

我们应该做的第一件事是确保我们的 rkhunter 版本是最新的。如果您确实从该站点获得了最新的 tarball,则不需要执行任何操作,但最好还是检查一下:

sudo rkhunter --versioncheck
[ Rootkit Hunter version 1.4.0 ]

Checking rkhunter version...
  This version  : 1.4.0
  Latest version: 1.4.0

接下来,我们需要执行类似的选项来更新我们的数据文件。这些文件包含 rkhunter 检查以确定文件或行为是否可疑的信息。使这些文件保持最新对于准确评估您的系统至关重要:

sudo rkhunter --update

刷新数据库文件后,我们可以设置基线文件属性,以便 rkhunter 可以在它跟踪的任何基本配置文件发生更改时提醒我们。我们需要告诉 rkhunter 检查当前值并将它们存储为已知的良好值:

sudo rkhunter --propupd
File created: searched for 167 files, found 136

最后,我们准备执行初始运行。这将产生一些警告。这是预期的行为,因为 rkhunter 被配置为通用的,而 Ubuntu 在某些地方与预期的默认值不同。这些我们之后会告诉rkhunter:

sudo rkhunter -c --enable all --disable none

它将运行一部分测试,然后要求您按回车键继续。您可以随时查看生成的警告,但之后的日志中会有更详细的信息。按 enter 直到运行所有测试。

现在,我们应该查看日志并检查生成的所有警告:

sudo nano /var/log/rkhunter.log

在文件中搜索“Warning”一词。您会看到许多不同的警告,这些警告是由我们的文件系统的不同方面引起的。我们将在下一节中配置 rkhunter 以忽略我们认为无害的警告。

一些更改,例如对 passwd 文件的更改,只是因为它们已被我们使用 apt 下载的辅助实用程序更改而显示出来。这些文件的时间戳比 rkhunter 数据库文件更新。它们将在下一次运行时消失。

检查日志的另一种方法是让 rkhunter 只在屏幕上打印警告,而不是所有检查:

sudo rkhunter -c --enable all --disable none --rwo

然后您可以将此信息复制并粘贴到某处,以便我们可以在配置文件中实施更改。

根据已知的良好值配置 RKHunter

现在我们有了一些关于 rkhunter 如何查看我们系统的信息,我们可以告诉它要忽略或以不同方式处理哪些文件和应用程序,以避免误报。

首先使用 root 权限打开 rkhunter 配置文件:

sudo nano /etc/rkhunter.conf

设置邮件通知

如果您想在 rkhunter 发出警告时收到电子邮件通知,您可以做的第一件事就是设置电子邮件通知。您可以在这里执行此操作:

<前>

如果你设置了本地邮件,你可以在以 root 身份登录时将此设置为接收邮件:

MAIL-ON-WARNING="root@localhost"

请注意,邮件程序是在您安装它们时配置的,因此此功能是否正确取决于您的选择。

一个相关的配置选项指定了发送邮件的程序和选项:

MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"

白名单已知脚本文件

接下来,我们将修复告诉我们系统上的某些二进制包已被脚本替换的警告。一些发行版(包括 Ubuntu)使用文件的脚本版本而不是二进制版本。

我收到的四个警告都是这方面的例子。我们可以设置一个 SCRIPTWHITELIST 参数来告诉 rkhunter 这些应该是脚本文件:

SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/unhide.rb"
SCRIPTWHITELIST="/bin/which"

这将防止这些文件在所有后续检查中触发误报。请注意,这些白名单特定于某些测试,因此我们只是标记我们知道这些文件不应该是二进制文件。其他更改仍然可以触发警告,这正是我们想要的。

/dev 目录中的白名单文件

/dev 目录中的某些文件会触发 rkhunter 的警告。这些都是实现细节,实际上并没有指出任何错误。他们应该在那里,并得到发行版的支持。

我们需要处理三种警告类型。第一个是目录中存在“可疑文件”的警告。我们将通过在配置中放置此行来特别允许此文件:

ALLOWDEVFILE="/dev/.udev/rules.d/root.rules"

我们必须处理的下一个警告是 /dev 中有一个隐藏目录。这也是意料之中的。它是包含前一个文件的目录:

ALLOWHIDDENDIR="/dev/.udev"

最后一个警告是针对隐藏文件的。这些是保存在此目录中的基本配置文件,因此无论分区方案和安装状态如何,实用程序都可以访问它们。

添加这些行以允许这些文件存在:

ALLOWHIDDENFILE="/dev/.blkid.tab"
ALLOWHIDDENFILE="/dev/.blkid.tab.old"
ALLOWHIDDENFILE="/dev/.initramfs"

允许根 SSH 登录

下一步只是断言检查。当您运行 rkhunter 时,它会检查其配置文件中的参数并将其与 SSHD 配置文件中的值进行比较。

此选项指定 root 用户是否可以使用 SSH 登录。许多安全实践建议禁用 root 登录。如果您禁用了 root 登录,则应将此参数保留为 \no。

如果您需要通过 SSH 进行 root 登录,您应该将此参数更改为 \yes 以便 rkhunter 可以检查此设置并将此设置标记为有效:

ALLOW_SSH_ROOT_USER=yes

完成后保存并关闭文件。

检查配置

现在我们已经配置了 rkhunter,您需要验证配置并检查一切是否按预期工作。

第一步是检查配置文件本身是否有效。您可以对其运行测试以查看 rkhunter 是否会接受您分配的所有值:

sudo rkhunter -C

如果这给您返回任何输出,您需要再次重新访问配置以调整您的参数。

在您获得配置文件后,您可以再次运行测试以查看是否有任何警告。

sudo rkhunter -c --enable all --disable none --rwo

这应该会产生一个警告,因为我们的 rkhunter 配置本身已被修改:

Warning: The file properties have changed:
         File: /etc/rkhunter.conf
         Current hash: fa8ad80a18100e669be507e69d0cbb88348fc07d
         Stored hash : f9015108a2f6d8044126351cf16235c55993ff7a
         Current inode: 2098189    Stored inode: 2100424
         Current size: 37607    Stored size: 37359
         Current file modification time: 1388443781 (30-Dec-2013 17:49:41)
         Stored file modification time : 1388442019 (30-Dec-2013 17:20:19)

我们应该在修改此文件后再次更新文件属性。现在输入:

sudo rkhunter --propupd

完成后,您可以再次运行检查命令,可以看到没有错误产生。

如果您配置了忘记更新文件属性,则可以选择检查邮件通知。由于我们配置了本地邮件,我们可以通过检查根邮箱来访问消息:

sudo mail

您应该会看到一条消息,您可以通过第二列中的数字访问该消息。

您可以通过键入以下内容退出邮件屏幕:

quit

如果您设置了远程电子邮件,您也可以检查它。它可能在您的垃圾邮件文件夹中,所以如果您没有在常规收件箱中收到它,请查看那里。

设置 Cron 作业以自动检查

现在您已经配置了 rkhunter 并验证它运行正常,自动化系统可能是个好主意。我们可以将 rkhunter 设置为每天运行检查,以便我们获得有关入侵的最新信息。

如果您可以让它通过您的常规电子邮件地址发送电子邮件,这将非常有用,这样您就更有可能查看它。如果您还没有这样做,请将 /etc/rkhunter.conf 文件中的 MAIL-ON-WARNING 参数更改为您的常规电子邮件。

我们想要以 root 权限运行 rkhunter,就像我们一直在做的那样,所以我们应该将它添加到 root 用户的 crontab 中。重要的是要记住不要将它添加到系统 crontab 中,因为这可能会在升级中被替换并清除您的更改。

首先,我们可以通过键入以下命令查看 root 用户是否已经有一个 crontab:

sudo crontab -l

如果这返回一个 crontab,那么最好备份文件以防我们出错。您可以通过键入以下内容来做到这一点:

sudo crontab -l > crontab.bak

之后,我们可以通过发出以下命令来编辑 root 用户的 crontab:

sudo crontab -e

如果这是您第一次运行此命令,它会要求您选择要使用的编辑器。如果您对任何其他编辑器没有偏好,则安全的选择是 nano。

之后,您将进入您的编辑器,您的文件将预先填充一些解释如何编写 crontab 的注释。

有很多复杂的方法来编写可以在多个时间间隔运行命令的 cron 规范。出于我们的目的,我们只需要决定每天什么时候运行命令。与大多数服务一样,在夜间运行通常是最佳选择:

我们将使用的格式是 minutes hours * * * command。时间应以 24 小时格式书写(例如,15 表示下午 3 点)。我们要使用的命令是 /usr/bin/rkhunter --cronjob --update --quiet。

因此,如果我们想在凌晨 4:15 运行此命令,我们可以在文件底部键入:

15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet

--cronjob 选项告诉 rkhunter 不要以彩色格式输出并且不需要交互式按键。更新选项确保我们的定义是最新的。 quiet 选项抑制所有输出。

cron 实用程序将在凌晨 4:15 运行此命令,如果有任何输出,rkhunter 命令本身将通过电子邮件向我们的用户发出警报。如果未发现问题,则不会收到电子邮件。

结论

现在您已经安装、配置并自动化了 rkhunter,它应该为您完成大部分工作。如果您依赖电子邮件提醒,请确保您定期检查它们并对产生的任何警告做出回应。

记住当您在计算机上更改软件时,rkhunter 可能会在下次运行时报告差异,这也很有帮助。建议在进行更改后,至少运行 sudo rkhunter --propupd 将 rkhunter 更新为新的文件属性。

由于该软件引用了您允许的已知良好值和系统状态,因此最好在为安装配置完大部分软件后直接安装和配置它。在配置您的软件之前这样做会导致很多误报,而等待太久会导致入侵并且不知道您是否将不良文件列入白名单。

贾斯汀·埃林伍德

©2015-2025 艾丽卡 support@alaica.com