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 /etc
geändert , wahrscheinlich , da dies die Standardbezeichnung für Dateien und Verzeichnisse unter zu sein scheint . Sie sollten dies wahrscheinlich tun, bevor Sie verwenden .unlabeled_t
etc_t
/etc
audit2allow
etc_t
wä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_t
und die Startskripte von Zabbix, sowohl Server als auch Agent, erhalten die entsprechenden Beschriftungen zabbix_initrc_exec_t
bzw. 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