10.4. fapolicyd のカスタムの許可および拒否ルールの追加


fapolicyd のデフォルトのルールセットは、システム機能に影響を与えません。バイナリーやスクリプトを標準以外のディレクトリーに保存したり、DNF または RPM インストーラーを使用せずにアプリケーションを追加したりするなどのカスタマイズを行う場合は、追加のファイルを信頼できるものとしてマークするか、新しいカスタムルールを追加する必要があります。

基本的なシナリオの場合は、追加の信頼ソースを使用してファイルを信頼できるものとしてマークする を参照してください。特定のユーザーおよびグループ識別子に対してのみカスタムバイナリーの実行を許可するなど、より高度なシナリオの場合は、新しいカスタムルールを /etc/fapolicyd/rules.d/ ディレクトリーに追加してください。

次の手順は、新しいルールを追加してカスタムバイナリーを許可する方法を示しています。

詳細情報と例は、fapolicyd パッケージとともにインストールされる /usr/share/doc/fapolicyd/ ディレクトリーのドキュメント、/usr/share/fapolicyd/sample-rules/README-rules ファイル、およびシステム上の fapolicyd.rules(5) および fagenrules(8) man ページを参照してください。

前提条件

  • fapolicyd フレームワークがシステムにデプロイされます。

手順

  1. カスタムバイナリーを必要なディレクトリーにコピーします。以下に例を示します。

    $ cp /bin/ls /tmp
    $ /tmp/ls
    bash: /tmp/ls: Operation not permitted
  2. fapolicyd サービスを停止します。

    # systemctl stop fapolicyd
  3. デバッグモードを使用して、対応するルールを識別します。fapolicyd --debug コマンドの出力は冗長で、Ctrl+C を押すか、対応するプロセスを強制終了するだけで停止できるため、エラー出力をファイルにリダイレクトします。この場合、--debug の代わりに --debug-deny オプションを使用して、アクセス拒否のみに出力を制限できます。

    # fapolicyd --debug-deny 2> fapolicy.output &
    [1] 51341

    または、別の端末で fapolicyd デバッグモードを実行できます。

  4. fapolicyd が拒否したコマンドを繰り返します。

    $ /tmp/ls
    bash: /tmp/ls: Operation not permitted
  5. デバッグモードをフォアグラウンドで再開し、Ctrl+C を押して停止します。

    # fg
    fapolicyd --debug 2> fapolicy.output
    ^C
    …

    または、fapolicyd デバッグモードのプロセスを強制終了します。

    # kill 51341
  6. アプリケーションの実行を拒否するルールを見つけます。

    # cat fapolicy.output | grep 'deny_audit'
    …
    rule=13 dec=deny_audit perm=execute auid=0 pid=6855 exe=/usr/bin/bash : path=/tmp/ls ftype=application/x-executable trust=0
  7. カスタムバイナリーの実行を拒否するルールが含まれるファイルを見つけます。この場合、deny_audit perm=execute ルールは 90-deny-execute.rules ファイルに属します。

    # ls /etc/fapolicyd/rules.d/
    10-languages.rules  40-bad-elf.rules	   72-shell.rules
    20-dracut.rules     41-shared-obj.rules    90-deny-execute.rules
    21-updaters.rules   42-trusted-elf.rules   95-allow-open.rules
    30-patterns.rules   70-trusted-lang.rules
    
    
    # cat /etc/fapolicyd/rules.d/90-deny-execute.rules
    # Deny execution for anything untrusted
    
    deny_audit perm=execute all : all
  8. /etc/fapolicyd/rules.d/ ディレクトリー内のカスタムバイナリーの実行を拒否するルールを含むルールファイルよりも辞書順で 前にある ファイルに、新しい allow ルールを追加します。

    1. ルールファイルを作成し、任意のテキストエディターで開きます。次に例を示します。

      # touch /etc/fapolicyd/rules.d/80-myapps.rules
      # vi /etc/fapolicyd/rules.d/80-myapps.rules
    2. 以下のルールを 80-myapps.rules ファイルに挿入します。

      allow perm=execute exe=/usr/bin/bash trust=1 : path=/tmp/ls ftype=application/x-executable trust=0

      または、/etc/fapolicyd/rules.d/ のルールファイルに次のルールを追加して、/tmp ディレクトリー内のすべてのバイナリーの実行を許可することもできます。

      allow perm=execute exe=/usr/bin/bash trust=1 : dir=/tmp/ trust=0
      重要

      指定したディレクトリーの下にあるすべてのディレクトリーに対してルールを再帰的に有効にするには、ルール内の dir= パラメーターの値に末尾のスラッシュを追加します (上記の例の /tmp/)。

  9. カスタムバイナリーの内容の変更を防止します。

    1. SHA-256 チェックサムを使用して必要なルールを定義します。

      $ sha256sum /tmp/ls
      780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836  ls
    2. ルールを以下の定義に変更します。

      allow perm=execute exe=/usr/bin/bash trust=1 : sha256hash=780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836
  10. コンパイルされたルールのリストが /etc/fapolicyd/rules.d/ のルールセットと異なることを確認します。

    # fagenrules --check
    /usr/sbin/fagenrules: Rules have changed and should be updated
  11. /etc/fapolicyd/compiled.rules ファイルに保存されているリストを更新します。

    # fagenrules --load
  12. 実行を拒否したルールの前にある fapolicyd ルールのリストに、カスタムルールが含まれていることを確認します。

    # fapolicyd-cli --list
    ...
    13. allow perm=execute exe=/usr/bin/bash trust=1 : path=/tmp/ls ftype=application/x-executable trust=0
    14. deny_audit perm=execute all : all
    …
  13. fapolicyd サービスを起動します。

    # systemctl start fapolicyd

検証

  1. たとえば、カスタムバイナリーが実行できることを確認します。

    $ /tmp/ls
    ls
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る