selinux-policies auf den letzten funktionierenden Stand bringen

Wie Ihr ( und .tux. )  im letzten Bericht zu selinux-policy lesen konntet, wurde das SEL Problem mit einem generellen Downgrade erstmal behoben. Heute schauen wir uns an, wie man das trotz aller Gegenwehr von Red Hat wieder auf den letzten aktuellen Stand geupdated bekommt 😉

Fedora und die Repostrukturen

Wenn man dnf downgrade benutzt, bekommt man nicht automatisch die letzte Version von einem Paket installiert, sondern nur die nächst kleinste im Repository (Repo) und genau da happerts meiner Meinung nach bei Fedora und Red Hat. Man sollte ja annehmen, daß die aktuelle Version und die vorherige Version eines Paketes zur Verfügung stehen, tun Sie aber nicht. Fedora betreibt ein Basis Repo und ein Updates Repo. Eine funktionierende alte Fassung liegt im Basis Repo, die aktuellste im Updates Repo. Zwischenversionen gibt es leider keine und das ist, denke ich, ein Fehler von Seiten der Distribution.

Immer wieder Koji

Und wieder ist es Koji, die Buildverwaltung für Fedora, die uns bei der Sache als nützliche Datenquelle dient:

https://koji.fedoraproject.org/koji/buildinfo?buildID=1076199

Dort holen wir uns die nötigen RPMs für die lokale Installation:

https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-targeted-3.13.1-283.34.fc27.noarch.rpm
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-devel-3.13.1-283.34.fc27.noarch.rpm
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-doc-3.13.1-283.34.fc27.noarch.rpm
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-3.13.1-283.34.fc27.noarch.rpm

Wer meiner Anweisung gefolgt ist, und in die dnf.conf eine Sperre für das Paket eingetragen hat, muß diese Sperre jetzt natürlich wieder entfernen, bevor er das Update durchführen kann.

Manuelles DNF Update

Der Befehl „dnf update ./selinux-policy-*“ ist unser Freund:

[root]# dnf update ./selinux-policy-*
Letzte Prüfung auf abgelaufene Metadaten: vor 0:24:25 am Di 10 Jul 2018 09:59:33 CEST.
Abhängigkeiten sind aufgelöst.
================================================================================================================================================================================================================================================================================
Paket Arch Version Paketquelle Größe
================================================================================================================================================================================================================================================================================
Aktualisieren:
selinux-policy noarch 3.13.1-283.34.fc27 @commandline 541 k
selinux-policy-devel noarch 3.13.1-283.34.fc27 @commandline 1.4 M
selinux-policy-doc noarch 3.13.1-283.34.fc27 @commandline 2.7 M
selinux-policy-targeted noarch 3.13.1-283.34.fc27 @commandline 10 M

Transaktionsübersicht
================================================================================================================================================================================================================================================================================
Aktualisieren 4 Pakete

