Kmail, GnuPG, Thunderbird, enigmail und kryptierte HTML-Mails zwischen Linux und Windows Usern

Man kann sich nicht immer aussuchen, mit wem man in Projekten wie kommuniziert. So bin ich als Linuxer natürlich oft mit Kunden konfrontiert, die ein MS Betriebssystem nutzen. Einige dieser Kunden setzen in der Kommunikation mit mir inzwischen vernünftigerweise folgene Mittel ein:

  • Sie stellen entweder kryptierte Verbindungen zu speziellen ihrer Mail-Server zur Verfügung
  • oder aber sie verwenden die Kombination Thunderbird/GnuPGP/enigmail, um Mails zu verschlüsseln und an mich zu versenden, in denen schützenswerte geschäftsrelevante Informationen hinterlegt sind. Hierzu haben wir unsere Public OpenPGP Keys ausgetauscht.

Generell hat die Bereitschaft von Kunden, Mails (Ende zu Ende) zu verschlüsseln, seit den publizierten Ereignissen im IT-Security-Umfeld der letzten zwei Jahre zugenommen.

Manchmal taucht nun das Thema auf, dass Kunden in der Mail Dinge farblich oder fett markieren wollen. Das sind sie aus der firmeninternen Kommunikation so gewohnt. Damit steht dann der Wunsch nach etwas auf der Tagesordnung, das eine Quelle von viel Unheil darstellt – nämlich der Wunsch nach HTML-formatierten Mails. Aus Security-Perspektive stellt das etwas dar, was man aus meiner Sicht unbedingt vermeiden sollte. Formatierte Information gehört in Anhänge, nicht in den Body einer Mail. Aber ist dieser Anspruch praxisnah und vermittelbar? Mein Erfahrung ist: Nicht jeder Kunden kann und will mit dieser Einschränkung leben und arbeiten – auch bei aller vorhandener Bereitschaft zur Verschlüsselung nicht.

Potentielles Problem unter Kmail beim Öffnen von HTML-Mails, die mit Thunderbird/enigmail kryptiert wurden

Will der Kunde unbedingt HTML-Mails austauschen, so ergibt sich u.U. das Problem,

  • dass der Kunde (unter MS Win 7) mit Hilfe von Thunderbird/enigmil zwar eine von mir unter Linux mit Hilfe von Kmail erstellte und mit GnuPG/GPG kryptierte HTML Mail empfangen und ansehen kann,
  • aber ich selbst eine unter Thunderbird verfasste, mit “enigmail” kryptierte HTML Mail nur in Plain Text Form erhalte und der HTML-Anhang der Mail beim Öffnen nur krypierte Anweisungen enthält.

Der Grund liegt in einer speziellen unter Thunderbird/enigmail standardmäßig eingestellten Variante der Verschlüsselung – nämlich “Inline PGP”. Siehe hierzu:
http://de.wikipedia.org/ wiki/ PGP/ INLINE
https://www.enigmail.net/ forum/ viewtopic.php? f=3&t=134

Ein Grund für den standardmäßigen Einsatz von “Inline PGP” ist u.a. der, dass etliche (u.a. MS-lastige) Mail Clients mit der normierten Verschlüsselungsvariante “PGP/Mime” nicht richtig umgehen können. Siehe z.B.:
http://www.phildev.net/ pgp/ pgp_clear_vs_mime.html

Leider führt “Inline PGP” dazu, dass HTML Mails im Rahmen der Verschlüsselung nicht korrekt als Attachment-Streams kryptiert werden. Letzteres zieht bei meinem Kunden dann konsistenterweise Warnungen beim Versuch der Verschlüsselung einer erstellten HTML-Mail nach sich – nämlich dass vorgenommene Formatierungen beim Verschlüsseln und Signieren verloren gehen werden.

Gibt es einen Ausweg? Zumindest im Prinzip: ja. Man muss “enigmail” so einstellen, dass es den definierten Standard “PGP/MIME” zur Kryptierung anstelle von Inline PGP verwendet. Dann ist für eine standardkonforme Verschlüsselung von Mail-Attachments und damit – bei Wahl einer entsprechenden Versandart – auch für eine ordnungsgemäße Behandlung von HTML-Mails gesorgt.

Linux Mail Clients, die GnuPG/GPG einbinden, können i.d.R. mit Mails und Attachments umgehen, die gemäß der “PGP/MIME”-Regeln
kryptiert wurden. Siehe zu “PGP/MIME” etwa :
http://de.wikipedia.org/ wiki/ PGP/ MIME
http://de.wikipedia.org/ wiki/ OpenPGP

Dies trifft natürlich auch auf Kmail zu. So ist also der Einsatz von “PGP/Mime” durch den Kunden (mit MS Win, Thunderbird) zumindest in der Kommunikation mit mir kein Problem. Die entsprechenden Einstellungen können unter “Thunderbird/enigmail” zudem spezifisch für einen Mail Account vorgenommen werden. Hat der Kunde die Möglichkeit, einen spezifischen Mail-Account für die Kommunikation mit mir zu nutzen, so ist man als Linux-Kmail-Nutzer aus dem Schneider – nicht jedoch zwangsläufig als Security-Berater; s.hierzu einen speziellen Absatz weiter unten.

Erforderliche Einstellungen unter Thunderbird/enigmail

