使 SELinux 与 OpenVPN 配合使用(在 NetworkManager 中)

jel*_*ord 5 linux vpn openvpn permissions selinux

我一直在尝试使用 OpenVPN 连接到我的工作网络。通过命令行使用它可以正常工作:

openvpn user.conf
Run Code Online (Sandbox Code Playgroud)

不过,我没有费心用 DNS 正确设置它,而且看起来有点痛苦。我更愿意像其他 VPN 一样通过网络管理器使用它。问题是这样的:我存储我的user.crt,随着ca.crtuser.key~/.openvpn/(这似乎是一个合理的地方,以保持这样的事情。当我尝试通过网络管理器进行连接,它只是告诉我,连接失败的检查。/var/logs/messages揭示了原因:SELinux的正在某处执行一些阻止openvpn读取我的证书的策略。我尝试按照 SELinux 故障排除程序提供的所有说明进行操作,但无济于事。

然后,我确实愚蠢地从我的 SELinux 配置中删除了 openvpn 策略(使用 SELinux 管理 gui,可从 fedora 存储库中获得)。各种各样的地狱爆发了(它甚至不再让它绑定一个命名端口)。

问题非常紧迫,所以我最终只是为会话禁用了 SELinux(一切正常)。但是我必须在某个时候再次打开它,所以我的问题是:

如何首先在 SELinux 中恢复 openvpn 的原始策略文件,然后再授予 openvpn 访问我的主目录中的证书的权限?

我也尝试过 SE Policy Generator 工具,但没有明显效果(它卡在我给策略命名的对话中)。

Pat*_*hes 3

要恢复 OpenVPN 策略模块,只需在终端上运行以下命令root

semodule -i /usr/share/selinux/targeted/openvpn.pp.bz2
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因该文件丢失(不太可能,但我不确定system-config-selinux到底是什么原因),请重新安装 SELinux 策略包并重试:

yum reinstall selinux-policy-targeted
Run Code Online (Sandbox Code Playgroud)

最后,要允许 OpenVPN 从您的主目录读取文件,请运行以下命令:

setsebool -P openvpn_enable_homedirs 1
Run Code Online (Sandbox Code Playgroud)

您还应该能够在图形管理工具中的SELinux 布尔值openvpn_enable_homedirs列表中进行设置。