2 fapolicyd
のインストールおよび実行
dnfコマンドを使用して、Oracle Linux 9 AppStreamリポジトリからfapolicydをインストールします。
ol9_appstream
リポジトリが有効になっていることを確認します。- dnfを使用してパッケージをインストールします。
sudo dnf install fapolicyd
- fapolicydサービスを有効にして起動します。
sudo systemctl enable --now fapolicyd
ランタイム構成の変更
ランタイム構成オプションは、/etc/fapolicyd/fapolicyd.conf
で設定されます。オプションの詳細は、fapolicyd.conf(6)
マニュアル・ページを参照してください。詳細は、https://github.com/linux-application-whitelisting/fapolicyd/blob/main/README.mdも参照してください。
ランタイム統計レポートの構成
fapolicydは、アクセス、拒否およびキャッシュ・パフォーマンスに関する情報を提供するランタイム統計レポートを生成できます。ランタイム統計レポートは、fapolicydが停止されたときに生成され、パフォーマンスに関する情報の収集に役立ちます。統計レポートの情報を使用して、他の構成オプションを変更するか、デバッグ作業を実行するかを決定できます。レポートは/var/log/fapolicyd-access.log
に書き込まれ、デフォルトの出力は次のようになります:
Permissive: false
q_size: 640
Inter-thread max queue depth 6
Allowed accesses: 668513
Denied accesses: 0
Trust database max pages: 25600
Trust database pages in use: 7567 (29%)
File access attempts from oldest to newest as of Wed Nov 15 16:46:59 2023
FILE ATTEMPTS
---------------------------------------------------------------------------
/var/tmp/dracut.kZVhRg/initramfs/usr/lib/kbd/keymaps/xkb/tr-alt.map.gz 1
/var/tmp/dracut.kZVhRg/initramfs/usr/lib/kbd/unimaps/koi8u.uni 1
/var/tmp/dracut.kZVhRg/initramfs/usr/bin/stgTP4DF 1
...
/usr/bin/mandb (?) 1
/usr/bin/mandb (?) 264
---
Subject cache size: 1549
Subject slots in use: 1549 (100%)
Subject hits: 666964
Subject misses: 46044
Subject evictions: 44495 (6%)
このレポートを制御するために設定できる構成オプションは次のとおりです:
-
do_stat_report: 統計レポートを生成するかどうかを制御します。デフォルトでは、値は1に設定され、オプションが有効化されていることを示します。
-
detailed_report fapolicydがサブジェクトおよびオブジェクト情報を使用統計レポートに追加するかどうかを制御し、特定のサブジェクト-オブジェクト・イベントが発生する回数を示します。この内容はデバッグ時に役立ちますが、ログのサイズを減らす際は無効にできます。このオプションのデフォルト値は1に設定され、このオプションが有効であることを示します。
ロギング制御
監査ロギングは主に監査ログのfanotifyイベントを使用して処理されますが、システム・ログに記録するようにポリシーを構成することもできます。「デフォルト・ポリシー・ロギングの変更」、「デバッグおよび許可モード」および「拒否イベントの監査」を参照してください。
システム・ログに記録する場合、またはデバッグ・モードでfapolicydを実行している場合は、syslog_formatオプションを構成することによって、アクセス決定からのログ出力の内容を制御できます。形式は、様々な値のカンマ区切りリストで、コロン文字を使用して区切られたサブジェクトおよびオブジェクト情報を含むルール情報を示します。システム・パフォーマンスは、ログに記録する内容の量に影響を受けることに注意してください。デフォルト値はrule,dec,perm,auid,pid,exe,:,path,ftype,trust
です。
rule
: コンパイルされたポリシー・ルールのルール番号。「ポリシー・ルールのリスト」を参照してください。dec
: fapolicydがルールに対して行う決定。perm
: ルールに適用される権限。- サブジェクト・オプションのいずれか。
:
: サブジェクト・オプションとオブジェクト・オプションを区切るセパレータ。- オブジェクト・オプションのいずれか。
パフォーマンス制御
パフォーマンス制御オプションは、メモリー使用量および処理の向上に役立ちます。
次のオプションは、パフォーマンスを向上させるためにfapolicydによって使用されるキャッシュのサイズを制御するために使用できます。どちらのオプションでも、割り当てられたメモリーを可能なかぎり小さく保つことを目的としていますが、統計レポートから計算できる削除に対するヒットの割合を最大化するために十分なメモリーがキャッシュに割り当てられているようにします。衝突によるキャッシュ・チャーンを回避するには、そのキャッシュ・サイズ値を素数に設定することを検討してください。
- subj_cache_size: サブジェクト・キャッシュが保持するエントリ数を制御します。デフォルト値は「1549」です。
- obj_cache_size: オブジェクト・キャッシュが保持するエントリ数を制御します。デフォルト値は「8191」です。
デバッグおよび許可モード
デフォルトでは、fapolicydは強制モードで構成されています。許可モードでは、fapolicydが実行をブロックしている可能性があるイベントを許可しますが、引き続きイベントを監査します。許可モードは、適切なロギング構成を有効にして使用すると、デバッグ時に役立ちます。fapolicydを使用して保護するシステムで許可モードを有効にしたままにしないでください。
許可モードを有効にするには、/etc/fapolicyd/fapolicyd.conf
を編集し、permissive
構成オプションを1に設定します。変更を有効にするには、fapolicydサービスを再起動する必要があります。
オプションで、デバッグを有効にしてfapolicydを許可モードでアクティブ・プロセスとして実行すると、イベントが発生したときにイベントに関する詳細情報を取得できます。
- fapolicydサービスを停止します。
sudo systemctl stop fapolicyd
--permissive
および--debug
オプションを有効にして、コマンドラインからfapolicydを実行します。sudo fapolicyd --permissive --debug
次のような出力が表示されます
Loading rule file: ## This file is automatically generated from /etc/fapolicyd/rules.d %languages=application/x-bytecode.ocaml,application/x-bytecode.python,application/java-archive,text/x-java,application/x-java-applet,application/javascript,text/javascript,text/x-awk,text/x-gawk,text/x-lisp,application/x-elc,text/x-lua,text/x-m4,text/x-nftables,text/x-perl,text/x-php,text/x-python,text/x-R,text/x-ruby,text/x-script.guile,text/x-tcl,text/x-luatex,text/x-systemtap allow perm=any uid=0 : dir=/var/tmp/ allow perm=any uid=0 trust=1 : all allow perm=open exe=/usr/bin/rpm : all allow perm=open exe=/usr/bin/python3.9 comm=dnf : all deny_audit perm=any pattern=ld_so : all deny_audit perm=any all : ftype=application/x-bad-elf allow perm=open all : ftype=application/x-sharedlib trust=1 deny_audit perm=open all : ftype=application/x-sharedlib allow perm=execute all : trust=1 allow perm=open all : ftype=%languages trust=1 deny_audit perm=any all : ftype=%languages allow perm=any all : ftype=text/x-shellscript deny_audit perm=execute all : all allow perm=open all : all Loaded 14 rules Changed to uid 980 Initializing the trust database fapolicyd integrity is 0 backend rpmdb registered backend file registered Loading rpmdb backend Loading file backend Checking if the trust database up to date Importing trust data from rpmdb backend Importing trust data from file backend Entries in trust DB: 86032 Loaded trust info from all backends(without duplicates): 86032 Trust database checks OK added /dev/shm mount point added / mount point added /var/oled mount point added /boot mount point added /boot/efi mount point added /run/user/982 mount point added /run/user/1000 mount point Starting to listen for events
拒否されるイベントは、
dec=deny_audit
でタグ付けされます。ヒント:
デバッグ出力は冗長にできます。拒否イベントのみを出力するには、標準の--debug
オプションのかわりに--debug-deny
オプションを使用します。ただし、拒否イベントを監査するためにデバッグ・モードで実行する必要はありません。詳細は、「拒否イベントの監査」を参照してください。拒否イベントの詳細情報を取得する必要がある場合は、システム・ログに記録するようにルールを変更します。詳細は、「デフォルト・ポリシー・ロギングの変更」を参照してください。- 実行中のデーモンを終了するには、[Ctrl]+[C]キーの組合せを使用してSIGINTを送信し、プロセスを中断します。
拒否イベントの監査
ausearch
コマンドを使用し、fanotifyメッセージを使用して追跡されるように、拒否されたイベントを監査ログに表示します。
fapolicydイベントのロギングを開始するには、少なくとも1つのルールがauditdに定義されている必要があります。ルールが定義されていない場合、監査ログにイベントは表示されません。監査用のルールを作成して作業を開始できます。たとえば、次のように/etc/fapolicyd
で構成の変更を監査するルールを作成できます:
sudo tee /etc/audit/rules.d/40-fapolicyd.rules > /dev/null <<'EOF'
# This policy monitors /etc/fapolicyd/ for changes to configuration
# This rule is generated to ensure that events are logged to the audit log for fapolicyd tracking
-w /etc/fapolicyd/ -p wa -k fapolicyd_changes
EOF
この変更を有効にするには、auditdサービスを再起動するか、システムをリブートする必要があります。auditdサービス実行を再起動するには:
sudo service auditd restart
ノート:
Auditdは、systemctl
コマンドを使用して再起動できません。
拒否イベントは監査ログに記録され、ausearch
コマンドを使用して確認できます。次に例を示します:
sudo ausearch --start today -m fanotify
読みやすい出力を作成するには、aureport
を使用します。次に例を示します:
sudo ausearch --start today -m fanotify --raw | aureport --file