Zwei Schritte sind erforderlich, damit mit Thunderbird erstellte und mittels “enigmail” kryptierte HTML Mails auf einem Linux-System mit Kmail-Client nach Dekryptierung als HTML Mails geöffent werden können und danach alle vom Absender vorgenommenen Formatierungen auch angezeigt werden:

  • Schritt 1: Aktivierung von “PGP/MIME”
    Das entsprechende mit Häkchen zu versehende Feld findet man unter Thunderbird für Windows unter
    Extras >> Konten-Einstellungen >> dein relevanter Mail Account >> OpenPGP-Sicherheit >> PGP/MIME standardmäßig verwenden.
  • Schritt 2: Versand im Format “Reintext und HTML”
    Vor dem Versenden der E-Mail aus dem E-Mail-Erstellungsdialog von Thunderbird muss der Anwender explizit die Einstellung “Reintext und HTML” unter dem Menüpunkt “Optionen >> E-Mail Format” vornehmen.

Letzteres könnte man zwar auch als globale bzw. empfängerspezifische Option festlegen. Ich persönlich würde das aber nicht tun, sondern als Standard “Reintext” wählen. Es gilt ja nach wie vor die Maxime, dass HTML-Mails in der Mail-Kommunikation mit mir nur im Ausnahmefall zum Zuge kommen sollen.

Eine ausführlichere Beschreibung zu den vorzunehmenden Einstellungen von Thunderbird findet man z.B. unter:
https://micahflee.com/ 2013/ 09/ html-email-attachments-and-flowed-text-in-enigmail/

Sicherheitsaspekte

Nun ein paar Worte zu einigen potentiellen und interessanten Sicherheitsproblem von “enigmail” im Zusammenhang mit PGP/MIME, nämlich u.a. dem atomatischen Öffnen und Dekryptieren von Mails im Hintergrund. Siehe hierzu im Besonderen den Kommentar von Alan Eliasen zu dem eben zitierten Artikel
https://micahflee.com/ 2013/09/ html-email-attachments-and-flowed-text-in-enigmail/
und weitere entsprechende Hinweise unter
https://futureboy.us/ pgp.html
Letzterer Artikel enthält übrigens auch grundsätzliche und interessante Hinweise zum Einsatz von OpenPGP/GnuPG.

Besonders interessant und lehrreich im Zusammenhang mit “enigmail” ist die Diskussion zu dem besonders kritisierten Punkt im Zshg. mit PGP/MIME, der den enigmail-Entwicklern als Bug gemeldet und danach heftig diskutiert wurde. Siehe hierzu:
http://sourceforge.net/ p/ enigmail/ bugs/226/
und die dortigen Kommentare.

Was ist nun meine Meinung zu deser Debatte ? Grob Folgendes :

Ich verstehe die Kritik und die Bedenken von Hrn. Eliasen gut; inbesondere den von ihm geäußerte Kritik an der durch Thunderbird (mit Hilfe von enigmail) automatisch in Gang gesetzten Dekryptierung von PGP/MIME-verschlüsselten Mails samt Anhängen im
Hintergund. Auch die grundsätzlich in Betracht gezogenen Angriffsmethoden auf akustischer Ebene waren bis zu Gegenmaßnahmen auf der GnuPG-Seite relevante Punkte.

Aber: 100%-ige Sicherheit gibt es nicht – und in der Praxis werden nach Abwägung von Risiken immer wieder Kompromisse zu schließen sein. Dabei muss auch die sichere und bequeme Handhabung einer SW durch den Anwender einbezogen werden. Das ist hier durchaus relevant.

Nehmen wir mal an, nur autorisierte User haben Zugang zum PC/Laptop des Kunden: Wenn dann – also im Normalbetrieb – im Hintergrund dekryptierte Mails von einem Angreifer mitgeschnitten werden sollten, dann bestünde bereits ein grundsätzliches, über Thunderbird weit hinausgehendes Problem auf dem attackierten Computer bzw. im umgebenden Netzwerk. Auch akustische Attaken würden ein hohes Maß an krimineller Energie am Standort des empfangenden Computers voraussetzen.

Ferner geht es ja zunächst vor allem darum, dass der Kunde Mails überhaupt verschlüsselt über das Internet transportiert. Man muss ja (leider) schon dankbar sein, wenn man einen Nicht-IT-Fachmann dazu bewegen konnte, die für entsprechende Verschlüsselungsmaßnahmen notwendige Energie aufzuwenden. Bequem und einfach ist das für den Normalverbraucher eher nicht. Als wenig praxistauglich bis realitätsfern muss man gar Eliasen’s Aufruf zu einer manuellen Verschlüsselung des Mail-Bodies durch den Windows-Anwender einstufen.

In einer Hochsicherheitskommunikation ist die “Ende zu Ende”-Verschlüsselung auf dem Transportweg natürlich nur ein Teil der erforderlichen Maßnahmen. Die sichere kryptierte Ablage der Mails auf dem sendenden wie auf dem empfangenden System gehört mit in ein umfassendes Maßnahmenpaket. Aber sobald ein funktionierender Transfer mit einer “Ende zu Ende”-Verschlüsselung etabliert wurde, hat man immerhin einen wichtigen Schritt in Richtung einer verbesserten Sicherheit im Informationsaustausch hinter sich gebracht.

Alles weitere betrifft dann die Sicherheit der Informationsablage und Informationssnutzung auf den sendenden bzw. empfangenden Systemen. U.a. will man ja bei kryptierten Mails eine gewisse Grundsicherheit auch dann noch aufrecht erhalten, wenn ein physikalischer Zugriff (z.B. auf einen gestohlenen oder unbewachten Laptop) durch unautorisierte User erfolgt und ggf. nach Einsatz von Passwort-Crackernein Login durch den ungebetenen Gast gelingt. Hier zieht dann das Argument von Eliasen bzgl. der automatischen Dekryptierung wirklich:

