Pandora FMS のための SELinux 設定

概要

Pandora FMS では、インストールは常に Security-Enhanced Linux (SELinux ) を無効にして行う必要があります。 インストール後、環境によって有効にする必要がある場合の CentOS 7 での設定について詳しく説明します。

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 を更新する場合は、対応する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=sdaXpid=XXX などのカスタマイズされた方法で変更する必要があることに注意してください。

setsebool コマンドは、SELinuxbooleans を設定するためのツールです。-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

次のコマンドは、ru​​les_apply.pp という名前のファイルにルールを作成するために使用されます。

audit2allow -a -M rules_apply

前の手順で semodule コマンドを使用して作成されたルールが適用されます。

semodule -i rules_apply.pp

CentOS 7

Audit2allow のインストール

CentOS 7 はまもなくサポート終了(EOL)になります。 このドキュメントは過去の記録のために保持しています.

Audit2allow を利用したルールを作成します。これは必要なアクションを許可する役割を持ちます。

ポリシーのルール作成を開始する前に、Audit2allow を使用できるようにいくつかのパッケージをインストールする必要がある場合があります。 root または同等の権限でコマンドラインから入力します (コマンドの先頭に sudo を付けます):

yum install selinux-policy-devel -y
yum install policycoreutils-python -y

SELinux ディレクトリの場所

CentOS 7 はまもなくサポート終了(EOL)になります。 このドキュメントは過去の記録のために保持しています.

SELinux が返すエラーは、以下にあります。

  • /var/log/audit/audit.log
  • /var/log/messages

重要:

バージョン 747 までは、監査ログのパスは /var/log/audit/audit.log です。

OUM からアップデートした場合は、logrotate ファイルを修正する必要があります。

確認をしやすくするために、すでに出ているログを削除し新たなログが出るまで待つことを強くお勧めします。

syslog を停止します。(rsyslog の場合もあります)

# /etc/init.d/syslog stop

audit.log とシステムのメッセージログファイルを削除します。

# rm /var/www/html/pandora_console/log/audit.log /var/log/messages

syslog を再開します。

# /etc/init.d/syslog start

SELinux 設定

CentOS 7 はまもなくサポート終了(EOL)になります。 このドキュメントは過去の記録のために保持しています.

SELinux を希望の内容で設定するには、設定ファイルを編集します。

# 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 で確認します)。別のオプションとしては SELinux を “permissive” に設定します。この場合、実行は制限されませんが、audit.log ファイルにエラーが記録されます。

ポリシールールを作成するためのエントリーの検索

CentOS 7 はまもなくサポート終了(EOL)になります。 このドキュメントは過去の記録のために保持しています.

最新のログを見るにはつぎのようにします。

# 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 の適切な動作に必要なルール

CentOS 7 はまもなくサポート終了(EOL)になります。 このドキュメントは過去の記録のために保持しています.

Pandora FMS が実行するすべてのサービスが正しく動作するようにしたい場合は、次の操作を許可するいくつかのルールを作成する必要があります。

- コレクションの作成、更新、削除

- プログラムタスクによるメール送信 (cronジョブ)

- エージェントのリモート設定

逆にいうと、SELinux はこれらの操作に関連するアクションをブロックします。

SELinux が有効化された状態で 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

その後、ルールを有効化するための前述の対応を行う必要があります。

# sudo semodule -i pandora.pp