Heartbleed – kein Ende und dann auch noch Opensuse 12.2

Das ganze Thema “Heartbleed” hält einen aus verschiedenen Gründen in Atem:

Einerseits, weil man nicht weiß, welche Systeme von Online-Diensten, die aktuell in einem Heartbleed-Test als OK gekennzeichnet werden, eigentlich wann genau vom Provider auf den momentan sichereren Stand gebracht wurden. Vielleicht geschah das erst gestern – und vorher war der Serverdienst über Monate hackbar? Auf Webservern mit CM-Systemen, Shops etc. treten die Folgen vielleicht erst künftig zu Tage ….

Es ist deshalb aus meiner Sicht schon aus Vorsichtsgründen erforderlich, alle Passwörter von solchen Diensten, bei denen SSL eine Rolle spielte, schleunigst zu ändern. Die Provider werden kaum in Gänze zugebe, dass sie auch betroffen waren. Bei gehosteten Blogs, CM-Diensten, Shops, … sind zudem umfangreichere Prüfungen auf potentielle ingeschleuste Schadcodes erforderlich. Die Heartbleed-Lücke zu stopfen ist aus meiner Sicht wirklich nur ein erster Schritt zur Schadensbegrenzung.

Der andere Grund sind die im Kundenauftrag verwalteten Server. Was Opensuse anbelangt:

Die betroffenen OpenSSL-Bibliotheken sind auf Opensuse 12.2, 12.3, 13.1 upzudaten, SSL-Zertifikate (Server- wie ggf. Client-Zertifikate) und Passwörter müssen geändert werden. Und der Kunde ist davon in Kenntnis zusetzen. Im Falle von Opensuse 12.3 und 13.1 ist wenigstens das Installieren oder Überinstallieren der aktuellen SSL-RPMs noch auf einfache Weise möglich.

Achtung: Bei den aktualisierten Opensuee-Paket-Versionen für SSL handelt es sich um gepatchte “e”-Versionen und keine “g”-Versionen der Openssl-Bibliotheken/Pakete. Also nicht dadurch verwirren lassen, dass man überall – zuletzt in Mails diverser Provider – liest, dass man unbedingt auf die g-Version upgraden müsse ! Stimmt nicht ! Eine gepatchte frühere Version tut es auch. Nicht nicht vergessen, Apache neu zu starten und danach erneut auf die Heartbleed-Schwäche zu testen!

z.B. über folgende Seite: http://filippo.io/Heartbleed/

Sonderfall Opensuse 12.2:
Leider kann man sich nicht immer aussuchen, wann die eigenen Kunden Geld in die Hand nehmen, um ihre (V-) Server upgraden zu lassen. Das Problem sind auch ein wenig die Provider, wie z.B. Strato. Die hinken mit ihren Angeboten zu virtuellen Servern bei den OS-Paketen dem Entwicklungsstand (vielleicht aus guten Gründen) immer ein ganzes Stück hinterher. V-Server bei Strato wurden z.B. noch vor einem Jahr mit Opensuse 12.2 angeboten. Nach 2 neuen Releases fällt die alte OS-Version aber aus der Update-Wartung durch Suse raus. So kann man mit einem gehosteten V-Server halt schon nach deutlich weniger als 18 Monaten aus dem Wartungsintervall herausfallen. Opensuse 12.2 wird z.B. seit Januar nicht mehr mit neuen Update-Paketen versorgt.

Was kann man nun tun, wenn man noch einen solchen “veralteten” Server verwalten muss?

Zunächst mal versuchen, dem Kunden anhand von “Heartbleed” klarmachen, wie wichtig eine relativ zeitnahe Upgrade- und Maintenance-Politik ist. Es gibt ja auf einem systematisch veraltenden System vermutlich noch viel mehr Schwachstellen als so ein Paradebeispiel wie SSL-Heartbleed. Darunter natürlich auch solche, die erst dann aufgedeckt werden, wenn es keine Updates mehr gibt.

Bekommt man vom Kunden nach einem Überzeugungsgespräch die Zeit und das Geld, so ist zunächst ein Upgrade von 12.2 auf 12.3 am sinnvollsten. Dieser Upgrade funktioniert nach meinen eigenen Erfahrungen relativ schmerzfrei. Ein Upgrade 12.2/12.3 auf 13.1 ist dagegen deutlich schwieriger, da man sich dabei mit einer Rekonfiguration des Apache-Servers herumschlagen muss, die wegen des Umstiegs der aktuellen Apache2 2.4-Version leider unumgänglich wird. Mich hat das damals (Nov. 2013) zumindest einiges an Zeit und Recherchen gekostet, bis die Webserver auf den upgegradeten 13.1-Systemen wieder anstandslos liefen.

Was aber, wenn man
aber kein Geld bekommt, um ein Upgrade durchzuführen?
Nun, dann führt wohl kein Weg an einer eigenen Kompilation des neuen SSL-Paketes aus den Sources inkl. Patch vorbei. Hierfür bietet sich ein Download der gepatchten aktuellen Source-Versionen für Opensuse 12.3 an, die dann gegen Opensuse 12.2 kompiliert werden müssen. Das ist der sicherste und korrekteste Weg. Er funktioniert und er bewahrt einen auch vor evtl. Pfad-Problemen. Die offiziellen Sources von OpenSSL und die zugehörigen Config/Make-Dateien gehen von einem anderen Verzeichnislayout als Opensuse aus.

Ein aus Sicherheitsaspekten deutlich problematischerer Weg besteht darin, Pakete zu nutzen, die von Dritten erstellt wurden. Das ist nicht nur eine Frage des Vertrauens. Programmware aus “privaten” Quell-Repositories zu installieren, ist immer ein potentielles Sicherheitsproblem und erfordert mindestens einen vorherigen Vergleich des (angeblich) verwendeten Sourcecodes gegenüber offiziellen Quellen und weitere nachfolgende Tests. Bei dem Zeitaufwand kann man dann auch schon gleich selbst kompilieren. Na ja, ….

Jedenfalls soll nicht unerwähnt bleiben, dass es unter
http://download.opensuse.org/repositories/home:/
Repositories gibt, die eine gepatchte 12.3 OpenSSL-Paketversion anbieten, die für Opensuse 12.2 kompiliert wurde.

Konkrete Hinweise findet man in
http://forums.opensuse.org/showthread.php/496947-opensuse-12-2-and-ssh-heartbleed/page3

Aber hier muss jeder selber wissen, wie er vorgeht. Bei allem Fluchen über die aktuellen Probleme:

  • Gut finde ich, dass die Sicherheitslücke gefunden wurde.
  • Gut finde ich auch, dass es Leute in der Opensource Community gibt, die sich regelmäßig um Sicherheit kümmern. Denn Lücken durch systematische Tests zu finden, erfordert Zeit und Aufwand. Und für den entsprechenden Einsatz sollte man den Leuten danken.
  • Noch besser finde ich, dass man kurzfristig mit Tipps versorgt wird, was man tun sollte und kann, um die Lücke zu schließen.