Ohne explizit geforderte Dekryptierung durch einen autorisierten User sollte kein System eine Dekryptierung von Mails in Gang setzen. Der potentielle nicht-autorisierte Angreifer erhielte hier ggf. Zugang zu den geheim zu haltenden Informationen, ohne das Passwort für den privaten Schlüssel überhaupt benutzen zu müssen. Letzteres wäre z.B. dann gegeben, wenn der Angreifer Thunderbird nutzen kann und enigmail das erforderliche Passwort noch aus einem meist stadardmäßif vorkonfigurierten Zwischenspeicher bezieht.

Dieser Bedrohung kann man aber bei Bedarf dadurch begegnen, dass man den Schlüssel mit einem sicheren Passwort versieht und enigmail/GnuPG anweist, das Passwort für den privaten Schlüssel nicht – auch nicht für einen kurzen Zeitraum – zwischenzuspeichern. Bequemer wird der Einsatz von Thunderbird/enigmal dadurch aber nicht. (Steht Sicherheit wirklich über allem, so wird man ferner die Harddisks verschlüsseln, um im Verlustfall grundsätzlich mehr Sicherheit zu haben.)

Ferner möchte ich anmerken, dass die enigmail-Entwickler ja schließlich gerade aufgrund der geführten Debatte (dankenswerterweise) Schritte in Richtung einer besseren und kontrollierteren Handhabung der Dekryptierung vorgenommen haben.

Bleibt das Restrisiko, dass größere mit PGP/Mime verschlüsselte HTML-Anhänge eine Menge an bekannten Textfragmenten wie etwa Tags enthalten. Dies kann gut ausgestatteten Angreifern mindestens theoretisch eine Grundlage für statistik-basierte Dekryptierungsversuche
verschaffen. Sollte dieses Problem wirklich bestehen, dann würde ich darin insgesamt aber eher eine Schwäche des Kryptierungsverfahrens (also von GnuPG) sehen als von “enigmail”.

Habe ich die Wahl zwischen weiter bestehenden Rest-Risiken und einem total unverschlüsselten Email-Verkehr, so ziehe ich – nach entsprechender Unterweisung des Kunden – immer noch den Einsatz einer Verschlüsselung vor.

Abschließend gilt grundsätzlich :

Mit HTML-Mails sind jenseits von Wechselwirkungen mit Verschlüsselungsprogrammen weitere schwerwiegende Risiken verbunden, denen man sich im Rahmen einer sicheren Kommunikation (bei allem gegenseitigen Vertrauen der Kommunikationspartner) erst gar nicht aussetzen sollte. Der Kunde sollte also dahingehend beraten werden, HTML-Mails im Normalfall auch in der Kommunikation mit vertrauenswürdigen Kommunikationspartnern (in diesem Falle u.a. mit mir) zu vermeiden.

Selbst sollte man seinen E-Mail Client so einstellen, dass er HTML-Mails zunächst nur im Plain Text Format öffnet. Im Falle, dass HTML-Formatierungen wirklich eine wichtige Rolle spielen, kann man den PGP/MIME HTML-Anhang immer noch öffnen. Als Paranoiker auch bei vertrauenswürdigen Quellen ggf. zunächst in einem Standard-Editor, um den HTML-Code vor einer Ausführung zu analysieren. 🙂

 

Elipse Luna, JSDT JQuery – Code Assist-/Autocompletion-Problem – reduzierte Liste an jQuery Methoden ?

Wir entwickeln für einen Kunden z.Z. größere PHP und jQuery-lastige Projeke mit dynamischen Ajax basierten Web Interfaces. Unsere IDE ist Eclipse (in der Luna Version inkl. PDT, JSDT, Aptana Plugin). Unser Projekt nimmt dabei Bezug auf ältere Projekte und bindet über Links Verzeichnisse aus diesen Projekten in den Build Pfad des aktuellen Projektes ein.

In den letzten Wochen hat mich ein Problem genervt, dass ich nicht auf Anhieb lösen konnte: Um mit Javascript und jQuery effizient arbeiten zu können, nutzen wir JSDT

JavaScript Development Tools	1.6.100.v201410221502	org.eclipse.wst.jsdt.feature.feature.group	Eclipse Web Tools

und JSDT jQuery

JSDT jQuery Integration 1.7.0	org.eclipselabs.jsdt.jquery_feature.feature.group

um während der Javascript-Entwicklung u.a. auf jQuery-bezogene Code Assist und Autocompletion Hinweise im JSDT Javascript-Editor zugreifen zu können.

Zunm Setup siehe z.B.:
https://code.google.com/ a/ eclipselabs.org/ p/ jsdt-jquery/ wiki/ Installation
oder
http://www.htmlgoodies.com/ html5/ javascript/ add-external-js-libraries-to-eclipse-jsdt-driven-projects.html# fbid=PCl6TfPGIe5
und dort den Abschnitt “Adding a JS Object Model Plugin”.

Ein wichtiger Schritt zum jQuery Code Assisting ist, dass man die gewünschte aktuelle Version der jQuery-Definitions-Bibliothek in sein Projekt einbindet. Dies geschieht – wie in den obigen Artikeln beschrieben – über einen Eclipse Konfigurationsdialog zu den Javascript-Bibliotheken des aktuellen Projektes.

