Centos

如果我不想使用 unlabeled_t,是否需要為 /etc/zabbix/ 創建自定義文件上下文類型?

  • March 17, 2020

我在 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 手冊頁(https://www.systutorials.com/docs/linux/man/8-zabbix_selinux/),但確實沒有合適的上下文文件類型。我知道,我可以創建自己的文件上下文類型,但我不是真正的專家,所​​以我不知道這是否是最好的解決方案。所以我的問題是如果我不想使用基本類型 unlabeled_t,是否有更好的方法或者我真的需要創建自己的文件上下文類型?

您可能從不支持 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/及其中的任何文件都將被標記httpd_sys_rw_content_t,Zabbix 的啟動腳本(伺服器和代理)將分別獲得適當的標籤zabbix_initrc_exec_tzabbix_agent_initrc_exec_t

以下來自一個“vanilla”RHEL 7.7 測試虛擬機,根本沒有安裝 Zabbix 包:

[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 

引用自:https://unix.stackexchange.com/questions/573251