如何在UbuntuVPS上使用RKHunter防范Rootkit

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

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

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍


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

一个潜在的问题是 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*

在里面,我们应该看到一个“文件”目录和一个安装程序脚本。 我们将使用它来安装我们的程序。 指定将其安装在 /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

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

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

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

初始测试运行


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

我们应该做的第一件事是确保我们的 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 键继续。 您可以随时查看生成的警告,但之后的日志中会有更详细的信息。 按 enter 直到所有测试都运行。

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

sudo nano /var/log/rkhunter.log

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

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

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

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

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

根据已知良好值配置 RKHunter


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

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

sudo nano /etc/rkhunter.conf

设置邮件通知


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

 MAIL-ON-WARNING =“ your_user  @领域 .com ”

如果你设置了本地邮件,你可以把这个当你以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"

允许 Root 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 更新为新的文件属性。

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

贾斯汀·艾林伍德