In neu angelegten Projekten mit kombinierten “PHP/JSDT Natures” oder “Faceted Natures” funktionierte das Code Assisting im JSDT eigenen Javascript Editor auch prima. Es wurde z.B. ein komplette Liste aller verfügbarer Methoden des jQuery Objekts angezeigt – je nach geladener Version der jQuery Library.

In meinem eigentlichen Haupt-Projekt mit seinen Verlinkungen in Bereiche anderer Projekte wurde beim Code Assisting dagegen nur eine sehr stark reduzierte Liste von Methoden des “jQuery”-Objekts angezeigt.

Das ist beim Entwickeln total nervig. Ich wich in solchen Fällen auf entsprechende Funktionalitäten des Apatana Plugins und dess JS-Editor aus – obwohl ich den (im Gegensatz zum Aptana HTML-Editor) nicht mag.

Zudem führte ein Rebuild meines Projektes nach einem “Clean” zu Abbrüchen mit (Java-NullPointer-) Fehlern des im Build-Verlaufs ausgeführten JS Validators.

Ich habe zwischenzeitlich mehrere Versuche unternommen, mein Projekt (und auch abhängige Projekte) bzgl. ihrer Natures und Facetten neu aufzubauen. Vergeblich. Die Code-Assist Länge wurde nicht besser. Auch ein Vergleich der Projekt-Einstellungen auf Eclipse-Ebene brachte nichts. Natürlich habe ich auch alle Versionen der geladenen Javascript-Bibliotheken (u.a. der konfigurierten jQuery-Definitionsbibliothek) abgeglichen. Das brachte alles keinen Erfolg.

Interessanterweise kam eine vollständige Liste an jQuery Methoden, wenn man unter den geladenen Javascript Libraries die
ECMA 3 Browser Support Library” im entsprechenden Javascript Konfigurationsdialog des Projektes entfernte. Eine vollständige Liste kam im Javascript Code Assisting auch dann, wenn man die JS-Unterstützung im Eclipse Projekt dadurch deaktivierte, dass man die JSDT Nature des Projektes entfernte: Dann taucht der Javascript-Validator nicht mehr unter den aktiven Validatoren des Projektes auf und wird demnach auch nicht benutzt.

Hieraus ergab sich, dass mein Problem mit dem JS Validator und seiner Prüfung vorhandener JS-Dateien zusammenhängen musste. Das brachte mich heute endlich auf die richtige Spur:

In meinen älteren Projekten gab es Verzeichnisse, in denen ich neben eigenen JS-Dateien etliche alte Versionen der jQuery-Bibliotheks- und Definitions-Dateien hinterlegt hatte. Z.B. jquery-1.4.2.min.js oder noch ältere Varianten.

Unglücklicherweise wurden diese Verzeichnisse durch die Verzeichnis-Verlinkungen Teil des Source- und des Build-Paths des aktuellen Projekts. Die dortigen alten Definitionen wirkten sich offenbar mit Priorität auf den JS-Validator und auch die Code Assist Funktionalität aus. Irgendwie logisch – auch wenn ich die Priorisierung der Validator-Analyse bei mehreren vorhandenen jQuery-Dateien nicht nachvollziehen kann. Dennoch: Mein Fehler ! Verschiedene Bibliotheken, die die Definitionen des jQuery-Objektes unterschiedlich vornehmen, können im Rahmen von Builds und Validierungen nur ins Chaos führen.

Was habe ich gelernt?

Um mit “JSDT jQuery” vernünfig arbeiten zu können, sollte man eine evtl. vorhandene Sammlung alter jQuery-Library-Dateien nicht in den Source und/oder Build Path des laufenden Projekts aufnehmen. Wenn man überhaupt eine jQuery-Definitionsdatei in die eigenen Source Code Verzeichnisse integriert, dann eine, die mit der für das Projekt geladenen Version der jQuery-Bibliothek kompatibel ist.

Seit ich das beherzige, funktionieren das generelle JSDT JS und das JSDT jQuery Code Assisting einwandfrei. Auch die Abstürze beim Clean/Rebuild eines Projektes sind verschwunden.

Viel Spaß weiterhin mit Eclipse und JSDT bei eueren Entwicklungsarbeiten.

 

Libreoffice 4.3.5, Opensuse 13.1, langsames Laden von Dateien bei nicht erreichbarem Printserver

Vor einiger Zeit klagten ein Kunde und ein Bekannter von mir darüber, dass sich Libreoffice [LO] beim Öffnen und erstmaligen Laden einer Datei sehr viel Zeit lasse. Wörtlich: Man kann sich erstmal einen Kaffe machen. Diese Meldungen trudelten bei uns sowohl für Windows- wie auch Linux-Systeme ein.

Ich konnte das zunächst nicht glauben; der Effekt ließ sich in unserem Netzwerk auf keinem PC oder Laptop (weder unter Opensuse 13.2 noch unter Opensuse 13.1) nachvollziehen.

Nun war ich vor kurzem ein paar Tage mit meinem Laptop (Opensuse 13.1 mit LO 4.5.3) unterwegs und musste selbst unter dem beschriebenen Problem leiden. Es dauerte einige Zeit, bis ich herausfand, was die Ursache war:

Ist

  • der Druck unter Linux oder Windows für einen Server konfiguriert
  • und wird für die Kommunikation zum Server z.B. das ipp-Protokoll eingesetzt
  • und ist irgendeine Netzwerkkarte aktiv, aber der aktuell eingestellte Druckerserver über das Netz nicht erreichbar,

so wartet Libreoffice zunächst minutenlang vergeblich auf Antworten von dem nicht zu findenden Drucker-Server, bevor es anfängt den Inhalt einer zu ladenden Datei zu rendern.

