6.4. MLS でのユーザークリアランスの確立
SELinux ポリシーを MLS に切り替えた後に、制限のある SELinux ユーザーにマッピングすることで、セキュリティークリアランスレベルをユーザーに割り当てる必要があります。デフォルトでは、セキュリティークリアランスが指定されているユーザーには以下が適用されます。
- 機密レベルが高いオブジェクトを読み取ることはできません。
- 機密レベルが異なるオブジェクトに書き込むことはできません。
前提条件
-
SELinux ポリシーが
mlsに設定されている。 -
SELinux モードが
Enforcingに設定されている。 -
policycoreutils-python-utilsパッケージがインストールされている。 SELinux の制限のあるユーザーに割り当てられているユーザー:
-
非特権ユーザーの場合、
user_u(以下の手順では example_user) に割り当てられます。 -
特権ユーザーの場合、
staff_u(以下の手順では staff) に割り当てられます。
-
非特権ユーザーの場合、
MLS ポリシーがアクティブな時に、ユーザーが作成されていることを確認します。他の SELinux ポリシーで作成されたユーザーは MLS で使用できません。
手順
必要に応じて、SELinux ポリシーにエラーを追加しないようにするには、
PermissiveSELinux モードに切り替えてください。切り替えることでトラブルシューティングが容易になります。setenforce 0
# setenforce 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow permissive モードでは、SELinux はアクティブなポリシーを適用せず、Access Vector Cache (AVC) メッセージをログに記録するだけです。このログは、トラブルシューティングやデバッグに使用できます。
SELinux ユーザー
staff_uのクリアランスの範囲を定義します。たとえば、このコマンドは、クリアランスの範囲をs1からs15に、デフォルトのクリアランスレベルをs1に設定します。semanage user -m -L s1 -r s1-s15 staff_u
# semanage user -m -L s1 -r s1-s15 staff_uCopy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーのホームディレクトリー用の SELinux ファイルコンテキスト設定エントリーを生成します。
genhomedircon
# genhomedirconCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルセキュリティーコンテキストをデフォルトに復元します。
restorecon -R -F -v /home/
# restorecon -R -F -v /home/ Relabeled /home/staff from staff_u:object_r:user_home_dir_t:s0 to staff_u:object_r:user_home_dir_t:s1 Relabeled /home/staff/.bash_logout from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1 Relabeled /home/staff/.bash_profile from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1 Relabeled /home/staff/.bashrc from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーにクリアランスレベルを割り当てます。
semanage login -m -r s1 example_user
# semanage login -m -r s1 example_userCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
s1は、ユーザーに割り当てられたクリアランスレベルに置き換えます。ユーザーのホームディレクトリーのラベルをユーザーのクリアランスレベルに付け直します。
chcon -R -l s1 /home/example_user
# chcon -R -l s1 /home/example_userCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、SELinux モードを
Permissiveに切り替えた場合は、すべてが想定通りに動作することを確認したら、SELinux モードをEnforcingモードに戻します。setenforce 1
# setenforce 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ユーザーが正しい SELinux ユーザーにマッピングされ、クリアランスレベルが正しく割り当てられていることを確認します。
semanage login -l
# semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ user_u s0-s0 * example_user user_u s1 * …Copy to Clipboard Copied! Toggle word wrap Toggle overflow - MLS 内のユーザーとしてログインします。
ユーザーのセキュリティーレベルが正しく機能していることを確認します。
警告検証に使用するファイルには、設定が間違っており、ユーザーが実際に認証なしにファイルにアクセスできてしまう場合に備え、機密情報を含めないようにしてください。
- ユーザーが機密レベルの高いファイルを読み取れないことを確認します。
- ユーザーが同じ機密レベルのファイルに書き込めることを確認します。
- ユーザーが機密レベルの低いファイルを読み取れることを確認します。