我在使用 ZAbbix 访问文件处理所有 SNMP 陷阱数据时遇到问题/var/log/snmptt/snmptt.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
???
答案1
不幸的是,没有这样的“标志”。最接近的标志是boolean
,根据zabbix_selinux(8)
手册页,没有boolean
定义授予对任意位置的日志文件的读取权限。
您没有提供有关/var/log/snmptt/
目录下文件的实际标签的详细信息。预期标签可能与其他 SNMP 相关日志文件的预期标签匹配,也可能不匹配,如下所示semanage()
:
# semanage fcontext -l | grep '/var/log/snmp'
/var/log/snmpd\.log.* regular file system_u:object_r:snmpd_log_t:s0
那么,解决方案就是授予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)
手册页中有详细说明。
您通常会构建一个模块,安装或更新它,并在新的安全限制下测试应用程序的行为,并进一步优化模块。这很容易做到,permissive
只需在测试/开发新模块时将您的机器置于模式即可。使用setenforce(8)
它来执行此操作。