Ist dagegen ein Druckerserver oder ein lokaler Drucker erreichbar oder aber überhaupt kein Netzwerk aktiv, so öffnet LO die zu ladenden Dateien ohne Zeitverlust. In unserem Netz übernimmt ein permanent erreichbarer CUPS-Server die zentrale Ansteuerung verschiedener Druckerwarteschlangen; deshalb war das Problem auf Systemen innerhalb unseres Netzwerkes nicht nachvollziehbar.

Das Ganze ist natürlich für Libreoffice wenig werbewirksam. Liebe Libreoffice-Entwickler: Es soll tatsächlich Leute geben, die sich mit Ihrem Laptop zwischen verschiedenen Netzen daheim und am Arbeitsplatz bewegen – und manchmal ist halt keiner der eingestellten Drucker oder Druckerserver erreichbar, obwohl man z.B. an einem WLAN hängt. Dann sollte man nicht 3 bis 4 Minuten warten müssen, bevor eine simple Calc-Datei geladen wird.

Ein Workaround besteht bei Bedarf darin, die Druckereinstellungen (temporär) so umzustellen, dass erst gar nicht nach einem Netzwerkdrucker gesucht wird. Unter Linux ist das relativ einfach – unter Windows muss man sich durch die entsprechenden Punkte der Systemsteuerung quälen und die eingestellten Netzwerkdrucker entfernen. Das Dumme ist, dass man bei Rückkehr ins heimische Netz die Netzwerkdrucker wieder in den lokalen Druckeinstellungen aktivieren muss.

Ich denke, die Libreoffice-Entwickler haben hier wirklich etwas zu korrigieren. Es ist für Leute, die sich mit ihren Laptops evtl. täglich zwischen verschiedenen Arbeitsplätzen und Netzwerken hin und her bewegen müssen, nicht zumutbar, ihre Druckereinstellungen laufend anpassen zu müssen. Das Fehlen oder die Nichterreichbarkeit eines Druckerservers oder Druckers sollte nicht zum vollständigen Stopp des Datei-Ladens und -Renderns führen. Besser wäre hier ein Dialog, in dem der User über das Suchen nach dem Druckerserver informiert wird und ggf. diesen Schritt auch überspringen kann.

Hofen wir mal, dass das Problem mit einer der nächsten LO-Versionen wieder verschwindet.

Linux und die Segmentierung des Heimnetzwerks – I

Freunde von uns wissen, dass wir in Sachen Sicherheit individuell analysieren und beraten. Und wir sind dabei sehr zurückhaltend mit pauschalen Rezepten. In einem Blog Artikel zu sicherheitsrelevanten Themen zu starten, beinhaltet daher viele Risiken. Ausschlaggebend für diesen Artikel war die für uns doch etwas schockierende Erfahrung, wie gering auch unter Linux-Freunden die Bereitschaft ist, sich über die Grenzen des eigenen PCs hinaus mit dem Thema Sicherheit des eigenen Netzwerkes zu befassen.

Auch Linux-Freunde haben aber Heimnetzwerke und greifen bzgl. ihrer Internetanbindung auf irgendwelche kommerziellen Router zurück (z.B. von der Telekom, von D-Link, Netgear oder AVM). Etliche dieser Router haben integrierte elementare Firewall-Funktionalitäten auf der Ebene von Paketfiltern mit Stateful Inspection [SI].

Viele Menschen – auch Linuxer – vertrauen die Sicherheit Ihrer PCs, Laptops und mobiler Geräte im Heimnetzwerk dem Schutz durch solche Router an. Aber spätestens nachdem man sich im Internet ein wenig über faktisch aufgetretene Sicherheitsprobleme mit solchen Produkten und/oder entsprechende Begründungen für erforderliche Firmware-Upgrades eingelesen hat, schwindet das Vertrauen in die herstellerabhängigen Technologie ein wenig. Der eine oder andere mag auch – nicht ganz zu Unrecht – fürchten, dass gerade ein Massenware-Produkt kommerzieller DSL-Router-Hersteller ein Objekt ausgiebiger Hacking-Forschungsprojekte von bösen Zeitgenossen und anderen interessierten Datensammlern sein dürfte.

Als Linuxer weiß man dann, dass man sich mit Bordmitteln und ein wenig HW ein Plus an Sicherheit schaffen können müsste. Wie aber den Einstieg finden?

Motive für eine sicherheitsorientierte Auseinandersetzung mit dem Heimnetzwerk

In der heutigen Welt braucht es gar nicht mal Hrn. Snowden oder eine Paranoia, um sich z.B. als Familienvater mit der Sicherheit im Heimnetzwerk auseinanderzusetzen. Es reichen einfache Überlegungen wie :

Wie gehe ich eigentlich mit den ganzen Mobile-Geräten meiner Kinder um? Und jenen von Gästen? Darf eigentlich ein Smartphone mein teures NAS-System mit vielen Services und all meinen Dokumenten und Photos zugreifen?

Wer in seinem IT-Leben zudem mal ganz real mit Viren und Trojanern konfrontiert war und wer sich mal Logs einer Firewall eines im Internet exponierten Systems angesehen hat, ahnt zumindest, dass das Netz nicht wirklich dein Freund ist. So auch ein (ambitionierter) Linux-Fan und Freund von uns, dessen Kinder inzwischen ihr eigenes (hoffentlich betreutes) IT-Leben auf PCs, Tablet PCs und Smartphones leben. Die Kids sollen sich aber natürlich nicht auf den Rechnern der Eltern, die z.T. ja auch zuhause professionell genutzt werden, tummeln. Das Gleiche gilt natürlich auch für die elektronischen Begleiter von Gästen. Es gehört inzwischen ja (leider !) zum guten Ton, dass fast jedermann bei Besuchen auf das hauseigene WLAN Zugriff bekommt. Leider können die Folgen solcher Freizügigkeit schlimm sein …

