如何使用RKHunter来防范的Rootkits的Ubuntu VPS

的rootkit是任何面向因特网的计算机的一个严重问题。一个rootkit允许入侵者将继续访问入口的初始点被固定后,即使被感染机器。在本文中,我们将介绍如何检查服务器对使用名为rkhunter实用知名的rootkit。

介绍


将任何计算机暴露于互联网在某些方面是有风险的。 有许多方法可以让您的服务器被远程系统和恶意软件攻击或攻击,这是一个持续和主动的过程,以防御潜在的威胁。

一个潜在的关注是rootkit。 Rootkit是由恶意入侵者秘密安装的软件,以允许用户在违反安全性后继续访问服务器。 这是一个非常危险的问题,因为即使在用户最初用于获取访问权的入口向量是固定的之后,他们仍然可以使用他们安装的rootkit继续进入服务器。

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

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

从源安装RKHunter


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

更改到您的主目录并下载文件。 在撰写本文时,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

您将被询问有关邮件服务器设置的一些问题。 你可以配置这个,如果你想,但为了简洁,我们不会配置面向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

在文件中搜索词“Warning”。 您将看到由我们的文件系统的不同方面引起的许多不同的警告。 我们将配置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@domain.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"

允许根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来每天运行检查,以便我们有关于入侵的最新信息。

如果您可以通过电子邮件发送常规电子邮件地址,以便您更有可能检查它,这是最有用的。 改变MAIL-ON-WARNING在参数/etc/rkhunter.conf文件到您定期的电子邮件,如果你还没有这样做的话。

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

首先,我们可以看到root用户是否已经有一个crontab:

sudo crontab -l

如果这返回一个crontab,那么最好备份文件,以防我们犯了错误。 你可以通过键入:

sudo crontab -l > crontab.bak

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

sudo crontab -e

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

然后,您将被带入您的编辑器,您的文件将预填充一些注释,解释如何编写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不以彩色格式输出,并且不需要交互式按键。 更新选项确保我们的定义是最新的。 安静选项抑制所有输出。

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

结论


现在你已经安装,配置和自动化,它应该为你的工作大部分。 请确保如果您是依靠电子邮件提醒,请定期检查并回应产生的任何警告。

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

由于此软件引用了已允许的已知良好值和系统状态,因此最好在为安装配置了大多数软件后直接安装和配置此软件。 在配置软件之前执行此操作将导致大量的误报,而等待时间过长会导致入侵,并且不知道是否将白名单列入了恶意文件。

作者:Justin Ellingwood