5.4. Creating a local SELinux policy module


既知の問題に関連する問題を修正したり、特定の Red Hat ソリューションを実装したりするために、特定のローカル SELinux ポリシーモジュールを作成して追加します。細心の注意を払い、Red Hat が直接提供するルールのみを適用してください。

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

警告

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

前提条件

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

手順

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

    # vi <local_module>.cil

    ローカルモジュールをより適切に整理するには、ローカル 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)))

      このサンプルソリューションは、RHBA-2021:4420 で {ProductShortName} 用に永続的に修正されました。したがって、このソリューションに固有の手順の部分は、更新済みの {ProductShortName} 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;
  3. ファイルを保存してから閉じます。
  4. ポリシーモジュールをインストールします。

    # semodule -i <local_module>.cil

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

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

    # systemctl restart <service_name>

検証

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

    # semodule -lfull | grep "local_"
    400 local_module  cil

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

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

    # sesearch -A --source=<SOURCENAME> --target=<TARGETNAME> --class=<CLASSNAME> --perm=<P1>,<P2>

    <SOURCENAME> はソースの SELinux の種類、<TARGETNAME> はターゲットの SELinux の種類、<CLASSNAME> はセキュリティークラスまたはオブジェクトクラスの名前、そして <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 };

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

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

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

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

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

    # ausearch -m AVC -i -ts recent
    <no matches>

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る