Der erste Schritt – Netzwerk-Segmentierung

Wie kann man also als Linux-Anhänger sein Heimnetzwerk mit relativ geringen Investitionsmittel und “etwas” Gehirnschmalz sicherer machen? Darüber hatte ich mit unserem Bekannten einige z.T. heftige Diskussionen. Auffällig war dabei für mich, wie wenig eigentlich auch Linux-affine Menschen im privaten Bereich über ihre Netzwerk-Gestaltung nachdenken oder nachdenken wollen. Da kommen dann in mehrfacher Hinsicht falsche und auch irrelevante Argumente wie : Virenschutz braucht man ja nicht auf Linux-Systemen! Die Lageeinschätzung ändert sich meist erst dann, wenn man mal (u.a.) visualisiert,

  • welche Verbindungen die liebgewonnen smarten elektronischen Begleiter z.T. ungefragt aus dem eigenen Netz heraus zu Servern im Internet (und
    in anderen Ländern mit anderen Gesetzen) aufmachen,
  • welche Broadcasts und Multicast-Pakete im Netz herumschwirren und nach Antworten suchen und sie möglicherweise auch von einem Linux-System bekommen
  • und welchem Ansturm der DSL-Router von außen so ausgesetzt ist.

Schöne Aha-Effekte erhält man auch, wenn man das Ergebnis von Scans mit “nmap/zenmap” graphisch aufbereitet darstellt oder einen gezielten (und vom Hausherrn erlaubten) Angriff mittels Metasploit auf einen Windows-PC demonstriert.
Neben dem Risiko, das von WLAN-Gästen ausgeht, kann man natürlich auch diskutieren, dass und wie ein Windows-Rootkit beginnen kann, die Netzwerk-Umgebung samt den offenen Ports auf den Linux-Systemen auszuforschen. Mit nachfolgenden Konsequenzen …

Plötzlich tritt dann die gefürchtete Komplexität der zu planenden Punkte wieder in relatives Gleichgewicht mit den erkannten Risiken. Z.B. Risiken durch den Windows-Laptop des Freundes des Tochter, auf dem ja “nur” im Internet gespielt oder gechattet wird. [Oder im Betriebsnetz: Risiken durch den netten externen Berater, der sich selbstverständlich an das Firmennetz ankoppeln darf.]

Aus meiner Sicht ist (trotz des Protests unseres Bekannten) eine ordentliche Segmentierung des Heimnetzwerks ein erster wichtiger Schritt in Richtung organisierter Verbesserung von Sicherheit. Wieso muss hinter einem DSL-Router eigentlich jedes am WLAN angemeldete (Android-) oder Windows-Gerät jeden PC, jedes NAS-System oder gar Server im heimischen Netz sehen können? Persönlich orientiere ich mich bei Sec-Themen immer an der folgenden Reihenfolge von Fragen:

  1. Wer darf denn überhaupt mit wem ?
  2. Mit welcher Netzwerkanbindung? Auf welchem Kanal/Port und mit welchem Protokoll?
  3. Welche Kriterien muss die Nutzlast der Kommunikation ggf. erfüllen?
  4. Was muss ich dann tun, um das einzelne System gegenüber spezifischen, z.T. betriebssystem- und applikationsspezifischen Bedrohungen und gegenüber Malware abzusichern?

Warum in dieser (diskutierbaren) Reihenfolge? Schlicht und einfach: Ein kompromittiertes System darf zumindest nicht “kampflos” zum Risiko für andere Systeme werden.

In dieser Artikelserie geht es mir lediglich um Punkt 1. Dabei habe ich jedoch fast ein schlechtes Gewissen – denn Sicherheit umfasst auch und gerade im heterogenen Heimnetzwerk wahrlich mehr als Netzwerk-Segmentierung. Aber irgendwo muss ja auch der ambitionierte Linux-Heimwerker anfangen …

Vielleicht ist der folgende Überblick über den entstehenden Segmentierungsansatz bei unserem Bekannten ja auch für andere interessant. Ein Anwendungsfall könnten z.B. Heimnetzwerke von Freiberuflern oder Ärzten, Psychologen und Rechtsanwälten sein, die auch zu Hause Ihrer Arbeit nachgehen und für deren Patientendaten schon wegen einschlägiger Datenschutzrichtlinien ein hoher Schutzbedarf besteht.

Ich gehe in zwei Artikeln dieser kleinen Serie wie gesagt nur auf eine mögliche, grundsätzliche Netzsegmentierung ein. Alles weitere würde uns dann in die Detail-Konfiguration einiger Netzwerkdienste (wie etwa DHCP, DNS und ggf. Samba) und vor allem aber das Aufsetzen hinreichender iptables-Regeln führen. Ich kann entsprechende Details leider schlecht in einem Blog diskutieren. Das Gleiche gilt für IDS-Verfahren. Wer daran ernsthaft interessiert ist, mag – wie unser Bekannter – ein kleines Projektchen mit mir aufsetzen. Ich gehe hier auch nicht auf Anonymisierungsverfahren bzgl. des Surfens im Internet ein. Das mag enttäuschend für den einen oder anderen Leser sein, aber meine verfügbare Zeit für den Blog ist schlicht und einfach begrenzt.

