第26章 fapolicyd RHEL システムロールを使用したアプリケーションの実行の制限
fapolicyd
ソフトウェアフレームワークを使用すると、ユーザー定義のポリシーに基づいてアプリケーションの実行を制限できます。このフレームワークは、実行前にアプリケーションの整合性を検証します。これは、悪意のある可能性のある信頼できないアプリケーションの実行を防ぐ効率的な方法です。fapolicyd
RHEL システムロールを使用すると、fapolicyd
のインストールと設定を自動化できます。
fapolicyd
サービスは、root
としてではなく、通常のユーザーとして実行される不正なアプリケーションの実行のみを防止します。
26.1. 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
: サービスにより、カーネルの Integrity Measurement Architecture (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/
ディレクトリー