Auf meinem Fedora 18 Notebook habe ich versucht, bei aktiviertem SELinux die OpenVPN-Integration des NetworkManager zu benutzen. Ging aber erstmal nicht. In /var/log/messages fand ich:
Apr 6 13:03:54 hydrogen nm-openvpn[21025]: Cannot load certificate file /home/softmetz/Dokumente/vpn/openvpn.cert.pem: error:0200100D:system library:fopen:Permission denied: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Außerdem bekam ich einen SElinux-Alert im System-Tray angezeigt.
SELinux is preventing /usr/sbin/openvpn from open access on the file /home/softmetz/Dokumente/vpn/openvpn.cert.pem.
***** Plugin openvpn (47.5 confidence) suggests ****************************
If sie openvpn.cert.pem an den Standard-Speicherort verschieben möchten, so das openvpn open Zugriff hat.
Then sie müssen die cert-Datei ins ~/.cert-Verzeichnis verschieben
Do
# mv /home/softmetz/Dokumente/vpn/openvpn.cert.pem ~/.cert
# restorecon -R -v ~/.cert
***** Plugin openvpn (47.5 confidence) suggests ****************************
If sie die Kennzeichnung von openvpn.cert.pem ändern möchten, so dass openvpn open Zugriff darauf hat
Then sie müssen die Markierungen korrigieren.
Do
# semanage fcontext -a -t home_cert_t /home/softmetz/Dokumente/vpn/openvpn.cert.pem
# restorecon -R -v /home/softmetz/Dokumente/vpn/openvpn.cert.pem
***** Plugin catchall (6.38 confidence) suggests ***************************
If sie denken, dass es openvpn standardmässig erlaubt sein sollte, open Zugriff auf openvpn.cert.pem file zu erhalten.
Then sie sollten dies als Fehler melden.
Um diesen Zugriff zu erlauben, können Sie ein lokales Richtlinien-Modul erstellen.
Do
zugriff jetzt erlauben, indem Sie die nachfolgenden Befehle ausführen:
# grep openvpn /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
Additional Information:
Source Context system_u:system_r:openvpn_t:s0
Target Context unconfined_u:object_r:user_home_t:s0
Target Objects /home/ninan/.cert/openvpn.c
ert.pem [ file ]
Source openvpn
Source Path /usr/sbin/openvpn
Port <Unknown>
Host hydrogen
Source RPM Packages openvpn-2.2.2-9.fc18.x86_64
Target RPM Packages
Policy RPM selinux-policy-3.11.1-87.fc18.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name hydrogen
Platform Linux hydrogen 3.8.5-201.fc18.x86_64 #1 SMP Thu
Mar 28 21:01:19 UTC 2013 x86_64 x86_64
Alert Count 13
First Seen 2013-04-06 13:03:10 CEST
Last Seen 2013-04-10 08:48:39 CEST
Local ID 85255eb7-cf82-47a6-b108-d086aeeaddfe
Raw Audit Messages
type=AVC msg=audit(1365576519.644:573): avc: denied { open } for pid=7585 comm="openvpn" path="/home/softmetz/Dokumente/vpn/openvpn.cert.pem" dev="dm-0" ino=257061 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file
type=SYSCALL msg=audit(1365576519.644:573): arch=x86_64 syscall=open success=no exit=EACCES a0=7fff98655ed8 a1=0 a2=1b6 a3=238 items=0 ppid=7583 pid=7585 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 ses=4294967295 tty=(none) comm=openvpn exe=/usr/sbin/openvpn subj=system_u:system_r:openvpn_t:s0 key=(null)
Hash: openvpn,openvpn_t,user_home_t,file,open
audit2allow
#============= openvpn_t ==============
allow openvpn_t user_home_t:file open;
audit2allow -R
require {
type openvpn_t;
}
#============= openvpn_t ==============
userdom_mmap_user_home_content_files(openvpn_t)
Diese Fehlermeldung ist mal aussagekräftig, wenn auch sprachlich etwas holprig. Ich tat also, wie mir geheißen:
If sie openvpn.cert.pem an den Standard-Speicherort verschieben möchten, so das openvpn open Zugriff hat. Then sie müssen die cert-Datei ins ~/.cert-Verzeichnis verschieben Do # mv /home/softmetz/Dokumente/vpn/openvpn.cert.pem ~/.cert # restorecon -R -v ~/.cert
Diesen Hinweis habe ich in weiser Voraussicht etwas abgewandelt in
# mv /home/softmetz/Dokumente/vpn/*.cert.pem ~/.cert # restorecon -R -v ~/.cert
weil ich ja noch mehr Dateien (CA-Certs, Private-Key, Public-Key, etc) für OpenVPN brauche. Dann noch die neuen Pfade in der NetworkManager-Konfiguration angegeben, und schon geht es.