Schlecht finde ich nach der aktuellen Erfahrung die kurzen Wartungszyklen der Opensuse-Versionen. Das zeigt, dass die Community zwischenzeitlich immer mal wieder Long Term-Versionen (z.B. mit 3 Jahren Update-Versorgung) bereitstellen sollte.

Ansonsten bleibt mir nur, viel Erfolg beim Prüfen von Logs, Datenbankeinträgen etc. auf den Servern zu wünschen, die der OpenSSL-Verwundbarkeit ausgesetzt waren. Denn SSL setzt man ja z.B. ein, wenn Zugänge und Datentransfers für CM-Systeme etc. abgesichert werden sollten. Wurden die gehackt, so ….

Nachtrag 29.04.2012 :
Die in den vergangenen zwei Wochen in der dt. Presse erschienen Artikel zu Thema Heartbleed finde ich zum Teil unerträglich. Klar, es war ja zu erwarten, dass die Vertreter kommerzieller Closed Source Firmen das zum Anlass nehmen, Open Source zu kritisieren. Aber muss die Presse so unkritisch auf dieser Welle mitschwimmen? Welche Scheinheiligkeit! Als ob kommerzielle Interessen Sicherheit verbessern würden und als ob Entwickler bei kommerziellen Firmen besser und systematischer arbeiten würden als im Opensource Bereich. Nach meinen eigenen Erfahrungen kann man das keineswegs als grundsätzliche Feststellung treffen.
Tja, und man muss eigentlich lange nach Beispielen für Sicherheitsprobleme im kommerziellen Umfeld suchen? Spontan fallen mir ein: Die vielen, fast kontinuierlichen Probleme mit Java in den letzten Jahren, deren sich der kommerzielle Gigant Oracle nur schleppend annahm. Die laufenden Probleme mit dem MS IE und speziell die aktuellen Probleme mit dem MS IE 10. Oder auch: Die gezielte Entkernung von Linux in Bezug auf alle Sicherheitsaspekte bei der frühen Entwicklung von Android durch Google. Oder das Hacking von Linux Servern Anfang 2013, das seinen Ausgangspunkt allerdings in
massiven Fehlern von MS Windows Frontend-Systemen hatte …
Nein, es gibt nun wirklich keinen kausalen Zusammenhang der Art : kommerzielle Firma, Closed Source = Sicherheit. Allen Kritikern sei gesagt: Kehrt vor euren eigenen Haustür.

Wann tritt jemand das heutige Pulseaudio endlich in die Tonne für Fehlversuche?

Pulseaudio (PA) geht mir nun zum x-ten Male auf die Nerven und irgendwie muss ich meinen Frust mal loswerden. Ich sollte dazu sagen, dass ich in alten Zeiten eine Weile mit Jack gearbeitet habe, mich aber in den Untiefen der vielschichtigen aktuellen Sound-Architektur(en) nicht mehr auskenne und auch nicht auskennen will. Ich will Sound als Anwender unter Linux nach Bedarf hören, vom Browser, von Playern, von der CD und aus anderen Quellen. Wo sinnvoll will ich Surround-Sound transportiert bekommen und auch einen Upmix von Stereo auf 5.1 oder 7.1 Mehrkanal-Ton. Ich möchte gerne einen zentralen Equalizer für den Desktop (den z.B. KDE mangels Interesse der Entwickler verweigert). Ich möchte die Möglichkeiten der Sound-Karte ausnutzen und Input- wie Output-Kanäle getrennt regeln und auch Ton-Aufnahmen per Micro machen. Und Skype soll laufen.

Immer mal wieder richte ich ja Linux-Laptop- und Linux-Desktop-Systeme ein. Für den Eigenbedarf, aber auch mal für Bekannte oder Kunden. Die wollen eigentlich genau dasselbe – also das, was sie unter Windows auch bekommen. Und immer wieder gibt es bei der Systemeinrichtung einen gemeinsamen Schritt, zu dem ich regelmäßig gezwungen bin – nämlich der vollständigen Deinstallation von Pulseaudio [PA] und zugehöriger Tools. Einzige Ausnahme – und auch die nur manchmal: Laptops mit einfachen, sehr beschränkten Onboard-Soundkarten auf Basis von Standard-Massen-Chips.

Vielleicht war es ja mal eine gute Idee, zwischen Soundquellen (Applikationen) und die Hardwaretreiber einen eigenen Layer einzuschalten, der noch dazu netzwerkfähig ist. Aber das Ergebnis – nämlich PA – ist auf dem heutigen Stand für den normalen Anwender schlicht eine Katastrophe. Was immer PA angeblich an supertollen Dingen kann, die ALSA oder Jack in ihren jeweiligen Welten nicht können. Als Otto Normalverbraucher merke ich erstmal die elementaren Fehler und Unzulänglichkeiten. Vor dem Einsatz eines netzwerkweit arbeitenden Soundservers und vieler Spezialanwendungen kommen eben viel, viel einfachere Ansprüche des normalen Anwenders und erst recht des potentiellen Umsteigers von Windows :

Zunächst möchte man mal auf dem jeweiligen Desktop (u.a. KDE) etwas hören und dabei die Regelmöglichkeiten einer Soundkarte so gut ausnutzen können, wie es die aktuellen Treiber (meist Alsa-Libs) halt zulassen.

Hat sich PA in diesem Sinne bewährt? Meiner eigenen Erfahrung nach überhaupt nicht. Vor allem nicht für komplexere Soundkarten. Meine zusammenfassende Meinung – und die beruht auf mehrjährigen Erfahrungen mit vielen unterschiedlichen Systemen und Soundkarten – ist:

Es gibt kaum ein sog. “Werkzeug”, das in den letzten Jahren in den meisten Linux-Distributionen eingeführt wurde und das so sehr für eine Entmündigung des Anwenders und durch eben diesen nicht kontrollierbare Folgeprobleme steht wie “Pulseaudio” (PA). Man braucht hierzu nur mal das Internet zu durchsuchen. Siehe eine kleine Liste am Ende des Artikels.

Eigene schlechte Erfahrungen mit PA über viele Installationen hinweg – seit es PA gibt