Gesamtgröße: 15 M
Ist dies in Ordnung? [j/N]:j
Pakete werden heruntergeladen:
Transaktionsüberprüfung wird ausgeführt
Transaktionsprüfung war erfolgreich.
Transaktion wird getestet
Transaktionstest war erfolgreich.
Transaktion wird ausgeführt
Vorbereitung läuft : 1/1 
Aktualisieren : selinux-policy-3.13.1-283.34.fc27.noarch 1/8 
Ausgeführtes Scriptlet: selinux-policy-3.13.1-283.34.fc27.noarch 1/8 
Ausgeführtes Scriptlet: selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 
Aktualisieren : selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 
Ausgeführtes Scriptlet: selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 
Aktualisieren : selinux-policy-doc-3.13.1-283.34.fc27.noarch 3/8 
Aktualisieren : selinux-policy-devel-3.13.1-283.34.fc27.noarch 4/8 
Ausgeführtes Scriptlet: selinux-policy-devel-3.13.1-283.34.fc27.noarch 4/8 
Aufräumen : selinux-policy-devel-3.13.1-283.14.fc27.noarch 5/8 
Aufräumen : selinux-policy-doc-3.13.1-283.14.fc27.noarch 6/8 
Aufräumen : selinux-policy-targeted-3.13.1-283.14.fc27.noarch 7/8 
Ausgeführtes Scriptlet: selinux-policy-targeted-3.13.1-283.14.fc27.noarch 7/8 
Aufräumen : selinux-policy-3.13.1-283.14.fc27.noarch 8/8 
Ausgeführtes Scriptlet: selinux-policy-3.13.1-283.14.fc27.noarch 8/8 
Running as unit: run-ra699effd01cd4ceba2ad927e7889ce3b.service
Running as unit: run-r27b6453c4a5e4d2ab971a1766a434a30.service
Überprüfung läuft : selinux-policy-3.13.1-283.34.fc27.noarch 1/8 
Überprüfung läuft : selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 
Überprüfung läuft : selinux-policy-doc-3.13.1-283.34.fc27.noarch 3/8 
Überprüfung läuft : selinux-policy-devel-3.13.1-283.34.fc27.noarch 4/8 
Überprüfung läuft : selinux-policy-targeted-3.13.1-283.14.fc27.noarch 5/8 
Überprüfung läuft : selinux-policy-3.13.1-283.14.fc27.noarch 6/8 
Überprüfung läuft : selinux-policy-devel-3.13.1-283.14.fc27.noarch 7/8 
Überprüfung läuft : selinux-policy-doc-3.13.1-283.14.fc27.noarch 8/8

Aktualisiert:
selinux-policy.noarch 3.13.1-283.34.fc27 selinux-policy-devel.noarch 3.13.1-283.34.fc27 selinux-policy-doc.noarch 3.13.1-283.34.fc27 selinux-policy-targeted.noarch 3.13.1-283.34.fc27

Fertig.

Nicht vergessen die dnf.conf wieder mit einer Sperre zu versehen :

# cat /etc/dnf/dnf.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
exclude=selinux-pol*

Damit wären wir jetzt auf dem Stand, vor dem defekten Paket und bekommen erstmal keine Updates mehr für die selinux-policies.

Ob das so clever war, die automatischen Tests zu umgehen?

Wenn ich der Darstellung im Buildsystem glauben darf, dann wurde für den Push Tests umgangen. Da es nachweislich in die Hose gegangen ist, ist das wohl keine gute Idee.

Wissen eigentlich alle was diese Policies so machen ?

mit dem Befehl „rpm -qi selinux-policy“ bekommen wir eine Beschreibung des Pakets. Leider ist die in diesem Fall äußerst schmal geraten:

„SELinux Base package for SELinux Reference Policy – modular.
Based off of reference policy: Checked out revision 2.20091117“

Daher schauen wir doch mal in ein solches Paket rein. Jetzt ist selinux-policy kein sehr nützliches Beispiel, es setzt nämlich lediglich die System-Konfiguration und andere Metainfos. Viel spannender ist das selinux-policy-targeted Paket, daß die eigentlichen Regeln enthält. U.a. finden wir dies File darin:

/usr/share/selinux/targeted/default/active/modules/100/gnome/cil

Wenn man sich das jetzt mit less ansieht, sieht man nichts, da es bzip2 komprimiert ist. Daher brauchen wir jetzt das hier:

bzless /usr/share/selinux/targeted/default/active/modules/100/gnome/cil

u.A. findet man dann dort die Beschreibungen welche Dateien welche SEL-Contexte haben sollen:

(Die Liste ist nicht vollständig und nur für die eine Gnome Klasse)