(Alte) HW für ein zusätzliches Gateway-System mit Firewall aktivieren

Als Linuxfreund zieht man
ggf. eine betagte PC-Kiste aus der Versenkung und überlegt sich, den anderen Systemen im Heimnetzwerk (wie PCs, Laptops u.a.) mit Hilfe dieses Geräts noch eine Linux-Firewall als zusätzliche Barriere im Umgang mit dem Internet zu spendieren. Die Kosten für ein bis zwei zusätzliche Netzwerkkarten sind ja relativ gering. Hat man noch ein wenig mehr Geld, so kann man auch auf den Gedanken kommen, neben dem WLAN, das auf heutigen DSL-Routern mit angeboten wird, ein weiteres WLAN zu etablieren, auf das z.B. Gäste keinen Zugriff erhalten. Dazu braucht es dann einen separaten WPA2-gesicherten WLAN-Router oder besser WLAN-Access-Point.

Netzwerk-Segmentierung

In der Diskussion mit meinem Bekannten entstand dann das folgende Bild seines künftigen Heimnetzwerkes mit einer Reihe von erkennbaren Segmenten:

netz2

Ich habe das Bild gegenüber der Realität etwas angereichert, um zu verdeutlichen, dass man es in einem z.T. professionell genutzten Heimnetzwerk oder in einer kleinen Firma auch ganz schnell mal mit Systemen zu tun haben kann, die auf Virtualisierungshosts laufen. Der eine Server steht dann stellvertretend für mehrere (spezialisierte) Server und auch die zwei PCs sind nur Stellvertreter für mehr Geräte ihrer Klasse.

Das Ganze ist dann doch schon relativ komplex und nähert sich der Struktur eines kleinen Firmennetzes an. Ich kenne einige kleinere Firmen, für die das Bild strukturell ziemlich ähnlich wäre. Allerdings sind bestimmte Systeme dann durch gewartete Sicherheits-Appliances ersetzt oder ergänzt und zudem spielen VPNs eine große Rolle. Der Linux-Heimwerker kann sich teure Appliances jedoch nicht ohne weiteres leisten.

Die Crux des Ganzen – Was nützen Segmente ohne Kommunikations- und Filterregeln?

Ehrlich gesagt: wenig. Damit sind wir auch bei dem Punkt, durch den sich auch unser Bekannter in unseren Diskussionen abgeschreckt gefühlt haben dürfte. Wer wie mit wem in dem oben darzustellenden Netzwerk kommunizieren und wer welchen Service nutzen darf, ist zum großen Teil ein Sache sinnvoll und sicher aufgesetzter Paketfilter-Regeln. Hierbei kommt dem Paketfilter auf dem inneren Router-System eine besondere Bedeutung zu. Aber auch einfache, zusätzlich aktivierte “vereinfachte” Firewalls wie etwa die “SuseFirewall2” kann einem auf dem einen oder anderen System innerhalb des inneren Netzwerks schon mal gehöriges Kopfzerbrechen bereiten.

Die Logik ineinandergreifender iptables-Regeln auf verschiedenen Systemen mit speziellen betriebssystem-spezifischen “Personal Firewalls” (z.B. auf Windows-Laptops) kann je nach Situation beliebig komplex werden und ist sicher nicht jedermanns Sache. Das ist keine Abschreckung sondern eine auf Erfahrung gegründete vorsichtige Warnung:

In iptables – und erst Recht das Zusammenspiel von iptables-Regeln mit Firewall-Settings auf anderen Systemen – muss man sich reinknien.

Man kann dabei zudem Fehler machen. Speziell, wenn man bestimmte Linux-, Windows und ggf. Android-Systeme an so schöne Dinge wie File-, Mail und Web-Dienste auf einem zentralen Heimserver ranlassen will. Geht es wirklich um erhöhten Sicherheitsbedarf, so ist das Regelwerk ferner durch Analyse- und Penetrationswerkzeuge einem Belastungstest auszusetzen. Ferner kommt gerade bei Android und Windows Punkt 4 unser obigen Checkliste und die Konfiguration spezieller kommerzieller Produkte zum Tragen. Spätestens dann werden Grenzen für den Hobby-Linux-Bastler erkennbar.

Ich kann und will die iptables-Regeln für die einzelnen Maschinen des nachfolgend skizzierten Netzes nicht im
Rahmen der dieses und des kommenden Blog-Beitrags diskutieren. Das heißt aber nicht, dass man als Linux-Interessierter gleich die Segel streichen müsste. Zu iptables gibt es am Markt sehr gute Bücher. Ferner gibt es graphische Hilfsmittel. Obwohl ich den aktuellen Pflegestatus des SW-Pakets nicht so richtig einschätzen kann, empfinde ich “FWBuilder” nach wie vor als ein Opensource Programm, das den iptables-Einstieg doch sehr erleichtert – auch wenn die generierten Regelsätze manchmal im Internet und in Fachartikeln kritisiert wurden. Die durch FWBuilder generierten Chains und Regeln stellen aus meiner Sicht jedenfalls eine brauchbare Grundlage für evtl. weitergehende Verbesserungsarbeiten dar.

Also -liebe Linux-Heimwerker: Kauft euch ein iptables-Buch, fangt mit FWBuilder an und habt vor allem Spaß an eurem privaten Sicherheitsprojekt !

iptables scripts und systemd?

