====== SELinux 設定 ======
{{indexmenu_n>80}}
[[ja:documentation:start|Pandora FMS ドキュメント一覧に戻る]]
===== 概要 =====
Pandora FMS では、インストールは常に Security-Enhanced Linux (**SELinux**) を無効にして行う必要があります。 インストール後、環境によって有効にする必要がある場合の設定について詳しく説明します。
===== Rocky Linux 8 =====
==== Audit2allow のインストール ====
**Audit2allow** を利用したルールを作成します。これは必要なアクションを許可する役割を持ちます。
ポリシーのルール作成を開始する前に、**Audit2allow** を使用できるようにいくつかのパッケージをインストールする必要がある場合があります。
**root** または同等の権限でコマンドラインから入力します (コマンドの先頭に **sudo** を付けます):
dnf install selinux-policy-devel -y
dnf install policycoreutils-python-utils -y
==== SELinux ログディレクトリの場所 ====
**SELinux** が返すエラーは、以下にあります。
* ''/var/www/html/pandora_console/log/audit.log''
* ''/var/log/messages''
**OUM** によって Pandora FMS を更新する場合は、[[:ja:documentation:pandorafms:management_and_operation:11_managing_and_administration#ローカルサーバログ|対応する]]**logrotate** ファイルを変更する必要があります。
**SELinux** がブロックするものをより明確に確認するには、以前の //logs// を削除し、新しいレコードで再度生成されるまで待つことをお勧めします。
**syslog** を停止する必要があります (このサービスは **rsyslog** とも呼ばれます)。**root** または同等の権限でコマンドターミナルに入力します (コマンドの前に **sudo** を付けます)。
systemctl stop syslog
''audit.log'' および //log// システムメッセージファイルを削除する必要があります。
rm /var/www/html/pandora_console/log/audit.log /var/log/messages
**syslog** を再起動します (このサービスは **rsyslog** とも呼ばれます)。
systemctl start syslog
==== SELinux 設定 ====
**SELinux** を設定するには、設定ファイル ''/etc/selinux/config'' を変更します。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
* **SELinux** を制限モードで実行し、モジュールルール内に表示されているものだけを実行できるようにする必要がある場合は、これを ''enforcing'' に設定して、**SELinux** によって拒否された実行を (''audit.log'' を通じて) 削除する必要があります。
* アクションをブロックするのではなく、警告 (//warnings//) を表示する必要がある場合は、それらを ''permissive'' のままにして、''audit.log'' ファイルでこれらの //warnings// を確認します。
==== ポリシールールを作成するためのエントリーの検索 ====
最新の //ログ// エントリを表示するには、**root** または同等の権限でコマンドターミナルを入力します (コマンドの前に **sudo** を付けます)。
tail -f /var/www/html/pandora_console/log/audit.log /var/log/messages
次のようなエラーが表示される場合があります。
type=AVC msg=audit(1431437562.755:437): avc: denied { write } for pid=1835 comm="httpd" name="collections" dev=dm-0 ino=266621 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir
これらのエラーを **SELinux** が解釈できるルールに変換するには、以下を実行する必要があります。
grep collections /var/www/html/pandora_console/log/audit.log | audit2allow -M pandora
これにより、現在のディレクトリに 2 つのファイルが作成されます。
pandora.pp
pandora.te
新しいルールを有効にするには、以下を実行する必要があります。
sudo semodule -i pandora.pp
不足しているルールを追加するには、このプロセスを繰り返します。すべてのルールを追加すると、**SELinux** はエラーの報告をしなくなります。
==== Pandora FMS の適切な動作に必要なルール ====
Pandora FMS が実行するすべてのサービスが正しく動作するようにしたい場合は、次の操作を許可するいくつかのルールを作成する必要があります。
* コレクションの作成、更新、削除
* 計画タスクによるメール送信 (cronジョブ)
* エージェントのリモート設定
* **snmptrapd** 監視
* **NetFlow** 監視
そうでないと、**SELinux** はこれらの操作に関連するアクションをブロックします。
これらすべてのルールを 1 つに統合して、Pandora FMS を完全に使用できるようにする方法は次のとおりです。
grep -e data_in -e collections -e var_spool_t -e zip -e md5 -e denied /var/log/audit/audit.log | audit2allow -M pandora
次に、上記の手順を繰り返してルールを有効にします。これにより、Pandora FMS と **SELinux** 間のすべての競合が解消されます。**root** または同等の権限 (コマンドの前に **sudo** を付けます) を使用してコマンドターミナルに入力します。
sudo semodule -i pandora.pp
=== 実践的なまとめ ===
Pandora FMS で **SELinux** を使用するためのルールがまとめられています。特定のケースごとに、値とパラメータを ''dev=sdaX'' や ''pid=XXX'' などのカスタマイズされた方法で変更する必要があることに注意してください。
**setsebool** コマンドは、**SELinux** の //booleans// を設定するためのツールです。''-P'' オプションは、再起動後も設定された値を維持することを示し、命令の末尾の ''1'' は true 値を示し、アプリケーションを有効化します。**root** または同等の権限でコマンドターミナルに入力します (コマンドの前に **sudo** を付けます)。
setsebool -P httpd_unified 1
setsebool -P httpd_read_user_content 1
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_execmem 1
setsebool -P httpd_can_network_connect_db 1
setsebool -P httpd_can_connect_ldap 1
setsebool -P authlogin_nsswitch_use_ldap 1
setsebool -P nis_enabled 1
setsebool -P httpd_setrlimit 1
**chcon** コマンドは、ファイルの **SELinux** コンテキストを変更します。''-t'' オプションは **SELinux** ファイルタイプを示し、''-R'' オプションはそれをディレクトリとそのすべての内容に再帰的に適用します。**root** または同等の権限でコマンドターミナルに入力します (コマンドの前に **sudo** を付けます)。
chcon -R -t httpd_sys_content_rw_t /var/www/html/pandora
chcon -R -t httpd_sys_content_rw_t /var/spool/pandora/
chcon -R -t httpd_sys_content_rw_t /tmp/
以下のルールが追加され、それぞれのケースで必要なカスタマイズが常に適用されます。**root** または同等の権限でコマンドターミナルに入力します (コマンドの前に **sudo** を付けます)。
echo 'type=AVC msg=audit(1709637797.944:2074063): avc: denied { write } for pid=176072 comm="php-fpm" name="collections" dev="sda5" ino=142704842 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir permissive=1' | audit2allow -a
echo 'type=AVC msg=audit(1709639101.328:2100929): avc: denied { unlink } for pid=152354 comm="php-fpm" name="gotty_cron_tmp.log" dev="sda5" ino=134725871 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=file permissive=1' | audit2allow -a
echo 'type=AVC msg=audit(1710850539.491:32359350): avc: denied { write } for pid=3895348 comm="connection" name="tmp" dev="sda5" ino=8398230 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:httpd_sys_rw_content_t:s0 tclass=dir permissive=1' | audit2allow -a
次のコマンドは、''rules_apply.pp'' という名前のファイルにルールを作成するために使用されます。
audit2allow -a -M rules_apply
前の手順で **semodule** コマンドを使用して作成されたルールが適用されます。
semodule -i rules_apply.pp
[[ja:documentation:start|Pandora FMS ドキュメント一覧に戻る]]