第9章 複数のシステムへの同じ SELinux 設定のデプロイメント

本セクションでは、検証した SELinux 設定を複数のシステムにデプロイする際に推奨される方法を説明します。

  • RHEL システムロールおよび Ansible の使用
  • スクリプトで semanage の export コマンドおよび import コマンドの使用

9.1. SELinux システムロールの概要

RHEL システムロールは、複数の RHEL システムをリモートで管理する一貫した構成インターフェースを提供する Ansible ロールおよびモジュールの集合です。SELinux システムロールは、以下のアクションを有効にします。

  • SELinux ブール値、ファイルコンテキスト、ポート、およびログインに関連するローカルポリシーの変更を消去します。
  • SELinux ポリシーブール値、ファイルコンテキスト、ポート、およびログインの設定
  • 指定されたファイルまたはディレクトリーでファイルコンテキストを復元します。

以下の表は、SELinux システムロールで利用可能な入力変数の概要を示しています。

表9.1 SELinux システムロール変数

ロール変数説明CLI の代替手段

selinux_policy

ターゲットプロセスまたは複数レベルのセキュリティー保護を保護するポリシーを選択します。

/etc/selinux/configSELINUXTYPE

selinux_state

SELinux モードを切り替えます。ansible-doc selinux を参照してください。

/etc/selinux/configsetenforce and SELINUX

selinux_booleans

SELinux ブール値を有効または無効にします。ansible-doc seboolean を参照してください。

setsebool

selinux_fcontexts

SELinux ファイルコンテキストマッピングを追加または削除します。ansible-doc sefcontext を参照してください。

semanage fcontext

selinux_restore_dirs

ファイルシステムツリー内の SELinux ラベルを復元します。

restorecon -R

selinux_ports

ポートに SELinux ラベルを設定します。ansible-doc seport を参照してください。

semanage port

selinux_logins

ユーザーを SELinux ユーザーマッピングに設定します。ansible-doc selogin を参照してください。

semanage login

rhel-system-roles パッケージによりインストールされる /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml のサンプル Playbook は、Enforcing モードでターゲットポリシーを設定する方法を示しています。Playbook は、複数のローカルポリシーの変更を適用し、/tmp/test_dir/ ディレクトリーのファイルコンテキストを復元します。

関連情報

  • SELinux ロール変数の詳細は、rhel-system-roles パッケージをインストールし、/usr/share/doc/rhel-system-roles/selinux/ ディレクトリーの README.md または README.html ファイルを参照してください。
  • RHEL システムロールの詳細は、「RHEL のシステムロールの概要」を参照してください。

9.2. SELinux システムロールを使用した複数のシステムに SELinux 設定を適用

以下の手順に従って、検証した SELinux 設定を使用して Ansible Playbook を準備し、適用します。

前提条件

手順

  1. RHEL Ansible リポジトリーを有効にします。以下に例を示します。

    # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
  2. Ansible Engine をインストールします。

    # yum install ansible
  3. RHEL システムロールをインストールします。

    # yum install rhel-system-roles
  4. SELinux システムロールで Playbook を適用します。

    以下のコマンドは、rhel-system-roles パッケージに含まれる Playbook のサンプルを適用します。この Playbook をテンプレートとして使用できます。

    # ansible-playbook -i host1,host2,host3 /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml

関連情報

  • 詳細は、rhel-system-roles パッケージをインストールして、/usr/share/doc/rhel-system-roles/selinux/ ディレクトリーおよび /usr/share/ansible/roles/rhel-system-roles.selinux/ ディレクトリーを参照してください。

9.3. semanage で別のシステムへの SELinux 設定の転送

以下の手順に従って、RHEL 8 ベースのシステム間で、カスタムおよび検証された SELinux 設定を転送します。

前提条件

  • policycoreutils-python-utils パッケージがインストールされている。

手順

  1. 検証された SELinux 設定をエクスポートします。

    # semanage export -f ./my-selinux-settings.mod
  2. 設定を含むファイルを新しいシステムにコピーします。

    # scp ./my-selinux-settings.mod new-system-hostname:
  3. 新しいシステムにログインします。

    $ ssh root@new-system-hostname
  4. 新しいシステムに設定をインポートします。

    new-system-hostname# semanage import -f ./my-selinux-settings.mod

関連情報

  • man ページの semanage-export(8) および semanage-import(8)

このページには機械翻訳が使用されている場合があります (詳細はこちら)。