10.2. selinux RHEL システムロールを使用した SELinux ネットワークポートラベルの管理
標準以外のポートでサービスを実行する場合は、このポートに対応する SELinux タイプラベルを設定する必要があります。これにより、サービスが標準以外のポートでリッスンしようとする際に、そのサービスへの許可が SELinux によって拒否されなくなります。selinux
RHEL システムロールを使用すると、このタスクを自動化し、ポートにタイプラベルをリモートで割り当てることができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Managing SELinux hosts: managed-node-01.example.com tasks: - name: Set http_port_t label on network port ansible.builtin.include_role: name: redhat.rhel_system_roles.selinux vars: selinux_ports: - ports: <port_number> proto: tcp setype: http_port_t state: present
--- - name: Managing SELinux hosts: managed-node-01.example.com tasks: - name: Set http_port_t label on network port ansible.builtin.include_role: name: redhat.rhel_system_roles.selinux vars: selinux_ports: - ports: <port_number> proto: tcp setype: http_port_t state: present
Copy to Clipboard Copied! サンプル Playbook で指定されている設定は次のとおりです。
ports: <port_number>
- SELinux ラベルを割り当てるポート番号を定義します。複数の値はコンマで区切ります。
setype: <type_label>
- SELinux タイプラベルを定義します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
ファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied!
検証
http_port_t
ラベルが割り当てられているポート番号を表示します。ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep http_port_t'
# ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep http_port_t' http_port_t tcp 80, 81, 443, <port_number>, 488, 8008, 8009, 8443, 9000
Copy to Clipboard Copied!