25.3. selinux RHEL システムロールを使用したポートの管理
selinux
RHEL システムロールを使用すると、複数のシステムにわたる一貫した SELinux でのポートアクセス管理を自動化できます。これは、たとえば、Apache HTTP サーバーを別のポートでリッスンするように設定する場合に役立ちます。これを実行するには、特定のポート番号に http_port_t
SELinux タイプを割り当てる selinux
RHEL システムロールを使用して Playbook を作成します。管理対象ノードで Playbook を実行すると、SELinux ポリシーで定義された特定のサービスがこのポートにアクセスできるようになります。
SELinux でのポートアクセス管理は、seport
モジュール (ロール全体を使用するよりも高速) を使用するか、selinux
RHEL システムロール (SELinux 設定で他の変更も行う場合に便利) を使用することで自動化できます。これらの方法は同等です。実際、selinux
RHEL システムロールは、ポートを設定するときに seport
モジュールを使用します。どちらの方法も、管理対象ノードでコマンド semanage port -a -t http_port_t -p tcp <port_number>
を入力するのと同じ効果があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 -
オプション:
semanage
コマンドを使用してポートの状態を確認するには、policycoreutils-python-utils
パッケージをインストールする必要があります。
手順
他の変更を加えずにポート番号だけを設定するには、
seport
モジュールを使用します。- name: Allow Apache to listen on tcp port <port_number> community.general.seport: ports: <port_number> proto: tcp setype: http_port_t state: present
<port_number>
は、http_port_t
タイプを割り当てるポート番号に置き換えます。SELinux のその他のカスタマイズを伴うより複雑な設定を管理対象ノードに行う場合は、
selinux
RHEL システムロールを使用します。Playbook ファイル (例:~/playbook.yml
) を作成し、次の内容を追加します。--- - name: Modify SELinux port mapping example hosts: all vars: # Map tcp port <port_number> to the 'http_port_t' SELinux port type selinux_ports: - ports: <port_number> proto: tcp setype: http_port_t state: present tasks: - name: Include selinux role ansible.builtin.include_role: name: rhel-system-roles.selinux
<port_number>
は、http_port_t
タイプを割り当てるポート番号に置き換えます。
検証
ポートが
http_port_t
タイプに割り当てられていることを確認します。# semanage port --list | grep http_port_t http_port_t tcp <port_number>, 80, 81, 443, 488, 8008, 8009, 8443, 9000
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
ファイル -
/usr/share/doc/rhel-system-roles/selinux/
ディレクトリー