6.10. MLS ユーザーによる下位レベルのファイルの編集を許可

デフォルトでは、MLS ユーザーは、クリアランス範囲の下限値を下回る機密レベルのファイルに書き込むことはできません。シナリオで、ユーザーによる下位レベルのファイルの編集を許可する必要がある場合は、ローカル SELinux モジュールを作成することで実行できます。ただし、ファイルへの書き込みにより、機密レベルがユーザーの現在の範囲の下限まで上昇します増加します。

前提条件

  • SELinux ポリシーが mls に設定されている。
  • SELinux モードが Enforcing に設定されている。
  • policycoreutils-python-utils パッケージがインストールされている。
  • 検証用の setools-console パッケージおよび audit パッケージ。

手順

  1. オプション: トラブルシューティングを実施しやすくするために、Permissive モードに切り替えます。

    # setenforce 0
  2. ~/local_mlsfilewrite.cil などのテキストエディターで新しい .cil ファイルを開き、以下のカスタムルールを挿入します。

    (typeattributeset mlsfilewrite (_staff_t_))

    staff_t は、別の SELinux タイプに置き換えることができます。ここで SELinux タイプを指定することで、下位レベルのファイルを編集できる SELinux ロールを制御できます。

    ローカルモジュールをより適切に整理するには、ローカル SELinux ポリシーモジュール名で接頭辞 local_ を使用します。

  3. ポリシーモジュールをインストールします。

    # semodule -i ~/local_mlsfilewrite.cil
    注記

    ローカルポリシーモジュールを削除するには、semodule -r ~/local_mlsfilewrite を使用します。モジュール名を参照する場合は、接頭辞 .cil なしで参照する必要がある点に注意してください。

  4. オプション: 以前に permissive モードに戻した場合は、enforcing モードに戻ります。

    # setenforce 1

検証

  1. インストールされている SELinux モジュールのリストでローカルモジュールを検索します。

    # semodule -lfull | grep "local_mls"
    400 local_mlsfilewrite  cil

    ローカルモジュールの優先度は 400 であるため、semodule -lfull | grep -v ^100 コマンドを使用してリスト表示することもできます。

  2. カスタムルールで定義されているタイプ (staff_t など) に割り当てられたユーザーとしてログインします。
  3. 機密レベルが低いファイルに書き込みを試みます。これにより、ファイルの区分レベルがユーザーのクリアランスレベルまで上昇します。

    重要

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