5.4. Creating a local SELinux policy module


アクティブな SELinux ポリシーに特定の SELinux ポリシーモジュールを追加することで、SELinux ポリシーに関する特定の問題を修正できます。この手順を使用して、Red Hat リリースノート に記載されている特定の既知の問題を修正したり、特定の Red Hat ソリューション を実装したりできます。

警告

Red Hat が提供するルールのみを使用します。Red Hat は、カスタムルールを使用した SELinux ポリシーモジュールの作成には対応していません。これは、製品サポートの対象範囲 外であるためです。専門家でない場合は、Red Hat の営業担当者に連絡し、コンサルティングサービスを依頼してください。

前提条件

  • 検証用の setools-console パッケージおよび audit パッケージ。

手順

  1. テキストエディターで新しい .cil を開きます。以下に例を示します。

    # vim <local_module>.cil
    Copy to Clipboard Toggle word wrap

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

  2. 既知の問題または Red Hat ソリューションからカスタムルールを挿入します。

    重要

    独自のルールを作成しないでください。特定の既知の問題または Red Hat ソリューションで提供されているルールのみを使用します。

    • たとえば、SELinux denies cups-lpd read access to cups.sock in RHEL のソリューションを実装するには、以下の規則を挿入します。

      (allow cupsd_lpd_t cupsd_var_run_t (sock_file (read)))
      Copy to Clipboard Toggle word wrap

      このサンプルソリューションは、RHBA-2021:4420 で RHEL 用に永続的に修正されました。したがって、このソリューションの特定の手順は更新済みの RHEL 8 システムおよび 9 システムに影響を与えず、構文のサンプルとしてのみ含まれています。

      2 つの SELinux ルール構文 (Common Intermediate Language (CIL) と m4) のどちらかを使用できます。たとえば、CIL の (allow cupsd_lpd_t cupsd_var_run_t (sock_file (read))) は、m4 の以下と同じになります。

      module local_cupslpd-read-cupssock 1.0;
      
      require {
          type cupsd_var_run_t;
          type cupsd_lpd_t;
          class sock_file read;
      }
      
      #============= cupsd_lpd_t ==============
      allow cupsd_lpd_t cupsd_var_run_t:sock_file read;
      Copy to Clipboard Toggle word wrap
  3. ファイルを保存してから閉じます。
  4. ポリシーモジュールをインストールします。

    # semodule -i <local_module>.cil
    Copy to Clipboard Toggle word wrap

    semodule -i を使用して作成したローカルポリシーモジュールを削除する場合は、.cil 接尾辞のないモジュール名を参照してください。ローカルポリシーモジュールを削除するには、semodule -r <local_module> を使用します。

  5. ルールに関連するサービスを再起動します。

    # systemctl restart <service_name>
    Copy to Clipboard Toggle word wrap

検証

  1. SELinux ポリシーにインストールされているローカルモジュールをリスト表示します。

    # semodule -lfull | grep "local_"
    400 local_module  cil
    Copy to Clipboard Toggle word wrap

    ローカルモジュールの優先順位は 400 であるため、semodule -lfull | grep -v ^100 コマンドを使用して、その値を使用してリストからそれらをフィルター処理することもできます。

  2. 関連する許可ルールを SELinux ポリシーで検索します。

    # sesearch -A --source=<SOURCE_NAME> --target=<TARGET_NAME> --class=<CLASS_NAME> --perm=<P1>,<P2>
    Copy to Clipboard Toggle word wrap

    <SOURCE_NAME> はソースの SELinux のタイプ、<TARGET_NAME> はターゲットの SELinux のタイプ、<CLASS_NAME> はセキュリティークラスまたはオブジェクトクラスの名前、そして <P1><P2> はルールの特定のパーミッションです。

    たとえば、SELinux denies cups-lpd read access to cups.sock in RHEL ソリューションの場合は、以下を行います。

    # sesearch -A --source=cupsd_lpd_t --target=cupsd_var_run_t --class=sock_file --perm=read
    allow cupsd_lpd_t cupsd_var_run_t:sock_file { append getattr open read write };
    Copy to Clipboard Toggle word wrap

    最後の行には、read 操作が含まれているはずです。

  3. 関連するサービスが SELinux に制限されて実行されていることを確認します。

    1. 関連するサービスに関連するプロセスを特定します。

      $ systemctl status <service_name>
      Copy to Clipboard Toggle word wrap
    2. 上記コマンドの出力でリスト表示されたプロセスの SELinux コンテキストを確認します。

      $ ps -efZ | grep <process_name>
      Copy to Clipboard Toggle word wrap
  4. サービスが SELinux の拒否を引き起こさないことを確認します。

    # ausearch -m AVC -i -ts recent
    <no matches>
    Copy to Clipboard Toggle word wrap

    -i オプションは、数値を人間が判読できるテキストに解析します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat