总结:
问题:如何配置 Tripwire 来监视特定路径下的所有内容?我当前的配置似乎只查看给定路径中的某些文件/目录,而不是所有内容。
背景/完整故事:
我最近在一台包含一些易受攻击的 PHP 代码的服务器上安装了 Tripwire。我添加了一条名为“网站”的规则,其中包含从该服务器运行的多个网站(以下代码片段)。
# Rulset for websites
(
rulename = "Websites",
severity = $(SIG_HI),
emailto = "[email protected]"
)
{
/home/foouser1/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser2/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser3/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser4/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser5/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser6/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser7/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser8/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser9/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser10/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser11/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser12/www/ -> $(SEC_CRIT) (recurse = 1);
}
然后我使用以下方法更新了策略:
/usr/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt
我按预期输入了我的站点密钥,并且策略已更新且没有错误。
当我运行检查时,没有错误,也没有违规。
然后,为了测试它,我在其中一个文件(/home/foouser1/www/foo/bar/js/script.js
)中添加了一个额外的空格,该文件之前(并且多次)被盗用。这应该会触发违规。
重新运行检查(tripwire --check -R Websites
-v)显示几个问题:
- Tripwire 忽略了该文件,即使它位于声明的文件路径下方
/home/foouser1/www
。 - 它会扫描 中的一组文件
/home/foouser1/www
,但不是全部。
最后,当我将目录内容/home/foouser1/www
与 tripwire 扫描的文件数量进行比较时,发现有很大的差异。
find /home/foouser1/www/ -type f -print | wc -l
显示该目录中有 3,000 多个文件需要受到 tripwire 的监视。
find /home/foouser1/www/ -type d -print | wc -l
显示该目录中有 192 个子目录需要受到 tripwire 的监视。
Tripwire 报告称它仅观察了 192 个物体。
答案1
事实证明,(recurse=1) 是不需要的。默认情况下,文件和子目录的递归检查处于启用状态。但是,为了捕获微小的更改(例如单字节更改),您需要检查文件的哈希值(SHA 是首选)。因此,您可以使用以下变量作为掩码:
SEC_HACK_DETECT = $(IgnoreNone)-a ; # Files that should not change
在这两个更改之间,Tripwire 可以按预期运行。