介绍
将任何计算机暴露于互联网在某些方面是有风险的。 有许多方法可以让您的服务器被远程系统和恶意软件攻击或攻击,这是一个持续和主动的过程,以防御潜在的威胁。
一个潜在的关注是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到新文件的属性。
由于此软件引用了已允许的已知良好值和系统状态,因此最好在为安装配置了大多数软件后直接安装和配置此软件。 在配置软件之前执行此操作将导致大量的误报,而等待时间过长会导致入侵,并且不知道是否将白名单列入了恶意文件。