Menu Close
Settings Close

Language and Page Formatting Options

第 13 章 使用 fapolicyd 阻止和允许应用程序

根据规则集设置和强制实施允许或拒绝应用程序执行的策略,可有效防止执行未知的和具有潜在恶意的软件。

13.1. fapolicyd 简介

fapolicyd 软件框架根据用户定义的策略来控制应用程序的执行。这是防止在系统上运行不受信任的和可能具有恶意的应用程序的最有效的方法之一。

fapolicyd 框架提供以下组件。

  • fapolicyd 服务
  • fapolicyd 命令行工具
  • fapolicyd RPM 插件
  • fapolicyd 规则语言
  • fagenrules 脚本

管理员可以为任何应用程序定义 allowdeny 执行规则,并根据路径、哈希、MIME 类型或信任进行审计。

fapolicyd 框架引入了信任的概念。在被系统软件包管理器正确安装后,应用程序是可信的,因此它会在系统 RPM 数据库中注册。fapolicyd 守护进程使用 RPM 数据库作为受信任的二进制文件和脚本的列表。fapolicyd RPM 插件注册任何由 DNF 软件包管理器或 RPM 软件包管理器处理的系统更新。插件会通知 fapolicyd 守护进程有关此数据库中的更改。添加应用程序的其他方法需要创建自定义规则,并重新启动 fapolicyd 服务。

fapolicyd 服务配置位于 /etc/fapolicyd/ 目录中,结构如下。

  • /etc/fapolicyd/fapolicyd.trust 文件包含可信文件的列表。您还可以在 /etc/fapolicyd/trust.d/ 目录中使用多个信任文件。
  • /etc/fapolicyd/rules.d/ 目录,用于包含 允许和拒绝 执行规则 的文件。fagenrules 脚本将这些组件规则文件合并到 /etc/fapolicyd/compiled.rules 文件中。
  • fapolicyd.conf 文件包含守护进程的配置选项。此文件主要用于性能调优目的。

/etc/fapolicyd/rules.d/ 中的规则在几个文件中组织,各自代表不同的策略目标。对应文件名开头的数字决定了 /etc/fapolicyd/compiled.rules 中的顺序:

  • 10 - 语言规则
  • 20 - dracut 相关的规则
  • 21 - 更新程序的规则
  • 30 - 模式
  • 40 - ELF 规则
  • 41 - 共享对象规则
  • 42 - 受信任的 ELF 规则
  • 70 - 可信语言规则
  • 72 - shell 规则
  • 90 - 拒绝执行规则
  • 95 - 允许打开规则

您可以使用其中一种方法来对 fapolicyd 进行完整性检查:

  • 文件大小检查
  • 比较 SHA-256 哈希
  • 完整性映射架构(IMA)子系统

默认情况下,fapolicyd 不进行完整性检查。根据文件大小进行完整性检查很快,但攻击者可以替换文件的内容并保留其字节大小。计算和检查 SHA-256 校验和更安全,但这会影响系统性能。fapolicyd.conf 中的 integrity = ima 选项需要在包含可执行文件的所有文件系统上都支持扩展属性(也称为 xattr)。

其他资源