12.7. 使用 fapolicyd RHEL 系统角色防止用户执行不可靠代码
您可以使用 fapolicyd
RHEL 系统角色自动化 fapolicyd
服务的安装和配置。使用此角色,您可以远程配置服务,以允许用户仅执行可信的应用程序,例如 RPM 数据库和允许列表中列出的应用程序。另外,该服务也可以在执行允许的应用程序之前执行完整性检查。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 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
(默认):禁用完整性检查。 -
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
文件。验证 playbook 语法:
$ ansible-playbook ~/playbook.yml --syntax-check
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 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