Meine Meinung stützt sich auf folgende regelmäßige Erfahrungen (meist unter Opensuse und KDE, aber auch schon mal unter Debian und Ubuntu):

  • PA war und ist buggy – es schafft aus Sicht des Endanwenders in der Regel mehr Probleme, als das es welche löst.
  • PA blendet in der Standardinstallation gängiger Distributionen die oft vielfältigen Einstell-Möglichkeiten vieler Audiokarten brutalst möglich aus. Aus vielen Reglern werden oft genau einer oder zwei. Ein normaler Anwender hat i.d.R. keine Chance, die z.T. massiven Einschränkungen zu umgehen. Warum das so sein muss, weiß wohl nur der PA-Erfinder. Beim unbedarften Anwender bleibt aufgrund von PA bei gleicher Soundkarte gegenüber
    einer Windows-Umgebung meist der Eindruck eines Steinzeit-Soundsystems zurück. (Was allein an PA liegt, mit Plain Alsa sieht die Welt nämlich meist ganz anders aus; s.u.)
  • PA ist in seinem Standardverhalten (gekoppelte Lautstärke-Regelungen verschiedener Ein- und Ausgangskanäle) für den Standardanwender nicht nachvollziehbar und daher auch nicht sinnvoll kontrollierbar.
  • Im Aufnahmebereich fehlen für manche Soundkarten wichtige Regler; manchmal treten gegenüber einer Plain Alsa-Installation bei Aufnahmen unmotivierte Übersteuerungen auf.
  • Auch durch den Einsatz des PA-Mixers “pavucontrol” (ebenfalls buggy) und seiner Möglichkeiten wird man die Kopplungseffekte der Lautstärkeregelung bei vielen Mehrkanal-Audiokarten nicht los oder erhält. In vielen Fällen erhält man nach der gewünschten Einstellung der Kanaltrennung sogar ein völlig fehlerhaftes bis unkontrollierbares Verhalten bei der Lautstärkeregelung. (Ein Beispiel für eine Xonar D2X: Regelt man einen Kanal nach oben, werden plötzlich alle Kanäle gleichmäßig leiser. Danach geht die Lautstärkeregelung gar nicht mehr vernünftig. Ähnliches ist mir auch bei diversen Audigy-Karten und auch Realtek-Chips passiert – alles im Gegensatz zu Plain Alsa)
  • Manche Fehler der letzten Zeit – z.B. automatisches Springen der Lautstärke auf 100% bei KDE-Systemsoundtests – führten/führen zur Gefahr der Zerstörung von über externe Verstärker angeschlossene Lautsprecheranlagen.
  • PA führt bei einigen Soundkarten zu einer fehlerhaften Ansteuerung und zu dauerhaften knackenden Nebengeräuschen. Diese verschwinden oft bei einer reinen Alsa Installation
  • PA führt immer wieder zu massiven Problemen mit Anwendungen wie Skype – und manchmal zu unkontrollierbaren Dauergeräuschen schon beim Starten von Skype oder aber bei Versuchen im Audio-Einstellungs-Bereich. Auch hier wiederim Gegensatz zu einer reinen Alsa Installation.
  • Einziger Pluspunkt der PA-Tool-Palette ist aus meiner Sicht der LADSPA nutzende Equalizer, der dann unter PA naturgemäß systemweit wirkt. Aber auch hier gibt es manchmal hörbare Latenzprobleme.

Ursprünglich mal zur Vereinheitlichung der Benutzerschnittstelle gegenüber Sound-Systemen wie ALSA und dem bei KDE darüber liegenden “phonon” gedacht, zwingt PA dem User gegenüber einer reinen Alsa-Installation Einschränkungen und “Effekte” auf, die mit Vernunft nicht nachvollziehbar sind. Ich habe mich wirklich immer wieder bemüht, mich mit PA anzufreunden. Manchmal stundenlang. Übrig geblieben sind über die Jahre hinweg genau zwei Laptops mit Allerwelts-Onboard-Soundkarten, bei denen ich PA manchmal sinnvoll nutzen kann, ohne mir Ärger einzuhandeln. Aber auch nicht ohne zusätzliche Tools wie “pavucontrol”. Und selbst dann funktioniert nicht immer alles wie es soll: So schließt eine sinnvolle Nutzung von Skype die Anwendung von PA aus.

Dann gab es zwischenzeitlich auch richtig folgenschwere Bugs – u.a. im Zusammenspiel mit KDE. Vor einiger Zeit etwa das automatische Hochregeln der Lautstärke auf 100% nach dem ersten Anspielen von Systemsounds. Mit der Gefahr, seine Lautsprecher und das Verhältnis zu den Nachbarn zu ruinieren. Nicht weiter vertiefen will ich das gekoppelte Hochregeln von Volumecontrols sowohl für Multikanal Output-Devices wie gleichzeitig (!) auch für Input-Quellen. Den Schwachsinn wird man meist auch bei entsprechender Konfiguration von “pavucontrol” nicht los.

Plain Alsa – mehr als eine Alternative, wenn man nicht Sound im Netz verteilen will

Dagegen steht für den Normalanwender die Alternative einer Sound-Konfiguration unter Plain ALSA. Mein glasklares Ergebnis nach vielen Experimenten ist:

Eine Plain Alsa-
Installation funktioniert für den Alltagsbedarf meist schon auf Anhieb relativ problemfrei. Selbst bei schwierigeren Fällen bringt einen ein wenig Einsatz und Konfigurationsversuche deutlich weiter als PA. In einer reinen Alsa-Umgebung entdeckt der unbedarfte User plötzlich, was man alles an seiner Soundkarte regeln kann, dass man Input- und Output-Pegel unabhängig adjustieren kann, dass das Aufnehmen problemfrei geht, dass Skype problemfrei funktioniert, etc.. Ich habe das immer wieder und für ein breites Spektrum an Soundkarten (diverse Creative Soundblaster-Varianten, Audigy (2/4)- und XFi-Karten, Terratec-USB-Karten, Realtek-Onboard-Chips [PCI, PCIe, USB] und Xonar-Karten) hinter mir. Zuletzt für eine Xfi-Titanium und eine rel. kostspielige Xonar D2X. Zu beiden und deren Konfiguration schreibe ich bald mal Artikel, wenn ich denn Zeit finden sollte.

Man muss die Reaktion auch Linux-skeptischer Nutzer halt auch mal erlebt haben, wenn man verstehen will, welchen Schaden PA bzgl. der Linux-Wahrnehmung anrichten kann. Nach einer Opensuse-Standardinstallation (mit PA) auf Desktops mit SB Live, Audigy, XFi, …-Karten und einer Surround-Umgebung passiert immer das gleiche: Welche Enttäuschung – man kann ja nichts einstellen oder es funktioniert auch unter “pavucontrol” nichts wie erwartet. Der Anwender spürt Chaos…

Wenn man den Betroffenen nach einer De-Installation von PA unter Kmix dann plötzlich statt einem oder zwei Reglern eine umfassende Palette an funktionierenden Mehrkanal-Controls und Schaltern für spezielle Optionen der Soundkarten anbieten kann: Erstaunen und freudiges Kopfnicken.

audigy

xonar

(Zugegeben: bei der Xonar muss man noch ein wenig manuell für den “Stereo to 5.1/7.1”-Upmix tun). Die typische Frage, die dann vom künftigen Linux-Anwender kommt, ist: Warum ist denn die normale Alsa-Konfiguration dann nicht der primäre Standard der verschiedenen Linux-Distributionen? Tja, eine sehr gute Frage …

Was sagen andere ?

Ich zitiere aus https://de.opensuse.org/YaST_Module_Sound
“Da die Soundsteuerung über PulseAudio oftmals noch für Probleme (ALSA, Phonon, GStreamer) sorgt, kann es nötig sein PulseAudio zu deaktivieren, ja manchmal sogar komplett zu deinstallieren, um bestehende Probleme zu lösen.”

Ganz genau. Ergänzung aus meiner eigenen Erfahrung:

Die Deinstallation von PA ist fast immer nötig, um eine vernünftig funktionierende Sound-Umgebung unter Linux zu bekommen, wenn man eine etwas avanciertere Soundkarte hat.

Ich zitiere weiter aus http://www.tweakhound.com/2013/03/25/opensuse-12-3-tips-tricks-and-tweaks/ :

