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 ポリシーにエラーを追加しないようにするには、
Permissive
SELinux モードに切り替えてください。切り替えることでトラブルシューティングが容易になります。# setenforce 0
permissive モードでは、SELinux はアクティブなポリシーを適用せず、Access Vector Cache (AVC) メッセージをログに記録するだけです。このログは、トラブルシューティングやデバッグに使用できます。
SELinux ユーザー
staff_u
のクリアランスの範囲を定義します。たとえば、このコマンドは、クリアランスの範囲をs1
からs15
に、デフォルトのクリアランスレベルをs1
に設定します。# semanage user -m -L s1 -r s1-s15 staff_u
ユーザーのホームディレクトリー用の SELinux ファイルコンテキスト設定エントリーを生成します。
# genhomedircon
ファイルセキュリティーコンテキストをデフォルトに復元します。
# 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:s1
ユーザーにクリアランスレベルを割り当てます。
# semanage login -m -r s1 example_user
ここで、
s1
は、ユーザーに割り当てられたクリアランスレベルに置き換えます。ユーザーのホームディレクトリーのラベルをユーザーのクリアランスレベルに付け直します。
# chcon -R -l s1 /home/example_user
必要に応じて、SELinux モードを
Permissive
に切り替えた場合は、すべてが想定通りに動作することを確認したら、SELinux モードをEnforcing
モードに戻します。# setenforce 1
検証
ユーザーが正しい SELinux ユーザーにマッピングされ、クリアランスレベルが正しく割り当てられていることを確認します。
# semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ user_u s0-s0 * example_user user_u s1 * …
- MLS 内のユーザーとしてログインします。
ユーザーのセキュリティーレベルが正しく機能していることを確認します。
警告検証に使用するファイルには、設定が間違っており、ユーザーが実際に認証なしにファイルにアクセスできてしまう場合に備え、機密情報を含めないようにしてください。
- ユーザーが機密レベルの高いファイルを読み取れないことを確認します。
- ユーザーが同じ機密レベルのファイルに書き込めることを確認します。
- ユーザーが機密レベルの低いファイルを読み取れることを確認します。