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_u
SELinux ユーザーに割り当てられます。 - このユーザーのパスワードが定義されています。
警告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>
が、すべてのコマンドを実行することを許可し、デフォルトでユーザーをsecadm
SELinux タイプとロールにマップします。<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.c1023
root ユーザーの対話型シェルを実行します。
$ 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.c1023
sysadm_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_t
SELinux タイプに関する詳細の表示を試してください。コマンドは失敗するはずです。# seinfo -xt sysadm_t [Errno 13] Permission denied: '/sys/fs/selinux/policy'