Disable or Uninstall Pulseaudio and reconfigure sound card:
Pulseaudio is and has been the source of many issues.
 
If you are having issues with sound you can:
1 – Check all PulsuAudio settings by installing pavucontrol.
Once installed it will be in the KMenu > Multimedia > Volume Control section.
Use it to configure your settings.
2 – Disable PulseAudio.
3 – Uninstall PulseAudio.
 
New users should simply disable PulseAudio:
Open YaST and go to > Hardware > Sound >
click the Other
button and choose PulseAudio Configuration >
Uncheck Enable PulseAudio Support and click OK.

Hervorhebung durch mich. Und das Gleiche auch hier: http://steamcommunity.com/app/221410/discussions/0/864979883831623432/ :

“The only problem with openSUSE is audio. If they stayed with just ALSA most of their problems would be solved and they wouldn’t need Wiki Pages telling how to get sound working on Skype/Steam.”

Ganz genau ! PA und Teile seiner Tools tragen letztlich zur Abschreckung normaler Nutzer von Linux bei. PA bietet aus meiner Sicht gegenüber dem, was ein aktuelles ALSA heute nativ abliefert, keinen nennenswerten Vorteil – wenn man mal von netzwerkfähigen Sound-Servern absieht. Im Gegenteil wird der unbedarfte Anwender um vielfältige Bedien- und Einsatzmöglichkeiten seiner Soundkarten betrogen.

Opensuse und KDE: Löst euch endlich von PA – oder lasst es komplett überarbeiten!

Es ist für mich als Anwender völlig unverständlich, dass sich KDE so an PA klammert und nicht endlich selbst die wenigen Lücken schließt, die z.B. bzgl. eines systemweiten Equalizers bestehen. Statt dessen klammert man sich an ein fehlerhaftes, für den Anwender enervierendes PA-Toolset.

Genauso schlimm verhalten sich die Distributionen wie Opensuse oder Ubuntu, die PA standardmäßig installieren. So hat Opensuse eine vorgesehene KDE-Einstellmöglichkeit für die relative Lautstärke von Systemsounds entfernt – weil der KDE-Regler unter PA nicht wirkt und es unter “pavucontrol” – das der normale Benutzer nicht mal kennt und das im Standard nicht mitinstalliert wird – einen Ersatzregler gibt. Interessanterweise musste ich durch Experimente vor kurzem mühsam lernen, dass der ursprüngliche KDE-Regler unter einer reinen Alsa-Installation sehr wohl seine Wirkung entfaltet.

Liebe Leute von Opensuse: Nur weil der PA-Erfinder und Entwickler von Red Hat bezahlt wird, ist PA für den Endanwender noch lange nicht gut. Zumindest nicht im heutigen Zustand.

Wann kommt ihr endlich zur Einsicht und tretet das permanente Mega-Ärgernis PA endlich in die Tonne? Schreibt lieber eine ordentliche Einführung in die Konfigurationsmöglichkeiten von ALSA (oder Jack). Und bringt die KDE-Leute freundlich dazu, Phonon mit ein paar Zusatztools wie einem systemweiten Equalizer abzurunden. Dafür gibt es nämlich wirklich einen Bedarf. Aber ich lebe lieber ohne systemweiten Equalizer als mit dem Ärger und den Bugs, die man sich mit PA nun schon über Jahre regelmäßig einhandelt.

PA muss entweder grundlegend überarbeitet werden – oder es sollte künftig nur optional installierbar sein. Bis die Distributoren das begreifen gilt:
Nerven schonen, Pulseaudio komplett deinstallieren und danach endlich wieder guten (Surround-) Sound mit ALSA und der Soundkarte seiner Wahl hören.

Kleine Liste mit Links zu Problemen von und mit PA

http://www.hecticgeek.com/2012/01/how-to-remove-pulseaudio-use-alsa-ubuntu-linux/
http://www.ubuntugeek.com/fix-for-all-pulseaudio-related-issues.html
http://www.opensuse-forum.de/pulseaudio-problem-hardware-treiber/themen-f9/t8816-f11/
http://www.techrepublic.com/blog/linux-and-open-source/pulseaudio-an-achilles-heel-that-needs-repair/
http://www.tweakhound.com/2013/03/25/
opensuse-12-3-tips-tricks-and-tweaks/

http://forums.fedoraforum.org/showthread.php?t=291978
http://askubuntu.com/questions/300838/pulseaudio-is-not-working-at-all
http://forums.opensuse.org/showthread.php/493766-SUSE-13-1-PulseAudio-not-working
http://www.opensuse-forum.de/kein-start-up-sound-skype-sound-mehr-nach-update-auf-13-1-anf%C3%A4nger-startprobleme/allgemeines-f17/t9561-f20/
http://steamcommunity.com/app/221410/discussions/0/864979883831623432/
http://linuxg.net/how-to-properly-replace-pulseaudio-with-alsa-on-crunchbag-linux-and-debian-squeeze/
https://coderwall.com/p/wajiaq

http://linuxhaters.blogspot.de/2008/10/pulse-my-audio.html
http://forums.fedoraforum.org/showthread.php?t=288682
https://bbs.archlinux.org/viewtopic.php?pid=1298297
https://bbs.archlinux.org/viewtopic.php?id=117822
http://linuxmusicians.com/viewtopic.php?f=27&t=847
http://forums.opensuse.org/showthread.php/468722-Pulseaudio-a-pain-in-the
http://www.linuxplanet.com/linuxplanet/tutorials/7130/1

And my latest absolute favourite
http://www.beastwithin.org/blogs/wolfheadofselfrepair/2013/07/pulseaudio-insidious-linux-malware

Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – IV

In den vorhergehenden Beiträgen

Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – I
Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – II
Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – III

dieser Artikel-Reihe hatten wir eine einfache Installation des Cyrus IMAP-Dienstes auf einem Host namens “mycyrus” vorbereitet und durchgeführt. Der IMAP-Server nutzt einen LDAP-Server “ldap-serv” zur Authentifizierung von Benutzern, die Zugriff auf vorhandene IMAP-Mailboxen erhalten wollen.

In diesem Beitrag kümmern wir uns nun um die Anbindung eines KDE “Kmail”-Client an den IMAP-Server. Wir starten dazu “Kontact” oder “Kmail” auf einem Host “tux” im Netzwerk. Die nächsten Schritte beinhalten lediglich das Eingeben der Verbindungsdaten:

Dazu gehen wir in die Konfiguration der sog. “Zugänge” (gemeint sind Server-Zugänge – oder besser noch “Server-Konten”) über

Menüpunkt “Einstellungen” >> “Kmail einrichten” >> “Zugänge” >> Tab “Empfang”

Dort drücken wir auf den Button “Hinzufügen” und wählen im folgenden Auswahldialog die Option “IMAP-E-Mail-Server“.

Im nächsten Konfigurationsdialog geben wir die erforderlichen Zugangs- und Authentifizierungsdaten zum Server ein. Das sind zunächst vor allem unsere Userdaten für den IMAP-Dienst – also genau jene Daten, die wir im LDAP-System zu unserer Authentifizierung hinterlegt haben, und auf die der Server “mycyrus” gem. unserer Einrichtung in den letzten Artikeln per SASLAUTHD, PAM, SSSD zugreift. Wir verwenden hier wieder die Zugangsdaten unserer Testuserin “tarja” aus den vorhergehenden Artikeln:

