Linux 上的 Tripwire 入侵检测教程
无论您是经验丰富的系统管理员还是 Linux 初学者,无论您管理的是企业级网络还是家庭网络,您都必须意识到安全问题。
一个常见的错误是认为如果您是家庭用户,拥有很少的面向世界的计算机,那么您就可以免受恶意攻击。攻击者不会从您那里获得他可以从大型企业网络获得的信息,但这并不意味着您是安全的。您越早意识到安全性越好。
虽然网络安全主题很庞大,但本教程将介绍一个名为 Tripwire 的有趣软件,它是一个 HIDS(基于主机的入侵检测系统)。当然,除了了解 Tripwire 之外,您还将了解 IDS 是什么、它的用途、陷阱和陷阱。一点网络知识肯定会对你有所帮助,再加上一定程度的偏执(这是不是一个笑话,这是你的决定)。
在本教程中您将学习:
什么是入侵检测系统?
如何在主要 Linux 发行版上安装 Tripwire
如何通过命令使用 Tripwire
如何配置 Tripwire 设置文件
什么是入侵检测系统?
入侵检测系统(以下称为 IDS)是监视网络中任何可疑活动的软件应用程序,此处的关键词是“监视”。 IDS 和防火墙之间的区别在于,前者通常只报告任何异常活动,而防火墙是为阻止所述活动而创建的应用程序。所以这基本上是被动与主动的情况。
正如我们上面所说,虽然您可以在 SOHO 网络中使用 IDS,但它的真正价值体现在具有大量子网和有价值数据的大型网络中。还有 IDPS,其中额外的“P”代表预防,这意味着 IDPS 还将尝试重新配置防火墙以反映新的威胁情况,因此在这种情况下,被动与主动相遇。
我们将让您更深入地研究有关该主题的丰富文档,因为一般而言,安全性不是我们文章的主题,我们将尝试重点关注 IDS 的类型,这样我们就可以进入我们的主题,即 tripwire 。
IDS的主要类型
有NIDS和HIDS,即Network IDS和Host-based IDS。第一个尝试通过监视网络流量(例如 Snort)来检测入侵者,而 HIDS 则监视受监视系统上的文件更改、系统调用、ACL 等,以达到相同的结果。
有时HIDS也可以配置为监视网络数据包,就像NIDS一样,但这不是一篇关于IDS一般分类的文章。关于各种 IDS 类型的效率有不同的观点,但我们认为使用正确的工具完成正确的工作。
HIDS 是设计的第一种入侵检测软件,并且,正如人们可以轻松假设的那样,当与外界的流量不太频繁时(因为当时网络流量充其量是相当稀疏的),或者网络设计的本质是允许根据流量使用 HIDS 和 NIDS(想想 DMZ)。
如何在主要 Linux 发行版上安装 Tripwire
在我们开始之前,有一个非常重要的建议:尝试在安装系统后立即安装 tripwire,因为这样系统更有可能是干净的,不会被恶意人员更改。 Tripwire 创建一个与您的系统相关的信息数据库,然后将其与定期运行时发现的信息进行比较(它应该这样做),以便从中得到一些实际用途。
您可以使用下面适当的命令通过系统的包管理器安装 Tripwire。
要在 Ubuntu、Debian 和 Linux Mint 上安装 Tripwire:
$ sudo apt install tripwire
要在 Fedora、CentOS、AlmaLinux 和 Red Hat 上安装 Tripwire:
$ sudo dnf install tripwire
要在 Arch Linux 和 Manjaro 上安装 Tripwire(通过 yay 从 AUR 安装):
$ yay -S tripwire-git
根据您的发行版,您会在安装过程中看到一些提示。这些是不言自明的,并且允许您配置 Tripwire 的一些设置。
系统将要求您配置密码,如下所示。请确保您不要忘记该密码!
如何使用 Tripwire
安装 Tripwire 后,我们就可以开始使用它了。
Tripwire 通过使用模式来工作。基本上来说,模式是 Tripwire 可以执行的功能。所有 Tripwire 模式也可以被视为操作,并且每个与操作相关的标志(例如
–init
)都有一个简短的等效标志,前缀为-m
。因此,为了初始化数据库,我们可以这样写:# tripwire -m i
经过所有这些讨论后,人们显然会想要使用 tripwire,因此可以通过使用检查模式来完成:
# tripwire -m c
在检查模式下经常使用的一个标志是
-I
,它代表交互式。扫描时你会发现 Tripwire 发现了大量问题,但不要惊慌。当然,不要仅仅依靠 HIDS 来检查系统的完整性。众所周知,IDS 软件通常会产生误报/误报,因此必须对此类系统的报告持保留态度。因此,我们的检查模式命令变为:# tripwire -m c -I
在我们进入数据库更新模式之前,我们必须提醒您查看手册。每种模式都有其特定的选项,您可能会发现这些选项很有用,以及所有或某些模式通用的其他选项,例如
-v
、-c
或-f
(我们邀请您了解他们的作用)。如果您讨厌man
命令,Tripwire 的 GitHub 上还有一份手册。不用说,由于您必须经常使用这些命令,因此您应该使用 cron 或任何用于调度的工具。例如,root 的 crontab 中的这一行就可以解决问题:45 04 * * * /usr/sbin/tripwire -m c
这将在每天凌晨 04:45 运行该命令。
随着时间的推移,系统上的文件正在发生变化。系统更新、新安装,所有这些都会增加真实情况与 Tripwire 对您系统(数据库)的了解之间的差异。因此,数据库必须定期更新,以获得尽可能准确的报告。我们可以通过输入以下内容轻松完成此操作:
# tripwire -m u
如果您想查看当前形式的数据库,
twprint
可以帮助您:# twprint -m d
我们强烈建议,特别是在慢速终端或远程连接上,但如果您想实际读取任何内容,请使用像 less 这样的分页器或将输出重定向到文件。通过
wc
管道传输上述命令的输出会返回 769078 行。你被警告了。如果您远程参与系统安全,您就会知道“策略”一词的含义。用 Tripwire 术语来说,您可以在文件中定义策略,该文件将包含有关将监视哪个系统对象以及如何监视的规则。
#
开始注释,策略文件中一行的一般规则是:#This is a comment and an example # object -> property /sbin -> $(ReadOnly) ! /data1
因此,对象基本上是系统中的一个文件夹,这里第二行显示了如何使用
!
运算符(C,有人吗?)告诉 tripwire 单独保留 /data1 目录。关于对象,请注意,像$HOME
或~
这样的名称永远不是有效的对象标识符,您可能会收到错误消息。在编写或更新策略文件(规则属性、变量等)时应该注意很多事情,而 Tripwire 在这方面看起来很有前途且用途广泛。您可以在手册页中找到使用 tripwire 的策略文件选项可以执行的所有操作,并在/etc/tripwire/twpol.txt
中找到一些很好的示例。twadmin 在创建或检查配置文件或密钥时也会很有帮助。例如,此命令将打印当前状态的策略文件:
# twadmin -m p
最后是测试模式。如果监控工具不能正确地向您报告,那么它有什么用呢?这就是测试模式的作用。它根据配置文件中的设置(下面的第一个示例)或作为命令行选项(下面的第二个示例)向管理员发送电子邮件,如果正确接收邮件,则一切顺利。当然,这假设您的邮件系统已正确设置。让我们来看看:
# tripwire -m t # tripwire -m t -e $user@$domain
绊线文件
Tripwire 生成了一些不同的配置文件。它们存在于 /etc/tripwire
目录中。
$ ls /etc/tripwire
$hostname-local.key site.key tw.cfg twcfg.txt tw.pol twpol.txt
当然,$hostname
是任何 Linux 机器上 hostname 命令的输出。现在,这两个 .key
文件是 tripwire 的站点范围密钥和本地密钥,并且如您所见,有两个 .txt 文件,一个 .cfg
和一个.pol
文件。如果您仔细观察,您可能会注意到这四个文件的命名模式,您是对的。 .cfg
和 .pol
文件是从相应的 .txt
文件生成的,如下所示:
# twadmin -m F /etc/tripwire/twcfg.txt
# twadmin -m F /etc/tripwire/twpol.txt
这将分别生成 tw.cfg 和 tw.pol 文件,正如我们所说,它们对于配置 tripwire 至关重要。 tw.cfg 是配置程序的文件,tw.pol 定义策略。让我们看一下语法。
tw.cfg
副标题是故意误导的,因为 tw.cfg 是从文本文件生成的,与 sendmail 配置的完成方式非常相似,而且它是二进制的,普通人无法读取。
因此,我们要做的就是更改 twcfg.txt 中对象的值,然后“重新编译”tw.cfg。考虑到该计划的性质,您会发现没有太多可以更改的选项。这是我们设置的前几行:
ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
[...]
LATERPROMPTING =false
[...]
再次邀请您以 root 身份打开 twcfg.txt 文件并根据您的喜好进行调整。
台湾波尔
二进制与文本的故事也在这里成立,所以我们不会再说了。相反,我们将重点关注 twpol.txt 文件中您可能只想更改的一些熟悉的值。一般语法与上面相同。现在,您可能想要在此处和 twcfg.txt 中更改一个值(在那里您将看到它作为 ROOT
对象,此处为 TWBIN
) 是可执行文件所在的位置。
如果您使用 aptitude 或 dnf 等包管理器进行安装,则该位置很可能是 /usr/sbin
。但是,如果您从源代码安装,因为正如您所见,并不是每个人都为其发行版打包 tripwire,也许您安装到了 /usr/local
,如果您不更改这些位置,则什么都不会起作用正如它应该。但是,我们建议使用符号链接:
# ln -s /usr/local/bin/tripwire /usr/sbin/tripwire
与任何此类文件一样,该策略定义系统中的哪些位置具有何种重要性(例如,/boot
至关重要)。这是策略文件的本质。您当然可以更改这些值,但我们建议您谨慎行事并给出一个很好的理由。例如,关键安全部分定义为:
SEC_CRIT =$(IgnoreNone) -SHa ; # Critical files that cannot change
定义所有安全类别后,twpol.cfg 定义每个重要位置的安全重要性,如上所示。该策略文件几乎有 300 行长,但有很好的注释,可以让您的生活更轻松。希望您的第一个 Tripwire 安装不会投入生产,因此请花一些时间尝试策略定义,直到找到正确的位置。
最后的想法
这次 IDS 之旅(!)很短,考虑到可以学到很多关于主题、用例、现实示例、测试等的知识。我们只是想向您介绍一般的 Tripwire 和入侵检测系统,让您思考什么安全场景最适合您的站点。