Red Hat Training

A Red Hat training course is available for RHEL 8

13.4. 为 fapolicyd 添加自定义允许和拒绝规则

fapolicyd 包中的默认规则集不影响系统功能。对于自定义场景,例如将二进制文件和脚本存储在非标准目录中,或者在没有 yumrpm 安装程序的情况下添加应用程序,您必须修改现有规则或添加新规则。以下步骤演示了如何添加新的规则以允许自定义二进制文件。

先决条件

  • fapolicyd 框架部署在您的系统上。

流程

  1. 将自定义二进制文件复制到所需目录中,例如:

    $ cp /bin/ls /tmp
    $ /tmp/ls
    bash: /tmp/ls: Operation not permitted
  2. 停止 fapolicyd 服务:

    # systemctl stop fapolicyd
  3. 使用调试模式来标识对应的规则。因为 fapolicyd --debug 命令的输出详细,且您只能按 Ctrl+C 或终止相应的进程来停止它,因此请将错误输出重定向到文件:

    # fapolicyd --debug 2> fapolicy.output &
    [1] 51341

    或者,您可以在另一个终端中运行 fapolicyd debug 模式。

  4. 重复不允许的命令:

    $ /tmp/ls
    bash: /tmp/ls: Operation not permitted
  5. Ctrl+C 来停止调试模式:

    # fg
    fapolicyd --debug
    ^Cshutting down...
    Inter-thread max queue depth 1
    Allowed accesses: 2
    Denied accesses: 1
    [...]

    或者,终止 fapolicyd debug 模式的进程:

    # kill 51341
  6. 查找拒绝执行应用程序的规则:

    # cat fapolicy.output
    [...]
    rule:9 dec=deny_audit perm=execute auid=1000 pid=51362 exe=/usr/bin/bash : file=/tmp/ls ftype=application/x-executable
    [...]
  7. /etc/fapolicyd/fapolicyd.rules 文件中拒绝执行自定义二进制文件的规则添加一个新的 allow 规则。上一命令的输出表明该规则是本例中的规则编号 9

    allow perm=execute exe=/usr/bin/bash trust=1 : path=/tmp/ls ftype=application/x-executable trust=0

    另外,您可以通过在 / etc/fapolicyd/fapolicyd.rules 文件中添加以下规则来允许执行 / tmp 目录中的所有二进制文件:

    allow perm=execute exe=/usr/bin/bash trust=1 : dir=/tmp/ all trust=0
  8. 要防止自定义二进制文件的内容更改,请使用 SHA-256 校验和定义所需的规则:

    $ sha256sum /tmp/ls
    780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836  ls

    将规则改为以下定义:

    allow perm=execute exe=/usr/bin/bash trust=1 : sha256hash=780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836
  9. 启动 fapolicyd 服务:

    # systemctl start fapolicyd

验证

  1. 检查您的自定义二进制文件现在是否可以执行,例如:

    $ /tmp/ls
    ls

其它资源

  • fapolicyd.trust(5) man page.