Kmail_IMAP2_600

Den Namen des Mail-Kontos (oberstes Feld) können wir dabei nach Gutdünken festlegen.

Von größerer Bedeutung ist ferner der Dialog unter dem Reiter “Erweitert“, den dort stellen wir ein, dass Kmail eine STARTTLS-Verbindung zum IMAP-Server aufbauen soll. Ein Druck auf den Button “Automatisch erkennen” sollte das fehlerfrei und im lokalen Netz innerhalb von Sekundenbruchteilen für uns erledigen. Falls der IMAP-Server TLS anbietet – und dafür haben wir ja durch die Cyrus Konfiguration im ersten Beitrag gesorgt – wird die TLS-Option automatisch ausgewählt. Als “Authentifizierung”s-Mechanismus kommt in unserem Fall nur “Plain” oder “Login” in Frage.

Kmail_IMAP3_600

Sollte die automatische Konfiguration lange dauern oder zu Meldungen führen, so ist dies meist ein Zeichen dafür, dass

  • entweder gar keine Kommunikation zum Server möglich ist
  • oder es ein Problem mit der Zugangsberechtigung oder der Authentifizierung – in unserem Fall gegenüber einem LDAP-System – gibt
  • oder TLS nicht funktioniert.

Dann sind eine Überprüfung der Kommunikation mit “telnet”, ein Check von Firewall-Einstellungen sowie spezifischere Tests (z.B. mit “imtest”) angesagt.

An dieser Stelle sollte man sich außerdem noch einmal bewusst machen, dass wir es gemäß unserer Installation mit 2 unterschiedlichen TLS-Verbindungen zu
tun haben:

  • Der Mail-Client Kmail auf dem Host “tux” baut eine per STARTTLS gesicherte Verbindung zum IMAP-Server “mycyrus” auf und tauscht so abgesichert Userdaten und später auch Maildaten mit dem IMAP-Server aus.
  • Der IMAP-Server “mycyrus” hingegen baut zur Authentifizierung des Users “tarja” über SASLAUTHD, PAM und vor allem SSSD eine per STARTTLS gesicherte Verbindung zum LDAP-Server (hier “ldap-serv”) auf.

Für die erste Verbindungsmöglichkeit sorgt eine adäquate Konfiguration des Cyrus IMAP-Dienstes und natürlich auch des E-Mail-Clients Kmail. Die zweite Verbindung beruht auf einer TLS-fähigen Auslegung des LDAP-Servers und einer geeigneten Konfiguration von SASL, PAM und SSSD auf dem Server “mycyrus”. Siehe hierzu die vorangegangenen Artikel.

Als nächstes schließen wir die Einrichtung unseres IMAP-Kontos durch Drücken des Buttons “OK” ab. Der Server-Zugang namens “mycyrus-tarja” sollte nun gem. der oben gewählten Einstellungen angelegt worden sein und als funktionstüchtig (“bereit”) angezeigt werden:

Kmail_IMAP5

Wechseln wir nun zur Standardansicht von “Kontact”, so sollten wir etwa ein Bild der folgenden Art erhalten:

Kmail_IMAP6

Natürlich ist die Mailbox im Gegensatz zur obigen Darstellung in Ihrem Fall noch leer. Aber mit Hilfe von Kontakt/Kmail können wir nun schon Mails aus anderen Mailfoldern anderer Server in die Mailfolder des neuen Accounts – hier “mycyrus-tarja” kopieren und die kopierten Mails danach auch ansehen.

Damit haben wir eine vollständige Kette

E-Mail-Client Kmail <= TLS => Cyrus IMAP-Server mit userspezifischen und allgemeinen Mailboxen < = TLS => LDAP-Server zur Authentifizierung von IMAP-User

realisiert. Denn in Zeiten wie diesen gilt auch im hauseigenen Netzwerk: Ein Schutz gegen unerwünschtes Ausspähen kann nicht verkehrt sein – zumal, wenn er sich – wie gezeigt – unter Linux doch recht einfach einrichten lässt.

Im nächsten Beitrag beschreibe ich zur Abrundung des Cyrus IMAP-Themas noch die Einrichtung von “Webmin” zur grafischen Verwaltung der Mailboxen und zugehöriger Zugriffsrechte.

Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – III

In den letzten beiden Beiträgen
Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – I
Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – II
unserer kleinen Serie zur Implementierung eines Cyrus IMAP-Dienstes mit LDAP-Authentifizierung über PAM und SSSD hatten wir uns mit den IMAP-Konfigurationsdateien sowie der PAM, SSSD- und partiell auch der LDAP-Konfiguration herumgeschlagen. Getestet haben wir bereits den “saslauthd”-Authentifizierungsmechanismus.

Den IMAP-Service selbst hatten wir dagegen noch gar nicht gestartet oder benutzt. Wir holen dies nun nach und testen dann den Zugriff zunächst rein per “telnet” (oder “imtest”) und expliziten IMAP-Komandos. Ich finde es lehrreich, unabhängig von echten Mail-Clients auch mal die Kommandozeile zu nutzen.

Starten des Cyrus- IMAP-Servers

Wir starten den IMAP-Dienst:

systemctl start cyrus.service

Das sollte nach den Konfigurationsvorbereitungen der letzten Artikel anstandslos funktionieren ! Also etwa so:

mycyrus:~ # systemctl start cyrus.service
mycyrus:~ # systemctl status cyrus.service
cyrus.service – LSB: The cyrus-imapd mail system
Loaded: loaded (/etc/init.d/cyrus)
Active: active (running) since Wed 2014-03-12 19:56:23 CET; 7s ago
Process: 9392 ExecStop=/etc/init.d/cyrus stop (code=exited, status=0/SUCCESS)
Process: 9404 ExecStart=/etc/init.d/cyrus start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/cyrus.service
├─9412 /usr/lib/cyrus/bin/master -p /var/run/cyrus.pid -d
└─9417 idled
Mar 12 19:56:23 mycyrus master[9418]: about to exec /usr/lib/cyrus/bin/ctl_cyrusdb
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: checkpointing cyrus databases
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: archiving log file: /var/lib/imap/db/log.0000000001
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: archiving log file: /var/lib/imap/db/log.0000000001
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: archiving log file: /var/lib/imap/db/log.0000000001
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: archiving database file: /var/lib/imap/annotations.db
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: archiving database file: /var/lib/imap/mailboxes.db
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: archiving log file: /var/lib/imap/db/log.0000000001
Mar 12 19:56:23 mycyrus ctl_cyrusdb[9418]: done checkpointing cyrus databases
Mar 12 19:56:23 mycyrus master[9412]: process 9418 exited, status 0

Danach “enablen” wir den Service mal prophylaktisch:

mycyrus:~ # systemctl enable cyrus.service

Anlegen von Mailverzeichnissen für unsere Test-Userin “tarja”

Wir legen nun gezielt eine Mailbox mit Subfoldern für unsere Testuserin “tarja” an. Dazu benutzen wir die “cyradm“-Umgebung:

