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를 사용하지 않으려면 실제로 내 자신의 파일 컨텍스트 유형을 만들어야 합니까?입니다.
답변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/
와 그 안의 모든 파일에는 레이블이 지정되고 httpd_sys_rw_content_t
서버와 에이전트 모두 Zabbix의 시작 스크립트에는 각각 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