如何在 Ubuntu VPS 上使用 RKHunter 防范 Rootkits

金钱(警告)

** 状态:** 被贬值

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

** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。

** 相反,请参阅:** 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本撰写的指南。

介绍


有许多方式,您的服务器可以被远程系统和恶意软件攻击,这是一个持续和积极的过程,以防御潜在的威胁。

一个潜在的担忧是rootkits.rootkits是恶意入侵者秘密安装的软件,允许用户继续访问服务器,一旦安全受到侵犯.这是一个极其危险的问题,因为即使用户最初用来获取访问的输入向量被修复后,他们也可以继续使用他们安装的rootkit进入服务器。

一个可以帮助您保护您的系统免受这些类型的问题的工具是 rkhunter. 该软件会检查您的系统对已知 rootkit 的数据库。

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

安装RKHunter从源头


由于Ubuntu存储库有一个过时的rkhunter版本,其中包含一个未修补的错误,所以我们将从源头安装,以便我们的程序正常运行。

截至本文, 1.4.0 是最新版本,但您可以前往 项目的首页 查看是否有更新的版本:

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

一旦完成下载,提取文件并输入结果的目录:

1tar xzvf rkhunter*
2cd rkhunter*

内部,我们应该看到一个文件目录,一个安装程序脚本. 我们将使用这个来安装我们的程序. 指定布局,以便在 /usr目录中安装它,以便它在我们的默认路径:

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

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

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

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

您可以配置此设置,如果您愿意,但为了简化,我们不会配置面向网络的邮件服务器。

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

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

初步测试运行


在我们开始配置之前,我们将使用默认设置进行几次测试,以获得软件如何运作的想法,并设置一个基线,以指导我们的修改。

我们应该做的第一件事是确保我们的 rkhunter 版本是最新的. 如果你确实从网站上得到最新的 tarball,它不应该做任何事情,但最好无论如何检查:

1sudo rkhunter --versioncheck

1[ Rootkit Hunter version 1.4.0 ]
2
3Checking rkhunter version...
4  This version  : 1.4.0
5  Latest version: 1.4.0

接下来,我们需要执行类似的选项来更新我们的数据文件. 这些文件包含 rkhunter 检查的信息,以确定文件或行为是否可疑。

1sudo rkhunter --update

随着我们的数据库文件的更新,我们可以设置我们的基线文件属性,以便 rkhunter 可以通知我们,如果它跟踪的任何重要的配置文件发生变化。

1sudo rkhunter --propupd

1File created: searched for 167 files, found 136

最后,我们已经准备好执行我们的初始运行,这将产生一些警告,这是预期的行为,因为rkhunter配置为通用,Ubuntu在某些地方偏离预期的默认功能。

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

它将运行一个测试部分,然后要求您按入以继续。您可以查看在进行过程中产生的警告,但在日志后将有更详细的信息。

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

1sudo nano /var/log/rkhunter.log

搜索文件的单词警告。你会看到一些不同的警告,这是由我们的文件系统的不同方面造成的。我们将配置rkhunter忽略我们知道是无害的下一部分。

一些更改,如对passwd文件的更改,只会出现,因为它们已经被我们与apt下载的帮助工具更改了。

检查日志的另一个替代方案是让 rkhunter 只将警告打印到屏幕上,而不是所有检查:

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

然后您可以复制和粘贴这些信息,以便我们在我们的配置文件中实现更改。

根据已知的价值观配置 RKHunter


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

开始使用 root 特权打开 rkhunter 配置文件:

1sudo nano /etc/rkhunter.conf

设置邮件通知


您可以做的第一件事是设置电子邮件通知,如果您希望在 rkhunter 遇到警告时收到这些通知。

MAIL-ON-WARNING="[email protected]"

如果您设置了本地邮件,则可以将此设置为当您登录为 root 时接收邮件:

1MAIL-ON-WARNING="root@localhost"

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

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

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

Whitelist 已知脚本文件


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

我们可以设置一个SCRIPTWHITELIST参数,告诉rkhunter这些都应该是脚本文件:

