Fedora

嘗試執行 OpenVPN 時出現 SELinux 重新標記問題

  • August 14, 2013

我正在嘗試在 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

我現在沒有要檢查的 Fedora 系統,但現在我在稍後讀到“openvpn”這個名字似乎有點通用。OpenVPN 軟體包本身可能有一個名為 的模組,用於在安裝時添加的類型資訊。如果你給模組一個不同的名字,這還會發生嗎?喜歡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

引用自:https://unix.stackexchange.com/questions/86612