第 9 章 使用 fapolicyd RHEL 系统角色限制应用程序的执行
通过使用 fapolicyd
软件框架,您可以根据用户定义的策略限制应用程序的执行,框架会在执行前验证应用程序的完整性。这是防止运行不可靠且可能恶意的应用程序的有效方法。您可以使用 fapolicyd
RHEL 系统角色自动化 fapolicyd
的安装和配置。
fapolicyd
服务只阻止以常规用户身份运行的,而不是以 root
身份运行的未授权应用程序的执行。
9.1. 使用 fapolicyd RHEL 系统角色防止用户执行不可靠的代码 复制链接链接已复制到粘贴板!
您可以使用 fapolicyd
RHEL 系统角色自动化 fapolicyd
服务的安装和配置。使用此角色,您可以远程配置服务,以允许用户只执行可信的应用程序,例如 RPM 数据库和允许列表中列出的应用程序。另外,服务也可以在执行允许的应用程序之前执行完整性检查。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 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
$ ansible-playbook ~/playbook.yml --syntax-check
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以用户身份执行不在允许列表中的二进制应用程序:
ansible managed-node-01.example.com -m command -a 'su -c "/bin/not_authorized_application " <user_name>'
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow