Eer*_*nen 4 openvpn selinux centos6
我正在运行 CentOS 6.4。
# cat /etc/centos-release
CentOS release 6.4 (Final)
Run Code Online (Sandbox Code Playgroud)
经过一些更新和重新启动后,OpenVPN 无法启动。
# service openvpn start
Starting openvpn: [FAILED]
Run Code Online (Sandbox Code Playgroud)
/var/log/messages在 openvpn 上显示以下输出:
Nov 13 14:09:58 host kernel: type=1400 audit(1384344598.334:39761): avc: denied { read write } for pid=5777 comm="openvpn" name="openvpn" dev=dm-0 ino=54527865 scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:openvpn_var_log_t:s0 tclass=dir
Nov 13 14:09:58 host openvpn[5777]: Options error: --status fails with '/var/log/openvpn/openvpn-status.log': Permission denied
Run Code Online (Sandbox Code Playgroud)
所以显然这是一个 SELinux 问题。
我尝试根据此错误报告更新到openvpn-2.3.2-2.el6.x86_64但没有成功。我应该如何调试/解决这个问题?
编辑:感谢 Iain 和 Jiri Xichtkniha。我更改为/etc/openvpn/server.conf 中日志文件的位置以读取
status /var/log/openvpn-status.log
Run Code Online (Sandbox Code Playgroud)
这适用于当前的政策。
一个快速的解决方法是将日志文件更改/var/log/openvpn-status.log为 openvpn 进程的运行方式,openvpn_t并且它在策略中具有写入标记的文件var_log_t(如 /var/log 应该是)的权限。
的默认上下文/var/log/openvpn是openvpn_var_log_t
matchpathcon /var/log/openvpn
/var/log/openvpn system_u:object_r:openvpn_var_log_t:s0
Run Code Online (Sandbox Code Playgroud)
一个需要更多管理的较长过程是允许openvpn_t写入openvpn_var_log_t/var/log/openvpn 获得的上下文,例如
echo "host kernel: type=1400 audit(1384344598.334:39761): avc: denied { read write } for pid=5777 comm="openvpn" name="openvpn" dev=dm-0 ino=54527865 scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:openvpn_var_log_t:s0 tclass=dir" | audit2allow -M localOpenVpn
Run Code Online (Sandbox Code Playgroud)
这将生成一个您可以安装的 .pp 文件
semodule -i localOpenVpn.pp
Run Code Online (Sandbox Code Playgroud)
不要忘记将 localOpenVpn.te 和 localOpenVpn.pp 存储在安全的地方。
对于 Jiri Xichtkniha
如果您查看生成的 .te 文件以及其他内容
#============= openvpn_t ==============
#!!!! The source type 'openvpn_t' can write to a 'dir' of the following types:
# net_conf_t, pcscd_var_run_t, openvpn_etc_t, openvpn_tmp_t, openvpn_var_run_t,
tmp_t, etc_t, var_run_t, var_log_t, krb5_host_rcache_t, tmp_t, cluster_var_lib_t,
cluster_var_run_t, root_t, cluster_conf_t
Run Code Online (Sandbox Code Playgroud)
请注意,openvpn_var_log_t未列出。