1SCRIPTWHITELIST="/usr/sbin/adduser"
2SCRIPTWHITELIST="/usr/bin/ldd"
3SCRIPTWHITELIST="/usr/bin/unhide.rb"
4SCRIPTWHITELIST="/bin/which"

这将防止这些文件在所有后续检查中触发虚假阳性。 请注意,这些白名单是特定测试的特征,所以我们只是标记我们知道这些文件不应该是二进制的。

在 /dev 目录中的文件清单


/dev目录中,某些文件会引发对 rkhunter 的警告,这些都是实际上没有指向任何错误的实施细节。

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

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

我们必须处理的下一个警告是,在 /dev 中有一个隐藏的目录. 这也是预期的。

1ALLOWHIDDENDIR="/dev/.udev"

这些是保存在此目录中的基本配置文件,以便实用程序可以访问它们,无论分区方案和安装状态如何。

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

1ALLOWHIDDENFILE="/dev/.blkid.tab"
2ALLOWHIDDENFILE="/dev/.blkid.tab.old"
3ALLOWHIDDENFILE="/dev/.initramfs"

允许 root SSH 登录


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

此选项指定了 root 用户是否可以使用 SSH 登录。许多安全实践建议禁用 root 登录。

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

1ALLOW_SSH_ROOT_USER=yes

保存并关闭文件,当你完成。

检查配置


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

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

1sudo rkhunter -C

如果这给了您任何输出,您需要再次查看配置以调整参数。

获得配置文件以正常工作顺序后,您可以再次运行测试,以查看是否有任何警告。

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

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

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

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

1sudo rkhunter --propupd

完成後,您可以再次執行檢查命令,並確認不會產生任何錯誤。

如果您忘记更新文件属性,您可以选择检查邮件通知,如果您配置了此设置,我们可以通过检查根邮箱来访问邮件:

1sudo mail

您应该看到一个信息,您可以通过第二列的号码访问。

您可以通过键入离开邮件屏幕:

1quit

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

设置一个Cron工作来自动化检查


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

这是最有用的,如果你可以让它电子邮件你的常规电子邮件地址,所以你更有可能检查它. 更改在 /etc/rkhunter.conf 文件中的 MAIL-ON-WARNING` 参数到你的常规电子邮件,如果你还没有这样做。

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

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

1sudo crontab -l

如果这返回了一个 crontab,那么最好在我们犯了一个错误的情况下备份文件。

1sudo crontab -l > crontab.bak

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

1sudo crontab -e

如果这是你第一次运行这个命令,它会要求你选择你想使用的编辑器. 一个安全的选择是纳米,如果你没有任何其他编辑器的偏好。

之后,您将被带入您的编辑器,您的文件将预先填写一些评论,解释如何写crontab。

有很多复杂的方法来编写 cron 规格,可以在许多间隔内运行命令. 为了我们的目的,我们只需要决定每天在何时运行命令。

我們將使用的格式是「分鐘時間 * * * 命令」。 時間應以 24 小時格式寫成(例如,15 為 3pm)。

所以,如果我们想在4点15分执行这个命令,我们可以在文件底部输入:

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

--cronjob 选项告诉 rkhunter 不要以彩色格式输出,也不需要互动键。更新选项确保我们的定义是最新的。

cron 实用程序将在 4:15 点运行此命令,如果有任何输出,rkhunter 命令本身将发送电子邮件给我们的用户通知他们,如果没有发现问题,则不会收到电子邮件。

结论


现在你有 rkhunter 安装,配置,并自动化,它应该为你做的工作,在大多数情况下。

还值得注意的是,当您在计算机上进行软件更改时,rkhunter 可能会在下一次运行时报告差异,建议在您更改后,至少运行sudo rkhunter --propupd以更新 rkhunter 到新的文件属性。

因为这个软件引用已知的良好价值观和系统声明,你已经允许,这是最好的安装和配置后,你已经配置了大多数的软件为你的安装. 这样做之前配置你的软件将导致很多虚假的正面,而等待太长时间可能会导致入侵和不知道如果你是白名单坏的文件。

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus