Нужно ли мне создавать пользовательский тип контекста файла для /etc/zabbix/, если я не хочу использовать unlabeled_t?

Нужно ли мне создавать пользовательский тип контекста файла для /etc/zabbix/, если я не хочу использовать unlabeled_t?

Я установил zabbix (приложение для мониторинга) на машину CentOS 7. В целях безопасности я хочу оставить 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 предлагает мне разрешить unlabeled_t для zabbix_server. Но поскольку разрешать базовый тип — плохая идея, я ищу способ решить эту проблему. Я уже посмотрел на странице руководства zabbix_selinux (https://www.systutorials.com/docs/linux/man/8-zabbix_selinux/), но на самом деле нет подходящего типа контекстного файла. Я знаю, что могу создать свой собственный тип контекстного файла, но я не эксперт, поэтому не знаю, является ли это лучшим решением. Поэтому мой вопрос заключается в том, есть ли лучший способ или мне действительно нужно создать свой собственный тип контекстного файла, если я не хочу использовать базовый тип unlabeled_t?

решение1

Вероятно, вы установили Zabbix из источника, не поддерживающего SELinux, или, возможно, SELinux был отключен при установке.

Если Zabbix не был установлен из пакета, поддерживающего SELinux, то, скорее всего, запуск restorecon -R -v /etcавтоматически изменит unlabeled_tметки на что-то другое, возможно etc_t, , поскольку это, по-видимому, метка по умолчанию для файлов и каталогов в /etc. Вероятно, вам следует сделать это перед использованием audit2allow.

etc_tбудет хорошим типом контекста для большинства файлов конфигурации.

Набор правил SELinux RHEL/CentOS 7.x на самом деле имеет некоторые встроенные положения для Zabbix: каталог /etc/zabbix/web/и все файлы в нем будут помечены httpd_sys_rw_content_t, а скрипты запуска Zabbix, как сервера, так и агента, получат соответствующие метки zabbix_initrc_exec_tи zabbix_agent_initrc_exec_tсоответственно.

Ниже приведен пример тестовой виртуальной машины RHEL 7.7 «vanilla», на которой вообще не установлены пакеты 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 

Связанный контент