Muss ich einen benutzerdefinierten Dateikontexttyp für /etc/zabbix/ erstellen, wenn ich unlabeled_t nicht verwenden möchte?

Muss ich einen benutzerdefinierten Dateikontexttyp für /etc/zabbix/ erstellen, wenn ich unlabeled_t nicht verwenden möchte?

Ich habe Zabbix (eine Überwachungsanwendung) auf einer CentOS 7-Maschine installiert. Aus Sicherheitsgründen möchte ich Selinux im erzwungenen Modus belassen. Daher muss ich meinem Zabbix einige Berechtigungen erteilen, damit es funktioniert. Wenn ich Folgendes ausführe:

ausearch -c zabbix_server -m AVC -i -ts today | audit2allow -m ztest

Ich erhalte die folgende Ausgabe:

...
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 };

Nach ein wenig Recherche habe ich herausgefunden, dass die Datei /etc/zabbix/zabbix_server.conf den Dateikontexttyp unlabeled_t hat, weshalb audit2allow mir vorschlägt, unlabeled_t für den zabbix_server zuzulassen. Da es aber keine gute Idee ist, einen Basistyp zuzulassen, suche ich nach einer Möglichkeit, dies zu lösen. Ich habe bereits in der Manpage von zabbix_selinux nachgesehen (https://www.systutorials.com/docs/linux/man/8-zabbix_selinux/), aber es gibt wirklich keinen geeigneten Kontextdateityp. Ich weiß, dass ich meinen eigenen Dateikontexttyp erstellen kann, aber ich bin kein wirklicher Experte, also weiß ich nicht, ob das die beste Lösung ist. Meine Frage ist also, ob es einen besseren Weg gibt oder ob ich wirklich meinen eigenen Dateikontexttyp erstellen muss, wenn ich den Basistyp unlabeled_t nicht verwenden möchte?

Antwort1

Sie haben Zabbix wahrscheinlich aus einer SELinux-nicht unterstützenden Quelle installiert oder SELinux bei der Installation deaktiviert.

Wenn Zabbix nicht aus einem SELinux-fähigen Paket installiert wurde, werden die Bezeichnungen beim Ausführen wahrscheinlich automatisch in etwas anderes restorecon -R -v /etcgeändert , wahrscheinlich , da dies die Standardbezeichnung für Dateien und Verzeichnisse unter zu sein scheint . Sie sollten dies wahrscheinlich tun, bevor Sie verwenden .unlabeled_tetc_t/etcaudit2allow

etc_twäre ein guter Kontexttyp für die meisten Konfigurationsdateien.

Der SELinux-Regelsatz von RHEL/CentOS 7.x verfügt tatsächlich über einige integrierte Bestimmungen für Zabbix: Das Verzeichnis /etc/zabbix/web/und alle darin enthaltenen Dateien werden beschriftet httpd_sys_rw_content_tund die Startskripte von Zabbix, sowohl Server als auch Agent, erhalten die entsprechenden Beschriftungen zabbix_initrc_exec_tbzw. zabbix_agent_initrc_exec_t.

Das Folgende stammt von einer „normalen“ RHEL 7.7-Test-VM, auf der überhaupt keine Zabbix-Pakete installiert waren:

[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 

verwandte Informationen