我遇到一个由ZAbbix支持的文件,使用/var/log/snmptt/snmptt.log文件处理所有的SNMP陷阱数据。
ZAbbix_proxy.log
23323:20140430:105246.532 sleeping for 5 seconds 23329:20140430:105247.070 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied 23329:20140430:105247.070 sleeping for 1 seconds 23329:20140430:105248.070 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied 23329:20140430:105248.071 sleeping for 1 seconds 23329:20140430:105249.071 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied 23329:20140430:105249.071 sleeping for 1 seconds
SE Linux审计日志。
time->Wed Apr 30 09:58:11 2014 type=SYSCALL msg=audit(1398869891.560:41198): arch=c000003e syscall=2 success=no exit=-13 a0=16ffee0 a1=0 a2=1 a3=8 items=0 ppid=23309 pid=23329 auid=4294967295 uid=995 gid=996 euid=995 suid=995 fsuid=995 egid=996 sgid=996 fsgid=996 ses=4294967295 tty=(none) comm="zabbix_proxy" exe="/usr/sbin/zabbix_proxy_sqlite3" subj=system_u:system_r:zabbix_t:s0 key=(null) type=AVC msg=audit(1398869891.560:41198): avc: denied { read } for pid=23329 comm="zabbix_proxy" name="snmptt.log" dev="dm-5" ino=133641 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file ---- time->Wed Apr 30 09:58:12 2014 type=SYSCALL msg=audit(1398869892.560:41199): arch=c000003e syscall=2 success=no exit=-13 a0=16ffee0 a1=0 a2=1 a3=8 items=0 ppid=23309 pid=23329 auid=4294967295 uid=995 gid=996 euid=995 suid=995 fsuid=995 egid=996 sgid=996 fsgid=996 ses=4294967295 tty=(none) comm="zabbix_proxy" exe="/usr/sbin/zabbix_proxy_sqlite3" subj=system_u:system_r:zabbix_t:s0 key=(null) type=AVC msg=audit(1398869892.560:41199): avc: denied { read } for pid=23329 comm="zabbix_proxy" name="snmptt.log" dev="dm-5" ino=133641 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
我不明白SELinux。
任何人都知道我需要在文件上激活什么标志,以避免这个文件访问拒绝来自SELinux消息?
不幸的是,没有这样的“旗帜”。 最接近的是一个boolean ,根据zabbix_selinux(8)联机帮助页,没有定义的boolean来授予对任意位置的日志文件的读访问权限。
您不提供有关/var/log/snmptt/目录下文件实际标记的详细信息。 根据semanage() ,期望的标签可能与其他SNMP相关日志文件的期望标签匹配或不匹配:
# semanage fcontext -l | grep '/var/log/snmp' /var/log/snmpd\.log.* regular file system_u:object_r:snmpd_log_t:s0
那么解决scheme就是授予对这些日志文件的zabbix读取权限。 使用audit2allow(1)过滤审计日志:
# echo " > time->Wed Apr 30 09:58:11 2014 > type=SYSCALL msg=audit(1398869891.560:41198): arch=c000003e syscall=2 success=no exit=-13 a0=16ffee0 a1=0 a2=1 a3=8 items=0 ppid=23309 pid=23329 auid=4294967295 uid=995 gid=996 euid=995 suid=995 fsuid=995 egid=996 sgid=996 fsgid=996 ses=4294967295 tty=(none) comm="zabbix_proxy" exe="/usr/sbin/zabbix_proxy_sqlite3" subj=system_u:system_r:zabbix_t:s0 key=(null) > type=AVC msg=audit(1398869891.560:41198): avc: denied { read } for pid=23329 comm="zabbix_proxy" name="snmptt.log" dev="dm-5" ino=133641 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file > ---- > time->Wed Apr 30 09:58:12 2014 > type=SYSCALL msg=audit(1398869892.560:41199): arch=c000003e syscall=2 success=no exit=-13 a0=16ffee0 a1=0 a2=1 a3=8 items=0 ppid=23309 pid=23329 auid=4294967295 uid=995 gid=996 euid=995 suid=995 fsuid=995 egid=996 sgid=996 fsgid=996 ses=4294967295 tty=(none) comm="zabbix_proxy" exe="/usr/sbin/zabbix_proxy_sqlite3" subj=system_u:system_r:zabbix_t:s0 key=(null) > type=AVC msg=audit(1398869892.560:41199): avc: denied { read } for pid=23329 comm="zabbix_proxy" name="snmptt.log" dev="dm-5" ino=133641 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file > " | audit2allow #============= zabbix_t ============== allow zabbix_t var_log_t:file read;
audit2allow(1)联机帮助页中详细介绍了构build自定义模块的过程。
您通常会构build模块,安装或更新模块,并在新的安全限制下testing应用程序的行为,并进一步优化模块。 在您testing/开发新模块时,可以轻松将您的机器置于permissive模式。 使用setenforce(8)来做到这一点。