第 11 章 使用 fapolicyd RHEL 系统角色限制应用程序的执行
通过使用 fapolicyd
软件框架,您可以根据用户定义的策略限制应用程序的执行,框架会在执行前验证应用程序的完整性。这是防止运行不可靠且可能恶意应用程序的有效方法。您可以使用 fapolicyd
RHEL 系统角色自动安装和配置 fapolicyd
。
fapolicyd
服务只阻止执行作为常规用户而不是以 root
身份运行的未授权应用程序。
11.1. 使用 fapolicyd
RHEL 系统角色防止用户执行不可靠代码
您可以使用 fapolicyd RHEL 系统角色自动安装和配置
服务。使用此角色,您可以远程配置服务,以允许用户仅执行可信应用程序,例如 RPM 数据库和允许列表中列出的应用程序。另外,该服务也可以在执行允许的应用程序前执行完整性检查。
fapolicyd
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
步骤
创建包含以下内容的 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
(默认):禁用完整性检查。 -
大小
:服务仅比较允许的应用程序的文件大小。 -
IMA : 服务检查内核完整性测量架构(IMA)存储在文件的扩展属性中的 SHA-256 哈希。
此外,该服务也执行大小检查。请注意,该角色不会配置 IMA 内核子系统。要使用这个选项,您必须手动配置 IMA 子系统。
-
sha256
:该服务比较允许的应用程序的 SHA-256 哈希。
-
fapolicyd_setup_trust: < ;trust_backends>
-
定义信任后端列表。如果您包含文件后端,请在
fapolicyd_add_trusted_
列表中指定允许的可执行文件。file
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.fapolicyd.README.md
文件。验证 playbook 语法:
$ ansible-playbook ~/playbook.yml --syntax-check
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
以用户身份执行不在 allow 列表中的二进制应用程序:
$ 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