我试图在 Fedora 19 下以强制模式使用 selinux (selinux-policy-targeted) 运行 OpenVPN,但我遇到了 AVC,我不完全确定如何处理。
以 root 身份从命令行启动 OpenVPN 工作正常,但通过 systemd (systemctl start openvpn@vpcbridge
,如果
/etc/openvpn/vpcbridge.conf
存在)启动它会导致:
ERROR: Cannot ioctl TUNSETIFF tap0: Permission denied (errno=13)
并在/var/log/audit
:
type=AVC msg=audit(1376412420.435:60): avc: denied { relabelfrom } for
pid=720 comm="openvpn" scontext=system_u:system_r:openvpn_t:s0
tcontext=system_u:system_r:ifconfig_t:s0 tclass=tun_socket
作为参考,以下是 OpenVPN 配置:
port 1194
user openvpn
dev tap0
proto udp
secret vpcbridge.key
keepalive 10 120
persist-tun
persist-key
如果我运行audit2allow
,我会得到一个如下所示的模块文件:
module openvpn 1.0;
require {
type openvpn_t;
type ifconfig_t;
class tun_socket relabelfrom;
}
#============= openvpn_t ==============
allow openvpn_t ifconfig_t:tun_socket
relabelfrom;
但是加载会产生错误:
# semodule -i openvpn.pp
libsepol.print_missing_requirements: openvpn's global requirements were
not met: type/attribute openvpn_t (No such file or directory).
libsemanage.semanage_link_sandbox: Link packages failed (No such file or
directory).
semodule: Failed!
我不知道该如何处理这个错误。
更新:根据要求,输出seinfo -t ...
:
# seinfo -t | grep openvpn
openvpn_tmp_t
openvpn_unconfined_script_exec_t
openvpn_status_t
openvpn_etc_rw_t
openvpn_var_lib_t
openvpn_var_run_t
openvpn_port_t
openvpn_server_packet_t
openvpn_etc_t
openvpn_initrc_exec_t
openvpn_var_log_t
openvpn_unconfined_script_t
openvpn_exec_t
openvpn_t
openvpn_client_packet_t
答案1
我现在没有 Fedora 系统可以检查,但现在我稍后读到这个“openvpn”这个名字似乎有点通用。以至于 OpenVPN 软件包本身可能有一个名为 that 的模块,用于在安装时添加的类型信息。如果您为模块指定不同的名称,这种情况还会发生吗?比如openvpn-tun
什么的?
我对具体细节不是 100% 确定(这基本上只是一个疯狂的猜测),但如果两个模块具有相同的名称,似乎会产生冲突。特别是如果一个模块依赖关于对方的信息。
编辑:
终于到家了。看起来有一个具有该名称的本机 SELinux 模块:
[root@localhost test]# cat /etc/fedora-release
Fedora release 18 (Spherical Cow)
[root@localhost test]# semodule -l | grep openvpn
openvpn 1.11.0
但看来我对 Fedora 上 SELinux 工作方式的理解是错误的。看起来这一切都在整个发行版的一个策略包中:
[root@localhost modules]# pwd
/etc/selinux/targeted/modules/active/modules
[root@localhost modules]# ls -lh openvpn.pp
-rw-r--r--. 1 root root 12K Jun 27 08:59 openvpn.pp
[root@localhost modules]# rpm -qf $PWD/openvpn.pp
selinux-policy-targeted-3.11.1-98.fc18.noarch