我希望所有用户都可以使用(开放)VPN 连接,但如果我不是 root,则会被 SELinux 阻止。
var/log/audit/audit.log
我首先以非宽松模式查看:
type=AVC msg=audit(1659770552.275:309): avc: denied { getattr } for pid=1923 comm="openvpn" path="/root/.cert/nm-openvpn/ie-dub.prod.blk.com_udp-tls-auth.pem" dev="nvme0n1p3" ino=802406 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
之后我设置允许查看被阻止的内容:
type=AVC msg=audit(1659770802.776:318): avc: denied { getattr } for pid=2124 comm="openvpn" path="/root/.cert/nm-openvpn/hu-bud.prod.blk.com_udp-tls-auth.pem" dev="nvme0n1p3" ino=802398 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=1
type=AVC msg=audit(1659770802.777:319): avc: denied { read } for pid=2124 comm="openvpn" name="hu-bud.prod.blk.com_udp-tls-auth.pem" dev="nvme0n1p3" ino=802398 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=1
type=AVC msg=audit(1659770802.777:320): avc: denied { open } for pid=2124 comm="openvpn" path="/root/.cert/nm-openvpn/hu-bud.prod.blk.com_udp-tls-auth.pem" dev="nvme0n1p3" ino=802398 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=1
type=NETFILTER_CFG msg=audit(1659770805.461:321): table=firewalld:6 family=1 entries=5 op=nft_register_rule pid=916 subj=system_u:system_r:firewalld_t:s0 comm="firewalld"
type=SERVICE_START msg=audit(1659770805.528:322): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
看来我需要更改 *.pem 文件的上下文标签,但不清楚要使用什么上下文。
答案1
如果您查看 中的文件/etc/openvpn
,您会看到它们具有标签openvpn_etc_t
:
# cd /etc/openvpn
# ls -lZ
total 0
drwxr-x---. 1 root openvpn system_u:object_r:openvpn_etc_t:s0 0 Jun 10 13:36 client
drwxr-x---. 1 root openvpn system_u:object_r:openvpn_etc_t:s0 0 Jun 10 13:36 server
如果您最初在此目录中创建了配置文件,那么它们已经具有正确的标签。但是,从错误来看,openvpn 正在尝试从/root
;读取文件。这通常不是一个好主意,因为它要求服务具有更高的权限。
最简单的解决方案可能是将文件重新定位到/etc/openvpn
.不要使用mv
,因为这将保留现有的(不正确的)标签。像这样的事情会很好地工作:
tar -C /root/.cert -cf- . | tar -C /etc/openvpn -xf-
这会将nm-openvpn
目录放入/etc/openvpn
正确的标签中。
您将需要更新您的连接配置文件才能使用新位置中的证书。