我想审核 Ubuntu 服务器以获取所有已执行文件和内核读取的所有文件的列表

我想审核 Ubuntu 服务器以获取所有已执行文件和内核读取的所有文件的列表

我希望能够在预构建的服务器上进行检测和分析,并获取每个读取文件的列表。

我还想确定内核读取哪些文件来执行程序、加载库或仅由应用程序读取。

我以为这会很简单。 SELinux 默认拒绝,在宽容模式下,它会记录所有内容。因此,在没有规则的情况下安装它并在宽容模式下运行它,所有内容都应该被记录。

请注意,这个问题与Security SE 上的这个因为我正在经历与那张海报类似的事情。还有一个问题是,在 SELinux 或任何其他审核包下运行会引入大量负载,并可能改变所观察的系统的行为。

答案1

对于我的特定调查,我意识到我并不真正关心为什么要读取该文件,无论它是作为可执行文件还是配置文件读取,此时对我来说并不重要。所以我回去查找并发现 printf %T@ 打印创建时间和 %A@ 打印访问时间,所以如果这些几乎相同,则文件自安装以来尚未被修改。我仍在处理结果,但它们看起来很有希望。我正在与我的团队合作以获得开源代码的许可,但老实说,代码非常简单。我建议安装休闲时光为了获得最佳结果

find_args=(-xdev -type f -printf "%p|%T@|%A@\\n")
find / $find_args > logfile.psv

#创建一个包含#path|creation_time|access_time的PSV文件(管道分隔值文件)

相当可靠地完成我想要的事情。我尝试使用直接的 CSV,但一些 ubuntu 固件模块的名称中带有“,”,但我认为没有人会勇敢地发布带有“|”的 Linux 文件。就这个名字而言,经过深思熟虑,我决定这样做。

我的应用程序的要求之一是 0 依赖,因此基于 python 或基于 perl 的解决方案不起作用。

结合一个简单的“包爆炸器“当我们发现最近没有使用过的文件时,我们可以交叉引用它来自的安装包

相关内容