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>
# visudo -f /etc/sudoers.d/<sec_adm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudoersファイルを整理しておくには、<sec_adm_user>をsecadmロールに割り当てられる Linux ユーザーに置き換えます。/etc/sudoers.d/<sec_adm_user>ファイルに、以下の内容を追加します。<sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALL
<sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow この行は、すべてのホスト上の
<secadmuser>が、すべてのコマンドを実行することを許可し、デフォルトでユーザーをsecadmSELinux タイプとロールにマップします。<sec_adm_user> ユーザーでログインします。
SELinux コンテキスト (SELinux のユーザー、ロール、タイプで構成) が変更されていることを確認するために、
ssh、コンソール、またはxdmを使用してログイン します。suおよびsudoなどの他の方法では、SELinux コンテキスト全体を変更することはできません。ユーザーのセキュリティーコンテキストを確認します。
id
$ 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.c1023Copy to Clipboard Copied! Toggle word wrap Toggle overflow root ユーザーの対話型シェルを実行します。
sudo -i
$ sudo -i [sudo] password for <sec_adm_user>:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のユーザーのセキュリティーコンテキストを確認します。
id
# id uid=0(root) gid=0(root) groups=0(root) context=staff_u:secadm_r:secadm_t:s0-s15:c0.c1023Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーから
sysadm_secadmモジュールを無効にします。semodule -d sysadm_secadm
# semodule -d sysadm_secadmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要semodule -rコマンドを使用してシステムポリシーモジュールを削除する代わりに、semodule -dコマンドを使用します。semodule -rコマンドは、システムのストレージからモジュールを削除します。これは、selinux-policy-mlsパッケージを再インストールしないと、モジュールを再び読み込むことができないことを意味します。
検証
secadmロールに割り当てられたユーザーとして、root ユーザーの対話型シェルで、セキュリティーポリシーデータにアクセスできることを確認します。seinfo -xt secadm_t
# seinfo -xt secadm_t Types: 1 type secadm_t, can_relabelto_shadow_passwords, (…) userdomain;Copy to Clipboard Copied! Toggle word wrap Toggle overflow root シェルからログアウトします。
logout
# logoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow <sec_adm_user>ユーザーからログアウトします。logout
$ logout Connection to localhost closed.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のセキュリティーコンテキストを表示します。
id
# id uid=0(root) gid=0(root) groups=0(root) context=root:sysadm_r:sysadm_t:s0-s15:c0.c1023Copy to Clipboard Copied! Toggle word wrap Toggle overflow sysadm_secadmモジュールの有効化を試してください。コマンドは失敗するはずです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sysadm_tSELinux タイプに関する詳細の表示を試してください。コマンドは失敗するはずです。seinfo -xt sysadm_t
# seinfo -xt sysadm_t [Errno 13] Permission denied: '/sys/fs/selinux/policy'Copy to Clipboard Copied! Toggle word wrap Toggle overflow