Я установил 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