Nun hat man es wegen “systemd” im Moment leider nicht mehr ganz so leicht, seine mit welchem Tool auch immer erstellten iptables-Regeln beim Systemstart auch zu aktivieren. Deshalb werde ich in einem dritten Beitrag dieser kleinen Serie kurz darauf eingehen, wie man ein iptables-Generator-Skript auf einfach Weise in den systemd-gesteuerten Startablauf einbauen kann.

Im nächsten Beitrag gehe ich zunächst auf die vorgeschlagenen Segmente und Gründe für deren Abtrennung ein. Bis dann!

Opensuse 13.2, Libreoffice, fehlendes Paket libreoffice-clipart

Bestimmte Themen tauchen komischerweise immer wieder auf. Im Zusammenhang mit Opensuse 12.3 hatte ich vor ein paar Jahren darauf hingewiesen, dass zeitweise die deskriptiven Dateien “*.sdg, *.sdv, *.str, *.thm” für die thematische Gliederung der Openclipart-Dateien fehlten. Siehe
Opensuse 12.3 – OpenClipart-Definitionen für Libreoffice unvollständig

Im Moment ist es unter Opensuse 13.2 ähnlich schlimm:

Man kann zwar die Openclipart-Pakete herunterladen. Leider bietet aber keines der üblichen Repositories ein Paket an, dass dafür sorgen würde,

  • dass die Verlinkung der Clipart-Verzeichnisse in das zu Libreoffice gehörige “gallery”-Verzeichnis (/usr/lib64/libreoffice/share/gallery/) ordnungsgemäß vorgenommen wird
  • dass die notwendigen deskriptiven Dateien für die Themenfelder der Openclipart-Sammlung bereitgestellt werden.

Üblicherweise gab es hierfür in der Vergangenheit ein Paket namens “libreoffice-openclipart”. Debian und Ubuntu bieten entsprechende, aktuelle “deb”-Pakete nach wie vor an. Bei SuSE ist das entsprechende RPM jedoch verschütt gegangen.

Deshalb sind vielen netten Openclipart-Bilder leider unter Libreoffice auf einem aktuellen Opensuse 13.2-System nicht unmittelbar und nicht ohne Klimmzüge nutzbar. Ich selbst merkte das natürlich auch erst, als ich für eine anstehende Kunden-Präsentation dringend ein paar Cliparts benötigte. Der in meinem früheren Beitrag erwähnte Workaround ist jedoch für die Menge der aktuellen Openclipart-Themenbereiche leider viel zu umständlich. Die alternativ einsetzbare Libreoffice-Erweiterung “openclipart.oxt” , mit der man ggf. Cliparts auch direkt aus dem Internet beziehen kann, finde ich viel zu träge. Man erhält aufgrund der notwendigen Suchvorgänge auch keinen schnellen Überblick. Ferner wird die Erweiterung seit längerem nicht mehr gepflegt. Was also tun ?

Möglicher Workaround
Man kann schlicht auf eine ältere Version aus Opensuse 13.1-Zeiten zurückgreifen. Ich habe mir z.B. aus dem Repository
http://rpmfind.net/linux/opensuse/distribution/13.1/repo/oss/suse/noarch/
die Pakete

  • openclipart-svg-0.18-155.1.2.noarch.rpm
  • openclipart-png-0.18-155.1.2.noarch.rpm
  • libreoffice-openclipart-4.1-2.1.3.noarch.rpm

heruntergeladen und in dieser Reihenfolge zusätzlich zum laufenden Libreoffice 4.3.5 installiert. Die Datei “libreoffice-openclipart-4.1-2.1.3.noarch.rpm” stellt dann wie gewohnt die erforderlichen deskriptiven Dateien bereit.

Danach ist u.U. noch ein wenig Aufräumen angesagt. In meinem Fall war es so, dass es im Verzeichnis “/usr/share/clipart” bereits ein Unterverzeichnis

“/usr/share/clipart/openclipart”

gab. Und zwar aus der früheren Installation der aktuellen Openclipart-Variante, zu denen Opensuse ja leider keine deskriptiven Dateien anbietet. Der Installer hatte die Dateien zur älteren Openclipart-Version 0.18 deshalb unter einem zusätzlichen Verzeichnis:
“/usr/share/clipart/openclipart-0.18”
angelegt. Das verträgt sich jedoch nicht mit den Links der deskriptiven Dateien. Also (als user root oder mit sudo):

mytux:~ # mv /usr/share/clipart/openclipart /usr/share/clipart/openclipart-0.20
mytux:~ # mv /usr/share/clipart/openclipart-0.18 /usr/share/clipart/openclipart

Danach noch checken, dass unter “/usr/lib64/libreoffice/share/gallery” die notwendigen deskriptiven Dateien der Openclipart-Themenbereiche tatsächlich als Links angelegt wurden – man erkennt diese (vielen) Links leicht am führenden ”
openclipart” im Namen. Ferner zur Sicherheit noch folgenden Link prüfen und ggf. ersetzen:

mytux:~ # rm /usr/lib64/libreoffice/share/gallery/clipart
mytux:~ # ln -s /usr/share/clipart/openclipart/ /usr/lib64/libreoffice/share/gallery/clipart

Nun mit dem aktuellen Libreoffice-Writer testen. Bei mir hat dann alles einwandfrei funktioniert. Ich bin damit zwar nicht auf dem neuesten Stand – kann aber wenigstens die Cliparts von Opensuse 13.1 nutzen.

Hoffentlich merkt ein Verantwortlicher bei Opensuse für das aktuelle Libreoffice-Repository bald mal, dass die dortigen Pakete nicht zusammen mit den Openclipart-Dateien funktionieren.