mycyrus:/etc/pam.d # su – cyrus
cyrus@mycyrus:~> cyradm
cyradm> connect localhost
Password:
localhost> cm user.tarja
localhost> cm user.tarja.Drafts
localhost> cm user.tarja.Sent
localhost> cm user.tarja.Spam
localhost> cm user.tarja.Junk
localhost> cm user.tarja.Archive
localhost> lm user.tarja.*
user.tarja.Archive (\HasNoChildren) user.tarja.Sent (\HasNoChildren)
user.tarja.Drafts (\HasNoChildren) user.tarja.Spam (\HasNoChildren)
user.tarja.Junk (\HasNoChildren)
localhost> exit
cyrus@mycyrus:~> exit
Abgemeldet
mycyrus:/etc/pam.d #

Test des Remote-Zugangs

Nun testen wir von einem Remote-Host “tux” aus, ob wir den IMAP-Dienst auf “mycyrus” erreichen können. Ich setze voraus, dass alle Firewall-Einstellungen so gesetzt sind, dass ein Zugang über den Standard Imap-Port 143 möglich ist. Mehr benötigen wir bei Anwendung von STARTTLS nicht. Erstmal remote über “telnet” von einem anderen Linux-System “tux” aus :

tarja@tux:~> telnet mycyrus 143
Trying 192.168.0.88…
Connected to mycyrus.
Escape character is ‘^]’.
* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS AUTH=PLAIN AUTH=LOGIN SASL-IR COMPRESS=DEFLATE] mycyrus Cyrus IMAP v2.3.16 server ready
starttls login tarja TARJAPWD
starttls OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID LOGINDISABLED COMPRESS=DEFLATE ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE SCAN IDLE X-NETSCAPE URLAUTH] User logged in
r list all “*”
r OK Completed (0.000 secs 1 calls)
r list “” “*”
* LIST (\Noinferiors) “.” “INBOX”
* LIST (\HasNoChildren) “.” “Archive”
* LIST (\HasNoChildren) “.” “Drafts”
* LIST (\HasNoChildren) “.” “Junk”
* LIST (\HasNoChildren) “.” “Sent”
* LIST (\HasNoChildren) “.” “Spam”
* LIST (\HasNoChildren) “.” “Trash”
r OK Completed (0.000 secs 8 calls)
s select Drafts
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 2 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1394475578]
* OK [UIDNEXT 3]
* OK [NOMODSEQ] Sorry, modsequences have not been enabled on this mailbox
* OK [URLMECH INTERNAL]
s OK [READ-WRITE] Completed
t search all
* SEARCH 1 2
t OK Completed (2 msgs in 0.000 secs)
E fetch 1 (body[text])
* 1 FETCH (BODY[TEXT] {6}
test
)
E OK Completed (0.000 sec)
. logout
* BYE LOGOUT received
. OK Completed
Connection closed by foreign host.
tarja@tux:~>

Man erkennt nach der Initiierung des Dialogs, dass der Cyrus IMAP-Server zunächst seine Fähigkeiten – u.a. STARTTLS- ausweist. Das explizit abgesetzte “starttls”-Kommando funktioniert entsprechend problemlos.

Ferner sieht man, dass habe ich danach einige IMAP-Kommandos an den Server abgesetzt habe. Welche IMAP-Kommandos es gibt und wie man mit ihrer Hilfe unter “telnet” oder “imtest” direkt mit dem IMAP-Server kommunizieren kann, erfährt man z.B. hier:

http://www.skytale.net/blog/archives/23-Manual-IMAP.html
http://www.tcpipguide.com/free/t_IMAPOverviewHistoryVersionsandStandards.htm
http://donsutherland.org/crib/imap
http://adityo.blog.binusian.org/?tag=telnet-imap-command
http://busylog.net/telnet-imap-commands-note/
http://help.notify.net/TechDocs/enterprise/Troubleshooting/NetHelp/index.html?turl=WordDocuments%2Fotherimapcommands.htm

Jedes IMAP-Kommando wird durch einen Klein- oder Groß-Buchstaben oder einen “.” am Anfang der Zeile mit anschließendem Blank eingeleitet. Dieser Buchstabe ist syntaktisch erforderlich; er erleichtert die Orientierung im Kommandoablauf und zeigt anhand abschließender Bestätigungsmeldungen zu gleichen Startbuchstaben am Anfang der Zeile an, welche Antworten zu welchem Kommando gehören.

Einen ähnlichen Dialog
mit dem IMAP-Dienstes hätte man auch im Rahmen des Testkommando “imtest” führen können:

imtest -v -t “” -a tarja -u tarja -m login mycyrus

Das Absetzen des imtest-Kommandos erlaubt es einem zudem, den Austausch von TLS-Informationen direkt zu verfolgen. Das kann jeder mal selbst testen. Zu “imtest”findet man weitere Infos auf der man-Seite:
http://linux.die.net/man/1/imtest
http://www.cyrusimap.org/docs/cyrus-imapd/2.3.16/man/imtest.1.php

Der aufmerksame Leser wird beim Studieren des obigen IMAP-Dialogs unter “telnet” natürlich mitbekommen haben, dass ich dort im Ordner Drafts zwei Mails gefunden und eine davon sogar geöffnet habe. Natürlich muss man sich fragen, wie das vor sich gehen soll, wenn der Folder “Drafts” doch gerade erst angelegt wurde. Keine Sorge: Die Mails kommen nicht aus dem Nirwana; ich hatte sie dort vorab händisch reinkopiert, um zeigen zu können, dass man Mails auch über telnet öffnen kann.

Im nächsten Teil
Cyrus IMAP mit SASL, PAM, SSSD und LDAP – Opensuse 12.3/13.1 – IV
kümmere ich mich dann um eine Kmail-Anbindung an unseren offenbar funktionstüchtigen IMAP-Server, der unsere Testuserin “tarja” erfolgreich über ein LDAP-System authentifiziert hat.

SASL mit PAM, SSSD, LDAP unter Opensuse – II

Im ersten Teil “SASL mit PAM, SSSD, LDAP unter Opensuse – I” dieser kleinen Beitragsserie zur Nutzung von SASL, PAM, SSSD im Zusammenhang mit einem (einfachen) LDAP-System hatte ich dargestellt, was man grundsätzlich tun muss, um eine Authentifizierung im Rahmen der Kette

SASLAUTHD => PAM => SSSD => LDAP

zu realisieren.

Den Host, auf dem ein Service “saslauthd” nutzt, nennen wir nachfolgend “c-serv“; der LDAP-Server im Netz heiße dagegen “ldap-serv“. Beide liegen in einer Domaine “anraconx.de“.

So schön das verkettete Auth-Verfahren auch sein mag – es hat in der bisher dargestellten Form einen gravierenden Nachteil:

