如何计算流程的最小能力集?

mil*_*ton 5 linux security linux-capabilities

计算任何进程的最小 Linux 功能集的最佳方法是什么?

假设您正在强化操作系统,并且其中一些工具可能需要CAP_NET_ADMIN和相关的网络权限,而其他工具可能需要CAP_SYS_NICE。应该有一种方法来告诉每个可执行文件真正需要哪些功能。

gav*_*avv 3

确定运行时所需功能的两种可能方法:

  • 随后在没有 root 权限的情况下运行您的程序strace。确定哪些系统调用失败,并向EPERM您的程序添加相应的功能。重复此操作,直到收集到所有功能。
  • 使用SystemTap,DTraceKprobes来记录或拦截为您的程序进行的内核功能检查。(例如,使用capableBCC 工具套件,如此处所述

我想,具有良好覆盖率的单元测试会有很大帮助。另请注意,capability(7)手册页列出了可能需要每种功能的系统调用(尽管它不是完整列表)。

更新:

@RodrigoBelem 引用的文章提到了module capable_probe它是基于KProbes.

该模块的原始文章是“POSIX 文件功能:打包 root 的力量”,现在不可用(它托管在此处)。但您可以在互联网上找到源代码一些文档。