12.7. 使用 fapolicyd RHEL 系统角色防止用户执行不可靠代码


您可以使用 fapolicyd RHEL 系统角色自动化 fapolicyd 服务的安装和配置。使用此角色,您可以远程配置服务,以允许用户仅执行可信的应用程序,例如 RPM 数据库和允许列表中列出的应用程序。另外,该服务也可以在执行允许的应用程序之前执行完整性检查。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Configuring fapolicyd
      hosts: managed-node-01.example.com
      tasks:
        - name: Allow only executables installed from RPM database and specific files
          ansible.builtin.include_role:
            name: rhel-system-roles.fapolicyd
          vars:
            fapolicyd_setup_permissive: false
            fapolicyd_setup_integrity: sha256
            fapolicyd_setup_trust: rpmdb,file
            fapolicyd_add_trusted_file:
              - <path_to_allowed_command>
              - <path_to_allowed_service>

    示例 playbook 中指定的设置包括以下内容:

    fapolicyd_setup_permissive: <true|false>
    启用或禁用向内核发送策略决策以强制执行。出于调试和测试目的,将此变量设置为 false
    fapolicyd_setup_integrity: <type_type>

    定义完整性检查方法。您可以设置以下值之一:

    • none(默认):禁用完整性检查。
    • size :服务仅比较允许的应用程序的文件大小。
    • ima: 服务检查内核完整性测量架构(IMA)存储在文件的扩展属性中的 SHA-256 哈希。此外,该服务执行大小检查。请注意,该角色不配置 IMA 内核子系统。要使用这个选项,您必须手动配置 IMA 子系统。
    • sha256 :服务比较允许的应用程序的 SHA-256 哈希。
    fapolicyd_setup_trust: <trust_backends>
    定义信任后端的列表。如果您包含 file 后端,请在 fapolicyd_add_trusted_file 列表中指定允许的可执行文件。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.fapolicyd.README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook ~/playbook.yml --syntax-check

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  • 以用户身份执行不在允许列表中的二进制应用程序:

    $ ansible managed-node-01.example.com -m command -a 'su -c "/bin/not_authorized_application " <user_name>'
    bash: line 1: /bin/not_authorized_application: Operation not permitted non-zero return code

其它资源

  • /usr/share/ansible/roles/rhel-system-roles.fapolicyd/README.md 文件
  • /usr/share/doc/rhel-system-roles/fapolicyd/ directory
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.