Nach der beschriebenen Einrichtung von PAM, SSSD und LDAP als Auth-Backend ist es jedem User, der einen gültigen Eintrag auf dem LDAP-Server hat, möglich, sich auf jedem Host, auf dem die PAM-SSSD-LDAP-Kette eingerichtet wurde, einzuloggen und eine Shell zu nutzen. Dabei würde sogar ein Home-Verzeichnis eingerichtet werden. Dieses Verhalten ist für dedizierte Server, die nur einen bestimmten Dienst – wie etwa einen Mail-Dienst – anbieten, aber gar nicht wünschenswert. Der Grund liegt natürlich in Sicherheitsaspekten: Man sollte keine Rechte einräumen, wenn dies zur Nutzung eines bestimmten Serverdienstes gar nicht erforderlich ist.

Wir müssen uns daher bzgl. des Zugangs zum Serverhost etwas andere Ziele stecken und diese mit möglichst geringem Aufwand realisieren.
Wir diskutieren eine Vorgehensvariante nachfolgend am Beispiel eines IMAP-Dienstes, der auf “c-serv” angeboten wird.

Ziele der Authentifizierungskette auf dem Server-Host “c-serv”

  • Die User, die auf dem LDAP-System hinterlegt sind, sollen nicht autorisiert werden, sich auf dem Host “c-serv” normal einzuloggen. Sie dürfen keinen Shell-Zugang erhalten.
  • Die im LDAP verwalteten User sollen sich aber sehr wohl für die Nutzung eines bestimmten Serverdienstes – wie etwa eines IMAP-Dienstes – authentifizieren können und zwar letztlich durch einen sog. “Simple Bind” auf dem LDAP-System.
  • Dabei soll die Verbindung zwischen “c-serv” und “ldap-serv” wie bereits früher beschrieben mit TLS abgesichert aufgebaut werden.
  • Über spezielle Einträge auf dem LDAP-Server soll der Zugang zum Host “c-serv” für bestimmte User auch generell ausgeschlossen werden können.

Auf unserem “c-serv”-Server sollen ein Login und eine Shell-Nutzung nur für den User “root” und ggf. für dedizierte, lokal angelegte User (wie etwa “cyrus”, den Admin des Cyrus IMAP-Dienstes) möglich sein. Verdeutlicht wird dies durch folgende beispielhafte Abbildung:

cserv_600

Aus der Skizze wird bereits der Lösungsansatz erkennbar, den wir nun schrittweise umsetzen. Zwei explizite Warnungen sind angebracht:

Warnung 1:
Die vorgeschlagenen Konfigurationsänderungen können bei Fehlern dazu führen, dass sich auch root nicht mehr auf “c-serv” einloggen kann. Also bitte Vorsicht walten lassen und das ganze Verfahren zunächst auf einem Spielsystem testen, bevor man es auf produktive Systeme
anwendet !

Warnung 2:
Wir werden LDAP als Authentifizierungs-Backend abschalten und dann etliche grundlegende Konfigurationsdateien ändern. Danach darf man die YaST-Konfigurationstools für den LDAP-Client oder für die Backend-Einrichtung zur User-Authentifizierung nicht ohne Wissen um die Konsequenzen nutzen – denn YaST stellt u.a. bei einem Aktivieren des LDAP-Clients zu viele Dinge parallel und automatisch um und würde unsere vorgenommenen Einstellungen ggf. wieder zunichte machen. Also Backups der eigenen Konfigurationsdateien anlegen.

Schritt 1: LDAP-Backend für die User-Authentifizierung abstellen

Als erstes stellen wir mittels “YaST2 => User und Group Administration => Reiter “Authentication Settings” => LDAP” und durch den entsprechenden Radiobutton im Dialogfenster die Benutzung von LDAP als Auth-Backend für das System ab. YaST stoppt dann u.a. den sog. “LDAP-Client”, indem es SSS (besser den SSSD-Dämon) deaktiviert; dies entspricht einem

systemctl stop sssd.service;   systemctl disable sssd.service    .

Die Einstellungen der Datei “/etc/sssd/sssd.conf” bleiben dabei aber erhalten. Das ist aber nicht ganz das, was wir uns wünschen:
Wir wollen ja, dass der Cyrus IMAP-Service später den “SSSD-Service” nutzen soll. Aber im Zuge einer “normalen” Login-Authentifizierung soll sich PAM auf die Prüfung lokaler Informationsquellen beschränken. Deshalb müssen wir noch weitere Schritte durchführen, bevor wir SSSD wieder aktivieren.

Schritt 2 – SSS aus der “Name Service Switch-Konfiguration” entfernen

Wir entfernen die “sss”-Einträge in der Datei “/etc/nsswitch.conf”. Also:

#passwd: compat sss
#group: compat sss
passwd: compat
group: compat

Diese Einstellung entspricht dem blockierenden roten Längsstrich im NSS-Block der Skizze.

Schritt 3 – “pam_sss.so”-Modul aus den PAM “common”-Dateien entfernen

Dann entfernen wir zusätzlich alle “pam_sssd.so“- Referenzen in den Dateien

“/etc/pam.d/common-auth”,
“/etc/pam.d/common-account”,
“/etc/pam.d/common-password”,
“/etc/pam.d/common-session”.

Betroffen ist pro Datei jeweils eine der folgenden Zeilen:

auth required pam_sss.so try_first_pass
account required pam_sss.so use_first_pass
password required pam_sss.so use_authtok
session optional pam_sss.so

Diese Einstellung sorgt dafür, dass PAM für viele vorgegebene Dienste auf einem Standard Opensuse-System nurmehr lokale Informationsquellen prüft.

Schritt 4 – “pam_sss.so”-Modul in die PAM-Datei für die Dienste eintragen, die per SSSD eien LDAP-Prüfung durchführen sollen

Wir demonstrieren dieses Vorgehen am Beispiel der service-spezifischen Datei “/etc/pam.d/imap” für den IMAP-Dienst und ersetzen deren Inhalt durch folgenden:

c-serv:/etc/pam.d # cat imap
#%PAM-1.0
auth required pam_env.so
auth sufficient pam_unix.so try_first_pass
auth required pam_sss.so use_first_pass
account sufficient pam_sss.so use_first_pass
account required pam_unix.so try_first_pass
account sufficient pam_localuser.so
session required pam_limits.so
session required pam_unix.so try_first_pass
session optional pam_sss.so
c-serv:/etc/pam.d #

Oder
alternativ:

#%PAM-1.0
auth sufficient pam_sss.so
auth required pam_env.so
auth required pam_unix.so try_first_pass
account sufficient pam_sss.so use_first_pass
account required pam_unix.so try_first_pass
account required pam_localuser.so
session optional pam_sss.so
session required pam_limits.so
session required pam_unix.so try_first_pass

Wichtig ist in jedem Fall die Reihenfolge der Statements. Warum die komplizierte Abfolge aus “required”- und “sufficient”-Bedingungen?

Weil wir wollen, dass neben den LDAP-Usern auch lokale User auf den angebotenen Dienst zugreifen dürfen. Dieser Bedarf besteht im falle von IMAP mindestens mal für den User “cyrus“; dieser muss ja den IMAP-Dienst und im Besonderen auch die Mailboxen verwalten dürfen. Dazu muss er eine Zugriffsberechtigung erhalten.
Es bleibt dem geneigten Leser überlassen zu überlegen und ggf. zu testen (ein Blick in “/var/log/messages” lohnt sich), warum man dann die vorgegebene Reihenfolge für die PAM-Module einhalten muss.

