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