CentOS 7 マシンに zabbix (監視アプリケーション) をインストールしました。セキュリティ上の理由から、selinux を強制モードのままにしておきたいと考えています。そのため、zabbix が機能するには、いくつかの権限を付与する必要があります。以下を実行します。
ausearch -c zabbix_server -m AVC -i -ts today | audit2allow -m ztest
次のような出力が得られます。
...
require {
type unlabeled_t;
type zabbix_var_run_t;
type zabbix_t;
class sock_file { create unlink };
class unix_stream_socket connectto;
class file { getattr open read };
}
#========== zabbix_t ==============
#!!!!! This avc can be allowed using the boolean 'daemons_enable_cluster_mode'
allow zabbix_t self:unix_stream_socket connectto;
#!!!!! WARNING 'unlabeled_t' is a base type.
allow zabbix_t unlabeled_t:file { getattr open read };
allow zabbix_t zabbix_var_run_t:sock_file { create unlink };
少し調べたところ、/etc/zabbix/zabbix_server.conf ファイルにファイル コンテキスト タイプ unlabeled_t があることが分かりました。これが、audit2allow が zabbix_server に unlabeled_t を許可するよう提案する理由です。しかし、基本タイプを許可するのはよくないので、この問題を解決する方法を探しています。zabbix_selinux のマニュアル ページ (参考:) ですが、適切なコンテキスト ファイル タイプは実際にはありません。独自のファイル コンテキスト タイプを作成できることはわかっていますが、専門家ではないので、これが最善の解決策かどうかはわかりません。質問は、より良い方法があるかどうか、または基本タイプ unlabeled_t を使用しない場合は、独自のファイル コンテキスト タイプを作成する必要があるかどうかです。
答え1
おそらく、SELinux 非対応のソースから Zabbix をインストールしたか、インストール時に SELinux を無効にした状態でインストールした可能性があります。
Zabbix が SELinux 対応パッケージからインストールされていない場合、 を実行すると、ラベルが にrestorecon -R -v /etc
自動的に変更される可能性があります。は の下にあるファイルとディレクトリのデフォルトのラベルであるためです。 を使用する前に、おそらくこれを行う必要があります。unlabeled_t
etc_t
/etc
audit2allow
etc_t
ほとんどの構成ファイルに適したコンテキスト タイプです。
RHEL/CentOS 7.x の SELinux ルールセットには、Zabbix 用の組み込み規定がいくつか含まれています。ディレクトリ/etc/zabbix/web/
とその中のすべてのファイルにはラベルが付けられ、Zabbix の起動スクリプト (サーバーとエージェントの両方) にはそれぞれ適切なラベルとhttpd_sys_rw_content_t
ラベルが付けられます。zabbix_initrc_exec_t
zabbix_agent_initrc_exec_t
以下は、Zabbix パッケージがまったくインストールされていない「標準」RHEL 7.7 テスト VM からのものです。
[root@localhost etc]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
[root@localhost etc]# semanage fcontext -l |grep zabbix
/var/log/zabbix.* all files system_u:object_r:zabbix_log_t:s0
/etc/zabbix/web(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
/var/lib/zabbix(/.*)? all files system_u:object_r:zabbix_var_lib_t:s0
/var/run/zabbix(/.*)? all files system_u:object_r:zabbix_var_run_t:s0
/etc/rc\.d/init\.d/(zabbix|zabbix-server) regular file system_u:object_r:zabbix_initrc_exec_t:s0
/var/lib/zabbixsrv(/.*)? all files system_u:object_r:zabbix_var_lib_t:s0
/usr/lib/zabbix/externalscripts(/.*)? all files system_u:object_r:zabbix_script_exec_t:s0
/var/lib/zabbix/externalscripts(/.*)? all files system_u:object_r:zabbix_script_exec_t:s0
/usr/bin/zabbix_server regular file system_u:object_r:zabbix_exec_t:s0
/usr/bin/zabbix_agentd regular file system_u:object_r:zabbix_agent_exec_t:s0
/usr/sbin/zabbix_proxy regular file system_u:object_r:zabbix_exec_t:s0
/usr/sbin/zabbix_agentd regular file system_u:object_r:zabbix_agent_exec_t:s0
/usr/sbin/zabbix_server regular file system_u:object_r:zabbix_exec_t:s0
/usr/sbin/zabbix_proxy_mysql regular file system_u:object_r:zabbix_exec_t:s0
/usr/sbin/zabbix_proxy_pgsql regular file system_u:object_r:zabbix_exec_t:s0
/usr/sbin/zabbix_server_mysql regular file system_u:object_r:zabbix_exec_t:s0
/usr/sbin/zabbix_server_pgsql regular file system_u:object_r:zabbix_exec_t:s0
/etc/rc\.d/init\.d/zabbix-agentd regular file system_u:object_r:zabbix_agent_initrc_exec_t:s0
/usr/sbin/zabbix_proxy_sqlite3 regular file system_u:object_r:zabbix_exec_t:s0
/usr/sbin/zabbix_server_sqlite3 regular file system_u:object_r:zabbix_exec_t:s0