Schritt 5 – den “sssd.service” wieder aktivieren und Zugriffe testen

Nun enablen wir erneut den “SSSD-Dämon” und starten ihn:

systemctl enable sssd.service
systemctl start sssd.service

Wir können nun durch z.B. einen ssh-Zugriff prüfen, dass für die Testuserin “tarja” (s. den erste Beitrag der Serie) kein Login mehr möglich ist:

c-serv:~ # testsaslauthd -s login -u tarja -p TARJAPWD
0: NO “authentication failed”

und :

c-serv:~ # su – tarja
su: user tarja does not exist
c-serv:~ #

bzw. remote:

user@tux:~> ssh tarja@c-serv
Permission denied (publickey,keyboard-interactive).
user@tux:~>

Dagegen:

c-serv:~ # testsaslauthd -s imap -u tarja -p TARJAPWD
0: OK “Success.”

Wir löschen nun das Verzeichnis “/home/tarja” (soweit vorhanden). Sicherstellen müssen wir noch, dass “root” handlungsfähig ist und ins System kommt :

user@tux:~> ssh root@c-serv
Password:
Last login: Wed Mar 12 17:50:39 2014 from tux.anraconx.de
Have a lot of fun…
c-serv:~ #

und

c-serv:~ # testsaslauthd -u cyrus -p CYRUSPW
0: OK “Success.”

Sieht alles OK aus. 🙂 Was haben wir erreicht ?

Die im LDAP vorhandene “tarja” wie jeder andere im LDAP hinterlegte User kann sich nicht mehr auf dem System “c-serv” einloggen, aber “saslauthd” authentifiziert potentielle Benutzer des IMAP-Dienstes trotzdem über den LDAP-Server! Zudem kann auch der lokale User “cyrus” auf den IMAP-Dienst zugreifen.

Unterbinden des Zugriffs auf den Server-Host für bestimmte User

Die oben verfolgte Politik ist bislang immer noch eine, die allen Nutzern, die im LDAP hinterlegt sind, auch einen Zugriff auf IMAP-Dienste zugesteht. Dennoch will man i.d.R. einige Benutzer explizit nicht an unsern Server-Host “c-serv” (oder zumindest nicht an spezielle Dienste wie IMAP) heranlassen. Welche Möglichkeiten hat man dazu?

Variante 1: “host”-Attribut in den LDAP-User-Einträgen setzen und auswerten
Alternativ kann man bei den User-Einträgen, die man ausschließen will, auf dem LDAP-System das Attribut “host” hinzufügen und SSSD so konfigurieren, dass dieses Feld abgefragt wird. Siehe zu Letzterem:
https://access.redhat.com/site/
documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/config-sssd-domain-access.html

Wie man das Attribut “host” dem User-Eintrg hinzufügt, wenn man den Zweig “ou=people,dc=anraconx,dc=de” ursprünglich mit YaST angelegt hatte, habe ich unter
Opensuse 12.1 – LDAP V
beschrieben. (anraconx ist hier nur eine Beispielname und durch die eigene Domain zu ersetzen).

Wir nehmen mal einen User “rmu”, der auf dem LDAP-System vorhanden sei. Ich ergänze mit Hilfe des Tools “gq” wie in Opensuse 12.1 – LDAP V beschrieben, seine ObjectClasses um “extensibleObject” und füge dann das Attribut “host” zum Satz hinzu:

Als Wert des Feldes gebe ich dann – im Gegensatz zur Abbildung! – zunächst “c-serv.anraconx.de” an. Der FQDN muss natürlich auf dem netzwerkeigenen DNS-Server bekannt sein. (In der Praxis würde man statt mit “gq” natürlich mit LDIF-Dateien für alle betroffenen User arbeiten.)
Dann ändern wir auf “c-serv” die Standard-SSSD-Konfiguration, die wir gem. SASL mit PAM, SSSD, LDAP unter Opensuse – I angelegt hatten:

[sssd]
config_file_version = 2
services = nss,pam
domains = default
 
[nss]
filter_groups = root
filter_users = root
 
[pam]
 
# Section created by YaST
[domain/default]
ldap_uri = ldap://ldap-serv.anraconx.de
ldap_search_base = dc=anraconx,dc=de
ldap_schema = rfc2307bis
id_provider = ldap
ldap_user_uuid = entryuuid
ldap_group_uuid = entryuuid
ldap_id_use_start_tls = False
enumerate = True
cache_credentials = False
ldap_tls_cacertdir = /etc/ssl/certs
ldap_tls_cacert = /etc/ssl/certs/YaST-CA.pem
chpass_provider = ldap
auth_provider = ldap
 
access_provider = ldap
ldap_access_order = host

Wichtig und neu sind lediglich die zwei letzten Zeilen. Infos zur Bedeutung der Parameter findet man hier:
http://manpages.ubuntu.com/manpages/precise/en/man5/sssd-ldap.5.html

Neustarten des sssd.service nicht vergessen:

c-serv:~ # systemctl restart sssd.service

Dann versuchen wir einen Login auf c-serv

tux:~ # ssh -X rmu@c-serv
Password:
Last login: Sat Mar 15 16:06:56 2014 from tux.anraconx.de
Have a lot of fun…
rmu@c-serv:~>

Nun ändern wir den Wert des LDAP-Attributs “host” auf “!c-serv.anraconx.de” ab !
Das führt zu:

tux:~ # ssh -X rmu@c-serv
Password:
Permission denied (publickey,keyboard-interactive).
tux:~ #

Aha ! Hosts schließen wir explizit mit einem “!” aus, das dem FQDN im “host”-Attribut auf dem LDAP-Server vorangestellt wird. SSSD prüft erst auf solche Einträge, danach auf explizit freigegebene Hosts.

Lassen wir unsere “sssd.conf” nun aber so, wie sie ist, kommt allerdings auch unsere Testuserin “tarja” nicht mehr aufs System, wenn wir nicht auch bei ihr das “host”-Attribute mit “c-serv.anraconx.de” füllen. Analog für alle anderen User. Es wird also Zeit, dies mit passenden LDIF-Dateien anzugehen. Eine mögliche Einstellung im “host”-Attribut ist übrigens auch “allow_all“.

Erweiterte Variante 2 : Zusätzlich das Attribut “ldap_user_authorized_service” abfragen
Man kann mit SSSD aber offenbar noch feingranularer arbeiten und den Host zulasssen, nicht aber den Zugriff eine bestimmten Service wie “imap”. Hierzu dient
die Abfrage eines Attributs “ldap_user_authorized_service”. Hierzu muss allerdings auf dem LDAP-Server zusätzlich das “ldapns”-Schema geladen werden. Wie man dafür auf einem Openldap-System 2.4 vorgeht, findet man hier:
http://grungelabs.com/guides/2012/06/08/ha-openldap-debian/
http://wiki.ubuntuusers.de/OpenLDAP_ab_Precise

Ich habe das aber selbst nicht für LDAP-Server getestet, die mit YaST eingerichtet wurden. Es mag daher Inkompatibilitäten geben. Wenn ich Zeit finde, behandle ich das mal in einem separaten Beitrag.