6.8. MLS でのシステム管理とセキュリティー管理の分離
デフォルトでは、sysadm_r ロールには secadm_r ロールの権限があります。つまり、sysadm_r ロールを持つユーザーは、セキュリティーポリシーを管理できることを意味します。セキュリティー認証の制御を強化する必要がある場合は、Linux ユーザーを secadm_r ロールに割り当て、SELinux ポリシーの sysadm_secadm モジュールを無効にすることで、システム管理をセキュリティー管理から分離することができます。
前提条件
-
SELinux ポリシーが
mlsに設定されている。 -
SELinux モードが
Enforcingに設定されている。 -
policycoreutils-python-utilsパッケージがインストールされている。 secadm_rロールに割り当てられる Linux ユーザー。-
ユーザーは、
staff_uSELinux ユーザーに割り当てられます。 - このユーザーのパスワードが定義されています。
警告secadmロールに割り当てられるユーザーでログインできることを確認してください。そうでない場合は、システムの SELinux ポリシーの将来の変更を防ぐことができます。-
ユーザーは、
手順
ユーザー向けに、新しい
sudoersファイルを/etc/sudoers.dディレクトリーに作成します。# visudo -f /etc/sudoers.d/<sec_adm_user>sudoersファイルを整理しておくには、<sec_adm_user>をsecadmロールに割り当てられる Linux ユーザーに置き換えます。/etc/sudoers.d/<sec_adm_user>ファイルに、以下の内容を追加します。<sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALLこの行は、すべてのホスト上の
<secadmuser>が、すべてのコマンドを実行することを許可し、デフォルトでユーザーをsecadmSELinux タイプとロールにマップします。<sec_adm_user> ユーザーでログインします。
SELinux コンテキスト (SELinux のユーザー、ロール、タイプで構成) が変更されていることを確認するために、
ssh、コンソール、またはxdmを使用してログイン します。suおよびsudoなどの他の方法では、SELinux コンテキスト全体を変更することはできません。ユーザーのセキュリティーコンテキストを確認します。
$ id uid=1000(<sec_adm_user>) gid=1000(<sec_adm_user>) groups=1000(<sec_adm_user>) context=staff_u:staff_r:staff_t:s0-s15:c0.c1023root ユーザーの対話型シェルを実行します。
$ sudo -i [sudo] password for <sec_adm_user>:現在のユーザーのセキュリティーコンテキストを確認します。
# id uid=0(root) gid=0(root) groups=0(root) context=staff_u:secadm_r:secadm_t:s0-s15:c0.c1023ポリシーから
sysadm_secadmモジュールを無効にします。# semodule -d sysadm_secadm重要semodule -rコマンドを使用してシステムポリシーモジュールを削除する代わりに、semodule -dコマンドを使用します。semodule -rコマンドは、システムのストレージからモジュールを削除します。これは、selinux-policy-mlsパッケージを再インストールしないと、モジュールを再び読み込むことができないことを意味します。
検証
secadmロールに割り当てられたユーザーとして、root ユーザーの対話型シェルで、セキュリティーポリシーデータにアクセスできることを確認します。# seinfo -xt secadm_t Types: 1 type secadm_t, can_relabelto_shadow_passwords, (…) userdomain;root シェルからログアウトします。
# logout<sec_adm_user>ユーザーからログアウトします。$ logout Connection to localhost closed.現在のセキュリティーコンテキストを表示します。
# id uid=0(root) gid=0(root) groups=0(root) context=root:sysadm_r:sysadm_t:s0-s15:c0.c1023sysadm_secadmモジュールの有効化を試してください。コマンドは失敗するはずです。# semodule -e sysadm_secadm SELinux: Could not load policy file /etc/selinux/mls/policy/policy.31: Permission denied /sbin/load_policy: Can't load policy: Permission denied libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). SELinux: Could not load policy file /etc/selinux/mls/policy/policy.31: Permission denied /sbin/load_policy: Can't load policy: Permission denied libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). semodule: Failed!sysadm_tSELinux タイプに関する詳細の表示を試してください。コマンドは失敗するはずです。# seinfo -xt sysadm_t [Errno 13] Permission denied: '/sys/fs/selinux/policy'