Red Hat Training

A Red Hat training course is available for RHEL 8

6.4. MLS でのユーザークリアランスの確立

SELinux ポリシーを MLS に切り替えた後に、制限のある SELinux ユーザーにマッピングすることで、セキュリティークリアランスレベルをユーザーに割り当てる必要があります。セキュリティークリアランスが指定されているユーザー:

  • 機密レベルが高いオブジェクトを読み取ることはできません。
  • 機密レベルが低いオブジェクトへの書き込みはできません。
  • 機密レベルが低いオブジェクトは変更できますが、ユーザークリアランスレベルに対して、オブジェクトの区分レベルが増加します。

前提条件

  • SELinux ポリシーが mls に設定されている。
  • SELinux モードが Enforcing に設定されている。
  • policycoreutils-python-utils パッケージがインストールされている。
  • SELinux の制限のあるユーザーに割り当てられているユーザー:

    • 特権のないユーザーの場合には、user_u に割り当てられます。
    • 特権ユーザーの場合は、staff_u に割り当てられます。
注記

MLS ポリシーがアクティブな時に、ユーザーが作成されていることを確認します。他の SELinux ポリシーで作成されたユーザーは MLS で使用できません。

手順

  1. 必要に応じて、SELinux ポリシーにエラーを追加しないようにするには、Permissive SELinux モードに切り替えてください。切り替えることでトラブルシューティングが容易になります。

    # setenforce 0
    重要

    Permissive モードでは、SELinux はアクティブなポリシーを有効せず、アクセスベクターキャッシュ (AVC) メッセージをログに記録するだけです。このログは、トラブルシューティングやデバッグに使用できます。

  2. SELinux ユーザー staff_u のクリアランスの範囲を定義します。たとえば、このコマンドは、クリアランスの範囲を s1 から s15 に、デフォルトのクリアランスレベルを s1 に設定します。

    # semanage user -m -L s1 -r s1-s15 staff_u
  3. ユーザーのホームディレクトリー用の SELinux ファイルコンテキスト設定エントリーを生成します。

    # genhomedircon
  4. ファイルセキュリティーコンテキストをデフォルトに復元します。

    # 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
  5. ユーザーにクリアランスレベルを割り当てます。

    # semanage login -m -r s1 example_user

    ここで、s1 は、ユーザーに割り当てられたクリアランスレベルに置き換えます。

  6. ユーザーのホームディレクトリーのラベルをユーザーのクリアランスレベルに付け直します。

    # chcon -R -l s1 /home/example_user
  7. 必要に応じて、SELinux モードを Permissive に切り替えた場合は、すべてが想定通りに動作することを確認したら、SELinux モードを Enforcing モードに戻します。

    # setenforce 1

検証手順

  1. ユーザーが正しい SELinux ユーザーにマッピングされ、クリアランスレベルが正しく割り当てられていることを確認します。

    # semanage login -l
    Login Name      SELinux User         MLS/MCS Range        Service
    __default__     user_u               s0-s0                *
    example_user    user_u               s1                   *
    ...
  2. MLS 内のユーザーとしてログインします。
  3. ユーザーのセキュリティーレベルが正しく機能していることを確認します。

    重要

    検証に使用するファイルには、設定が間違っており、ユーザーが実際に認証なしにファイルにアクセスできてしまう場合に備え、機密情報を含めないようにしてください。

    1. ユーザーが機密レベルの高いファイルを読み取れないことを確認します。
    2. 機密レベルの低いファイルに書き込みしてみます。これにより、ファイルの区分レベルがユーザーのクリアランスレベルに上がります。
    3. ユーザーが機密レベルの低いファイルを読み取れることを確認します。