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.