(filecon „/var/run/user/[^/]*/\.orc(/.*)?“ any (system_u object_r gstreamer_home_t ((s0) (s0))))
(filecon „/var/run/user/[^/]*/dconf(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/var/run/user/[^/]*/keyring.*“ any (system_u object_r gkeyringd_tmp_t ((s0) (s0))))
(filecon „/root/\.cache(/.*)?“ any (system_u object_r cache_home_t ((s0) (s0))))
(filecon „/root/\.color/icc(/.*)?“ any (system_u object_r icc_data_home_t ((s0) (s0))))
(filecon „/root/\.config(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/root/\.kde(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/root/\.gconf(d)?(/.*)?“ any (system_u object_r gconf_home_t ((s0) (s0))))
(filecon „/root/\.dbus(/.*)?“ any (system_u object_r dbus_home_t ((s0) (s0))))
(filecon „/root/\.gnome2(/.*)?“ any (system_u object_r gnome_home_t ((s0) (s0))))
(filecon „/root/\.gnome2/keyrings(/.*)?“ any (system_u object_r gkeyringd_gnome_home_t ((s0) (s0))))
(filecon „/root/\.gstreamer-.*“ any (system_u object_r gstreamer_home_t ((s0) (s0))))
(filecon „/root/\.cache/gstreamer-.*“ any (system_u object_r gstreamer_home_t ((s0) (s0))))
(filecon „/root/\.local.*“ any (system_u object_r gconf_home_t ((s0) (s0))))
(filecon „/root/\.local/share(/.*)?“ any (system_u object_r data_home_t ((s0) (s0))))
(filecon „/root/\.local/share/icc(/.*)?“ any (system_u object_r icc_data_home_t ((s0) (s0))))
(filecon „/root/\.Xdefaults“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/root/\.xine(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/etc/gconf(/.*)?“ any (system_u object_r gconf_etc_t ((s0) (s0))))
(filecon „/tmp/gconfd-USER/.*“ file (system_u object_r gconf_tmp_t ((s0) (s0))))
(filecon „/usr/share/config(/.*)?“ any (system_u object_r config_usr_t ((s0) (s0))))
(filecon „/usr/bin/gnome-keyring-daemon“ file (system_u object_r gkeyringd_exec_t ((s0) (s0))))
(filecon „/usr/bin/mate-keyring-daemon“ file (system_u object_r gkeyringd_exec_t ((s0) (s0))))
(filecon „/usr/libexec/gconf-defaults-mechanism“ file (system_u object_r gconfdefaultsm_exec_t ((s0) (s0))))
(filecon „/usr/libexec/gnome-system-monitor-mechanism“ file (system_u object_r gnomesystemmm_exec_t ((s0) (s0))))
(filecon „/usr/libexec/kde(3|4)/ksysguardprocesslist_helper“ file (system_u object_r gnomesystemmm_exec_t ((s0) (s0))))

und in der findet sich dann kein Hinweis auf den gdm-greeter oder die gnome-session .. Womit es undefiniert ist.

Ich hab versucht da  durchzusteigen, aber das ist echt komplex das Zeugs 😉 Vielleicht will ja mal einer ein Diagnosetool dafür bauen, da berichte ich dann gerne drüber.

Fedora – GDM stürzt wegen SELinux ab

Ein schlecht ausgerolltes Update der SELinux Policies unter Fedora 27 führt dazu, daß der Loginbildschirm, im Fachjargon „Greeter“ genannt, mit einer unschönen Meldung absemmelt.

Fehleranalyse

Betroffene Version:  sellinux-policy 3.13.1-283.35

Wenn Eurer GDM Greeter also mit dem „blah blah ‚Benutzer abmelden'“ Fehler stehen bleibt, dann prüft folgendes:

1. „STRG+F2“ damit Ihr eine Root Konsole bekommt

2. „grep gdm /var/log/messages oderjournalctl -xe | grep gdm

kommt dabei das hier raus:

Jul 8 01:40:51 eve systemd[1627]: selinux: avc: denied { status } for auid=n/a uid=42 gid=42 cmdline=“/usr/libexec/gdm-x-session gnome-session –autostart /usr/share/gdm/greeter/autostart“ scontext=system_u:system_r:xdm_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=system permissive=0

dann hilft Euch das hier weiter, falls keine neuere Version im Repository verfügbar ist (also vorher mit dnf -y update checken) :

dnf -y downgrade selinux-policy*
systemctl restart gdm

und anschließend das erneute Update mit dem Eintrag „exclude=selinux-p*“ in die /etc/dnf/dnf.conf verhindern.

Fazit

So eine Scheiße will einem um 1.10 Uhr nachts wirklich nicht passieren!

Linux – FireFox Wayland Patch killed WebGL

Mit einem Patch, ist alles weg. Die Entwickler von Firefox haben es geschafft, statt WebGL auf Wayland zu laufen zu bringen, haben sie mit einem anscheinend un/schlechtgetesteten Patch WebGL komplett abgeschossen.

WTF is WebGL

Was die WebGL Schnittstelle vom Firefox und anderen Browsern kann, könnt Ihr hier ansehen:

http://helloracer.com/webgl/

Nach nein, geht ja nicht mehr. Wurde ja durch einen schlechten Patch für Wayland deaktviert, statt es kompatibler zu machen 🙁

Wayland, nicht fertig, in aller Munde, alle nur am fluchen und das wohl zu recht. Das Teil macht nur Ärger an jeder Ecke,und dann hat man es noch gar nicht laufen 😀

Bei Redhat kann man sich z.b Glück mit einem Befehl ( rpm -q –changelog packagename) die Changelogs ansehen und beim Firefox findet man das hier:

… which makes GL layer compositor usable …

* Mi Mai 30 2018 Martin Stransky <stransky@redhat.com> – 60.0.1-5</stransky@redhat.com>
– Added workaround for mozbz#1464823 which makes GL layer compositor usable on Wayland.

* Di Mai 29 2018 Martin Stransky <stransky@redhat.com> – 60.0.1-4
– Added fix for mozbz#1464808 – Set default D&D action to move on Wayland.

* Fr Mai 25 2018 Martin Stransky <stransky@redhat.com> – 60.0.1-3
– Added fix for mozbz#1436242 (rhbz#1577277) – Firefox IPC crashes.
– Added fix for mozbz#1462640 – Sandbox disables eglGetDisplay() call on Wayland/EGL backend.

* Fr Mai 25 2018 Martin Stransky <stransky@redhat.com> – 60.0.1-2
– Enable Wayland backend.

* Mi Mai 23 2018 Jan Horak <jhorak@redhat.com> – 60.0.1-1</jhorak@redhat.com>
– Update to 60.0.1

Als ich den Hohn in den Patchnodes gelesen habe, wäre ich fast vom Stuhl gefallen.

which makes GL layer compositor usable on Wayland“ und schaltet ihn für alle anderen ab 🙁 WOW.. Echt gut getestet Mozilla.

HOW TO FIX

Die Auswirkungen von dem Patch kann man teilweise beheben, so daß wenigstens etwas noch funktioniert, nämlich die 3D Demo oben 😉

Dazu geht man in die „about:config“ und ändert bei „webgl.force-enabled“ den Wert von False auf True.

Und wer alles wieder sehen will, der ändert noch „webgl.webgl2-compat-mode“ auf  True.

Damit kann man dann auch wieder „https://map2fly.flynex.de/“ sehen.

Update (14:29):

… oder, wie uns grade berichtet wird, in 60.0.2 soll der Bug behoben sein.

… wurde so ebend bestätigt. Wer das Update schon installieren will, bevor es im Stable verfügbar ist, hier der Link:

https://koji.fedoraproject.org/koji/buildinfo?buildID=1090754

Könnt Ihr Euch aber sparen, ich habs grade als stable ins repo gepusht. Kommt also die nächsten Stunden bei Euch so oder so an 😉

Teamviewer 13 funtzt unter Wayland nicht sauber

Wie wir in empirischen Tests gerade nachweisen konnten, funktioniert Teamviewer 13 nicht mehr mit Wayland. Man kann zwar noch von Linux aus auf Windows zugreifen, aber auf ein Linux mit Wayland ist nicht mehr möglich. Man bekommt in dem Fall nur ein schwarzes Bild.

„Nutzen Sie X.ORG“

Teamviewer empfiehlt daher in einer langen Verkettung von Erklärungen, daß man doch die Desktopsession auf X.org umstellen sollte, also den alten X-Server. Klappt leider auch nicht 🙁 Genauso ein schwarzes Bild, wie unter Wayland.

Dabei beweist z.B. der SimpleScreenRecorder, daß es möglich ist, auch unter Wayland alles zu capturen, was man sich so vorstellen kann.Warum der Teamviewer das nicht kann, können wir hier leider nicht herausfinden.

Bleibt nur zu hoffen, daß es entweder eine bessere Lösung gibt, zumal das ja sowieso bedenklich ist, eine Session mit Audio/Video/Tastatur über die Teamviewerserver zu schicken, oder das Problem bald gelöst wird.

Workaround

Die praktische Antwort auf das Problem lautet dann natürlich auf VNC zurück zu fallen. Dafür muß im Router z.B. der Fritz!box ein Portforwarding eingerichtet werden. Im Screenshot ist ein Beispiel für GlusterFS und SSH abgebildet:

Symbolbeispiel für Portfreigaben auf der Fritzbox

Symbolbeispiel für Portfreigaben auf der Fritzbox

Für VNC muß man i.d.R. Port 5800-5910 freigeben und zum heimischen PC umleiten. Vorteil dabei ist, daß man jeden Port auf einen anderen Rechner leiten kann, so daß der Admin aus der Ferne festlegen kann zu welchen Desktoprechner er will.

VNC != VNC

VNC kann aber auch ein Problem in sich sein. So lange nur ein Adminuser auf den PC soll, ist das kein Problem, weil VNC heute meist so eingestellt ist, daß es eine eigene Desktopsession aufmacht. Wenn man sich dort einloggt, kann es vorkommen, daß z.B. Pulseaudio einen Abgang macht, weil es irrtümlich doppelt gestartet wird.

Was man also im VNC braucht, ist eine Shared Session, so daß man sieht, was auf dem physischen Bildschirm zu lesen ist:

x0vncserver -display :1 -SecurityTypes=none

aber der Befehl erlaubt jedem sofort ohne Passwort auf den Schirm zu connecten, was man natürlich NICHT will.

mit „vncpasswd“ kann man ein Zugangspasswort vergeben und dem Server so starten:

x0vncserver -display :1 -SecurityTypes=TLSVnc,VncAuth,TLSPlain -PasswordFile=.vnc/passwd

Und nicht vergessen, VNC braucht zum Desktop Sharing X.ORG 😉 Das will unter Wayland vermutlich aus dem gleichen Grund nicht, wie Teamviewer auch nicht wollte.

 

Fedora – ClamAV 0.99.3 installieren

Es kam gestern doch sehr überraschend in den Medien, daß ClamAV ein Rudel Schwachstellen hat und auf keinem normalen Weg wurde darüber informiert. Es gab weder eine Meldung über die CERTs, noch auf der Redhat Security Mailingliste. Die Schwachstelle ist so gravierend, daß auf unserer Serverfarm sämtliche ClamAVds bis zum Patch deaktiviert wurden.

Abhilfe schaffen

Derzeit gibt es in de Repos noch keine gepatchte Version, obwohl Sie bereits zur Verfügung steht. Wer den Early-Alpha-Beta-Test mitmachen will, der findet die Pakete für Fedora hier : https://koji.fedoraproject.org/

Folgende Pakete solltet Ihr dann downloaden:

clamav
clamav-data
clamav-filesystem
clamav-lib
clamav-server
clamav-update

installiert wird das dann mit „rpm -Uv /pfad/zu/den/rpms/clam*rpm„. Fertig.