linux-system-roles.selinux
SELinux
期待する機能
基本的にローカルカスタマイズを管理するための仕組みを提供します:
- 強制モード/許可モードを設定
- ファイルシステムツリーの一部分を復元
- ブール値の設定/取得
- ファイルコンテキストの設定/取得
- ログインの管理
- ポートの管理
注意: disabled
モードでSELinuxのカスタマイズを管理する場合は、SELinux targeted
ポリシーがインストールされている必要があります。
要件
以下を参照してください。
コレクション要件
このロールは外部コレクションを必要とします。以下のコマンドを使用してインストールします:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
このリポジトリが提供するモジュール
selinux_modules_facts
SELinuxモジュールの状態を取得します。
ロール変数
ローカル変更の削除
デフォルトでは、selinux_booleans
、selinux_fcontexts
、selinux_ports
、およびselinux_logins
で指定された変更は、既存の変更の上に適用されます。新しい変更を設定する前にローカル変更を削除するには、次の変数をtrue
に設定します:
selinux_booleans_purge
- SELinuxブール値selinux_fcontexts_purge
- SELinuxファイルコンテキストselinux_ports_purge
- SELinuxポートselinux_logins_purge
- SELinuxユーザーのマッピング
すべての変更を削除するには、selinux_all_purge: true
を使用できます:
selinux_all_purge: true
selinux_policy、selinux_state
SELinuxポリシータイプとモードを管理します。
selinux_policy: targeted
selinux_state: enforcing
selinux_state
の許可される値は、disabled
、enforcing
、permissive
です。
selinux_state
が設定されていない場合、SELinuxの状態は変更されません。
selinux_policy
が設定されておらず、SELinuxを有効にする場合、デフォルトはtargeted
です。SELinuxがすでに有効な場合、ポリシーは変更されません。
これは、selinuxモジュールを使用して、SELinuxのモードとポリシーを管理します。
selinux_booleans
SELinuxブール値の状態を管理します。これは、各dict
がsebooleanモジュールで使用される形式のlist
です。
selinux_booleans:
- name: samba_enable_home_dirs
state: true
- name: ssh_sysadm_login
state: true
persistent: true
selinux_fcontexts
SELinuxファイルコンテキストマッピング定義の状態を管理します。これは、各dict
がsefcontextモジュールで使用される形式のlist
です。
selinux_fcontexts:
- target: '/tmp/test_dir(/.*)?'
setype: 'user_home_dir_t'
ftype: d
state: present
ユーザーは、以下のオプションのパラメータも渡すことができます:
seuser
: SELinuxユーザーを設定selevel
: MLS/MCSセキュリティ範囲を設定(MLS/MCSシステムのみ)。SELinuxログインマッピングのためのSELinux範囲は、SELinuxユーザー録の範囲がデフォルトです。
個別の変更は、state
をabsent
に設定することで削除できます。
selinux_ports
SELinuxポートポリシーの状態を管理します。これは、各dict
がseportモジュールで使用される形式のlist
です。
selinux_ports:
- ports: 22100
proto: tcp
setype: ssh_port_t
state: present
local: true
selinux_restore_dirs
これは文字列のlist
で、各文字列はrestorecon
を実行したいファイルシステムのツリーを指定します:
selinux_restore_dirs:
- /tmp/test_dir
selinux_logins
LinuxユーザーとSELinuxユーザーのマッピングを管理します。これは、各dict
がseloginモジュールで使用される形式のlist
です。
selinux_logins:
- login: plautrba
seuser: staff_u
state: absent
- login: default
seuser: staff_u
serange: s0-s0:c0.c1023
state: present
selinux_modules
SELinuxモジュールは、selinux_modules
変数を使用して管理できます。この変数は、list
のdict
を含みます、例えば:
selinux_modules:
- path: localmodule.pp
state: enabled
- path: localmodule.cil
priority: 350
state: enabled
- name: unconfineduser
state: disabled
- name: localmodule
priority: 350
state: absent
path
: ノードにインストールする_local_モジュールファイル(.cilまたは.pp)name
: モジュール名、無効なモジュールを有効にしたり、逆に有効なモジュールを無効にしたり、モジュールを削除するために使われますpriority
: SELinuxモジュールの優先度、デフォルトは*"400"です。 "100"はselinux-policyパッケージからインストールされたモジュールに使用され、* "200"は*サードパーティのrpmsからインストールされた他のモジュールに使用されますstate
: 次のいずれかの値の1つenabled
: モジュールをインストールまたは有効にしますdisabled
: モジュールを無効にしますabsent
: モジュールを削除します
注意: ノード上でソースからモジュールをビルドすることはサポートされていません。 ただし、多くの場合、すべてのシステムがモジュールで使用されるタイプ、クラス、権限をサポートしている場合、バイナリppまたはcilモジュールを異なるシステムで使用できます。ppモジュールの場合、ターゲットシステム上でサポートされているポリシードットファイルの最も低いバージョンでビルドされる必要があります。
注意: モジュールの優先度は、Red Hat Enterprise Linux 6では無視されます。
注意: モジュールの管理は、FedoraおよびEL 8.6以降では冪等性があります。古いリリースでモジュールを管理することもできますが、冪等性はありません。
selinux_transactional_update_reboot_ok
この変数は、トランザクション更新によって必要な再起動を扱うために使用されます。トランザクションを更新するのに再起動が必要な場合、selinux_transactional_update_reboot_ok
がtrue
に設定されていれば、ロールは再起動を続行します。false
に設定されている場合、ロールは再起動が必要であることをユーザーに通知し、再起動要件をカスタムで処理できるようにします。この変数が設定されていない場合、ロールは再起動要件を見逃すことがないように失敗します。
selinux_transactional_update_reboot_ok: true
Ansibleファクト
selinux_reboot_required
このカスタムファクトは、SELinuxがdisabled
からenabled
に設定されたり、その逆の場合にシステム再起動が必要な場合にtrue
に設定されます。そうでない場合はfalse
に設定されます。システム再起動が必要な場合、ロールから失敗が返され、それをblock:
...rescue:
構文で処理する必要があります。再起動はプレイブックで実行する必要があり、ロール自体は管理されたホストを再起動することはありません。再起動後、ロールを再度適用して変更を完了する必要があります。
selinux_installed_modules
このカスタムファクトは、SELinuxモジュールストア構造を表します。
"selinux_installed_modules": {
<module name>: {
<module priority>: ("enabled"|"disabled"),
...
},
...
}
例えば:
"ansible_facts": {
"selinux_installed_modules": {
"abrt": {
"100": "enabled",
"400": "disabled"
},
"accountsd": {
"100": "enabled"
},
"acct": {
"100": "enabled"
}
}
}
注意: モジュールの優先度は、優先度がサポートされていない場合(例:Red Hat Enterprise Linux 6)には"0"に設定されます。
例
一般的な使用法は、selinux-playbook.ymlプレイブックで示されています。
rpm-ostree
README-ostree.mdを参照してください。