盘点或审计已安装的 Linux 软件

盘点或审计已安装的 Linux 软件

我正在做一个项目,我们需要能够定期告知和报告我们各种 Linux/Unix 服务器上安装了哪些软件。我看过这个,如何盘点 Linux 服务器向客户端“提供”哪些软件/角色?,发帖和这个,开源库存代理,发布后,无法找到可以解答我的问题的信息。我不确定 OCS 代理是否会像在 Windows 中一样在 Linux/Unix 服务器上报告。是否有任何脚本、开源软件、软件代理等可用于针对大量 Linux/Unix 服务器运行,以报告安装了哪些软件以及安装了哪些版本?

=========================

为清晰起见,更新如下:

我正在寻找一种可靠的方法来确定 Linux/Unix 机器上是否存在特定软件。理想情况下,这将是一个远程解决方案,我可以将其指向相关服务器,并让其返回结果,表明相关软件是否存在于该机器上。此外,我是否应该担心与 Linux/Unix 主机上安装的软件相关的以下问题?

  1. 从软件包安装的软件
  2. 从源安装的软件
  3. 安装到未知或意外位置的软件

我该如何处理这些情况并查明该软件是否存在?

答案1

  1. 检查包管理数据库
  2. 不是完全可靠,但会扫描整个文件系统以查找预期的可执行文件或库文件名。
  3. netcat与#2相同,但如果有人想将其重命名为purrmeow,静态编译它,并通过调用 libc 而不是直接执行来运行它,那么就不要指望它。

您可以尝试使用前几个字节的内容来检查文件是否可执行魔法数字然后记下没有家的。这将处理意外或无意的违规安装。然而,如果有人想把某样东西放到位并对你隐瞒,你会很难受。

要想真正狡猾,可以将可执行文件嵌入到文件的某个垃圾部分,对其进行 mmap,然后内存跳转到其中。有志者事竟成……因此,如果这是一项审计功能,请注意您选择的任何方法的局限性。

答案2

通过 ssh 手动编写脚本实际上并不困难。

话虽如此,我认为你的做法是错误的。你应该通过配置管理系统开始部署,以确保你的服务器处于特定的、可重复的、版本控制的状态。

答案3

ErikA 正在为您提供合理的建议。您不应该猜测您正在运行什么,而应该指定要运行什么。

但也许蓝图可以帮助您从当前状态进入您应该处于的状态。

答案4

您可以查看 Open-AudIT 的独立 Linux(Ubuntu、Fedora 等)审计脚本。它有点过时,但应该能满足您的需求。

http://www.open-audit.org/downloads.php

免责声明-我是开发者。

相关内容