我有一个应用程序,它作为一个系统服务在RHEL7上运行,它利用系统日志进行日志记录。为了简化对此应用程序的监视,我将rsyslogd配置为将日志从该服务(仅)写入专用日志文件。
现在我想使用httpd提供这个日志文件,这样用户就可以轻松地监视应用程序了。
我面临的问题是,无论我如何设置文件上下文,selinux似乎都会阻止我做我想做的事情:
rsyslog写入var_log_thttpd从httpd_sys_content_t读取据我所知,没有任何上下文允许rsyslogd编写和从httpd读取。
我能做些什么来解决这个问题?我最终会需要创建一个自定义策略模块吗?
发布于 2017-09-13 21:48:29
您可以检查是否存在布尔值以允许使用audit2why进行访问,在这种情况下,您不需要创建自定义策略模块。
如果不存在这样的布尔值,则允许apache读取附加策略所需的日志。使用audit2allow,您可以直接创建策略模块,也可以创建所需的规则,可以用作模块的模板。
首先,您需要生成包含访问冲突的日志。若要在正常使用期间获取所有的访问冲突,请将httpd_t设置为允许模式。在允许模式下,指定类型( SELinux )不强制执行httpd_t策略,但将像往常一样生成日志:
semanage permissive -a httpd_t在验证了您的配置工作并可以使用Apache访问日志之后,请重新打开强制执行模式:
semanage permissive -d httpd_t现在使用audit2allow生成新模块并插入它:
audit2allow -a -M apache_logs
semodule -i apache_logs.pp如果希望确保只使用与httpd_t相关的审计消息来创建模块,请将审计日志中的相关行作为audit2allow的输入。例如:
grep "httpd_t" /var/log/audit/audit.log | audit2allow -M apache_logs如果要手动验证或修改audit2allow生成的规则,请使用-m选项以源格式生成模块。如果愿意,可以验证和编辑生成的模块源。完成之后,您需要构建模块。步骤在手册页示例中演示。
https://unix.stackexchange.com/questions/378934
复制相似问题