11.3. アプリケーションのホワイトリストにカスタムルールを追加

fapolicyd パッケージのデフォルトのルールセットは、システム機能に影響しません。バイナリーとスクリプトを非標準のディレクトリーに保存したり、yum インストーラーまたは rpm インストーラーなしでアプリケーションを追加したりするようなカスタムシナリオの場合は、既存のルールを変更するか、新しいルールを追加する必要があります。次の手順は、新しいルールを追加してカスタムバイナリーをホワイトリストに追加する方法を示しています。

前提条件

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

手順

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

    # cp /bin/ls /opt
    # cd /opt
    # ./ls
    -bash: ./ls: Operation not permitted
  2. fapolicyd サービスを停止します。

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

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

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

  4. 許可されなかったコマンドを繰り返します。

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

    # fg
    fapolicyd --debug
    ^Cshutting down...
    Inter-thread max queue depth 1
    Allowed accesses: 2
    Denied accesses: 1
    [...]

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

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

    # cat fapolicy.output
    [...]
    rule:8 dec=deny_audit auid=1000 pid=29425 exe=/usr/bin/bash file=/opt/ls
    [...]
  7. /etc/fapolicyd/fapolicyd.rules ファイルで、カスタムバイナリーの実行を拒否したルールの 前に 新しい allow ルールを追加します。

    allow all path=/opt/ls

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

    allow all dir=/opt/
  8. カスタムバイナリーのコンテンツの変更を防ぐには、SHA-256 チェックサムを使用して必要なルールを定義します。

    $ sha256sum /opt/ls
    780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836  ls

    前の手順のルールを次の定義に変更します。

    allow all sha256hash=780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836
  9. fapolicyd サービスを開始します。

    # systemctl start fapolicyd

検証手順

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

    # ./ls
    ls

関連情報

  • 詳細は、man ページの fapolicyd.rules(7) を参照してください。