Archiv des Autors: Jörg Kastning

Certificate Pinning mit NGINX

Dieser Artikel beschreibt, was Certificate Pinning ist, wie es TLS/SSL-Verbindungen sicherer macht und wie man es für den Webserver NGINX konfiguriert.

Der Artikel steht in einer PDF-Version zum Download und Druck zur Verfügung: Certificate_Pinning_mit_NGINX

Einleitung

Um zu verstehen, wie Certificate Pinning hilft, TLS/SSL-Verbindungen sicherer zu machen, muss man sich zuerst der Schwachstelle der TLS/SSL-Verschlüsselung bewusst sein.

TLS/SSL-Verbindungen sollen die vertrauliche Kommunikation zwischen zwei Kommunikationspartnern sicherstellen. Bei den Kommunikationspartnern handelt es sich typischerweise um einen Client und einen Server. Die Sicherheit der Vertraulichkeit beruht darauf, dass der Client auch tatsächlich mit dem richtigen Server verbunden ist. Dazu weist sich der Server mit einem Zertifikat aus, welches von einer Zertifizierungsstelle (Certificate Authority, CA) ausgestellt wurde. Die Zertifizierungsstelle prüft die Identität des Dienstbetreibers und beglaubigt mit ihrer digitalen Signatur das Zertifikat.

Die c’t schreibt in ihrem Artikel „Festgenagelte Zertifikate“ in Ausgabe Nr. 23 vom 17.10.2015: „Das Problem dabei: Es gibt weit über hundert solcher Zertifizierungsstellen, denen die gängigen Internet-Programme wie Browser und E-Mail-Client vertrauen. Als wäre das nicht unübersichtlich genug, haben die dann auch noch zahllose Unter-CAs, die berechtigt und in der Lage sind, im Namen dieser CAs zu unterschreiben.“[1. Schmidt, Jürgen: Festgenagelte Zertifikate: TLS wird sicherer durch Certificate Pinning, in: c’t magazin für computer technik, Nr. 23, 17.10.2015, S. 118, Spalte 2-3.]

Das Problem besteht nun nicht in der Anzahl der Zertifizierungsstellen, sondern darin, dass jede dieser Zertifizierungsstellen Zertifikate für beliebige Domains ausstellen darf. So können sich Dritte ein Zertifikat auf eine bereits existierende Domain ausstellen lassen und dieses zum Beispiel für einen Man-In-The-Middle-Angriff (MITM-Angriff) verwenden.

Das genannte Angriffsszenario existiert nicht nur in der Theorie. Wie die c’t berichtet nutzte die chinesische Regierung gefälschte Google-Zertifikate auf ihrer großen Firewall, um den Google-Mail-Verkehr ihrer Bevölkerung überwachen zu können. Darüber hinaus werden weitere Fälle wie der Hack der niederländischen Zertifizierungsstelle DigiNotar und TrustWave aufgeführt.[2. Schmidt, Jürgen: Festgenagelte Zertifikate: TLS wird sicherer durch Certificate Pinning, in: c’t magazin für computer technik, Nr. 23, 17.10.2015, S. 119, Spalte 1.] Im ersten Fall wurden gefälschte Zertifikate für GMail und Facebook ausgestellt. Im zweiten Fall wurden Zertifikate für Firmen ausgestellt, welche diese Zertifikate nutzten, um den verschlüsselten Internet-Verkehr ihrer Mitarbeiter zu überwachen.

Die Man-In-The-Middle-Angriffe funktionieren, da die Zertifizierungsstellen, welche die gefälschten Zertifikate ausgestellt haben, in der Liste der vertrauenswürdigen Zertifizierungsstellen der gängigen Browser geführt werden. Für den Browser ist damit auch das gefälschte Zertifikat gültig. Der Benutzer kann den MITM-Angriff nicht erkennen und nimmt fälschlicherweise an direkt mit dem gewünschten Server zu kommunizieren.

Um einen MITM-Angriff erkennen zu können, muss der Client überprüfen können, ob das ihm vorliegende Zertifikat von der CA des Dienstbetreibers oder von einer anderen CA ausgestellt wurde. Hier kommt Certificate Pinning ins Spiel.

Certificate Pinning für TLS/SSL

Certificate Pinning wurde im RFC 7469 spezifiziert.[3. RFC 7469: Public Key Pinning Extension for HTTP] Es handelt sich dabei um einen Mechanismus, bestimmte Eigenschaften eines Zertifikats festzunageln. Der Browser erhält dabei mit dem Zertifikat zusätzliche Informationen, mit denen er die Authentizität des Zertifikats überprüfen kann.

In der Praxis wird dem Browser ein Hash-Wert übermittelt, welcher über den öffentlichen Schlüssel des Zertifikats gebildet wurde. Dieser Hash-Wert wird in einem HTTP-Header-Field an den Browser übertragen und von diesem gespeichert. Wie dieses Verfahren genau funktioniert, beschreibt der RFC 7469 ab Abschnitt 2.1.1[4. RFC 7469 Section 2.1. Response Header Field Syntax] Da nur der Dienstbetreiber über den dazugehörigen privaten Schlüssel verfügt, ist ein Missbrauch durch Dritte ausgeschlossen. Übermittelt nun nämlich ein Angreifer bei einem MITM-Angriff den zu seinem Zertifikat gehörenden öffentlichen Schlüssel, kann der Browser mit Hilfe des PINs erkennen, dass dieser Schlüssel nicht dem Dienstbetreiber gehört und den Angriff damit auffliegen lassen.

Eine Schwachstelle bleibt jedoch. Damit das beschriebene Verfahren funktioniert, muss die erste Verbindung, die ein Client zum Server aufbaut, integer und vertrauenswürdig sein. Findet bereits beim ersten Verbindungsaufbau ein MITM-Angriff statt, kann der Angreifer einen zu seinem öffentlichen Schlüssel passenden Hash übermitteln und das beschriebene Verfahren damit aushebeln.

Es existiert also ein gewisses Henne-Ei-Problem, welches im folgenden Abschnitt kurz angerissen wird.

TOFU: Trust On First Use

Nein, mit TOFU ist an dieser Stelle kein Nahrungsmittel gemeint. TOFU steht in diesem Kontext für das Trust-On-First-Use-Prinzip, welches die c’t in ihrem Artikel „Zertifikate festnageln“ erläutert.[5. Schmidt, Jürgen: Festgenagelte Zertifikate: TLS wird sicherer durch Certificate Pinning, in: c’t magazin für computer technik, Nr. 23, 17.10.2015, S. 121, Kasten „TOFU: Trust On First Use.]

Das darin beschriebene Henne-Ei-Problem besteht darin, dass man zuerst eine sichere Verbindung benötigt, um die erforderlichen Informationen zu erhalten, mit denen zukünftige Verbindungen gesichert werden können.

Mittlerweile sollte jedoch bekannt sein, dass es keine hundertprozentige Sicherheit gibt. Damit ist der beschriebene Schutz besser als gar keiner. In der Praxis kann Certificate Pinning daher in sehr vielen Fällen helfen, die Sicherheit vertraulicher Kommunikation zu steigern.

Certificate Pinning auf dem eigenen Server

Dieser Abschnitt beschreibt, wie man Certificate Pinning auf dem eigenen Server konfigurieren kann. Es wird dabei auf notwendige Vorüberlegungen eingegangen und die Berechnung der PINs beschrieben. Im Anschluss wird das Certificate Pinning beispielhaft an einem NGINX-Server demonstriert.

Vorüberlegungen

In den vorangegangenen Abschnitten wurde erläutert, wie Man-In-The-Middle-Angriffe durch Certificate Pinning erheblich erschwert werden können. Nun stellt sich die Frage, welchen öffentlichen Schlüssel man festnageln möchte. Denn Certificate Pinning kann auf jeden öffentlichen Schlüssel der gesamten Zertifizierungskette angewendet werden. So kommen sowohl das eigene Serverzertifikat, als auch das der Intermediate CAs und das der Root CA in Frage.[6. Schmidt, Jürgen: Sicher mit Pin: Zertifikats-Pinning auf dem eigenen Server, in: c’t magazin für computer technik, Nr. 23, 17.10.2015, S. 122, Spalte 1.]

Pinnt man den öffentlichen Schlüssel einer Intermediate CA oder gar einer Root CA, so werden alle von diesen Zertifizierungsstellen ausgestellten Zertifikate vom Browser als gültig und sicher akzeptiert. Daher erscheint es am sichersten, wenn man den öffentlichen Schlüssel des eigenen Serverzertifikats festnagelt. Hierbei muss allerdings folgendes Risiko beachtet werden.

Wird der Schlüssel durch Kompromittierung unbrauchbar, oder geht durch Hardwaredefekt verloren, können Benutzer die gesicherten Dienste eventuell nicht mehr nutzen. Denn die Browser haben den Pin gespeichert und werden vor Ablauf der Lebensdauer keinen neuen Pin akzeptieren. Die Lebensdauer kann je nach Konfiguration mehrere Wochen bis Monate betragen.[7. Schmidt, Jürgen: Sicher mit Pin: Zertifikats-Pinning auf dem eigenen Server, in: c’t magazin für computer technik, Nr. 23, 17.10.2015, S. 122, Spalte 2.]

Um das im vorigen Absatz beschriebene Risiko zu minimieren definiert RFC 7469 die zusätzliche Verwendung eines Backup-PINs. Dabei wird ein Hash-Wert über den öffentlichen Schlüssel eines Schlüsselpaares gebildet, welches aktuell noch nicht genutzt wird.[8. RFC 7469, Abschnitt 4.3. Backup Pins] Dies kann zum Beispiel dadurch erreicht werden, dass ein Hash-Wert für den öffentlichen Schlüssel eines Certificate Signing Request (CSR) generiert wird.

Der Backup-Pin wird ebenfalls über ein HTTP-Header-Feld ausgeliefert und vom Browser eines Clients gespeichert. Der erzeugte Backup-CSR sollte sicher offline aufbewahrt werden. Er kann genutzt werden, um ein neues Zertifikat für die entsprechende Domain ausstellen zu lassen. Auf diese Weise können Zertifikate verlängert bzw. erneuert werden, ohne dass der Zugriff auf die entsprechende Domain unterbrochen wird.

Backupstrategie

In diesem Abschnitt wird eine konkrete Backupstrategie für den Backup-Pin beschrieben.

Der für den Backup-Pin verwendete CSR ist sicher aufzubewahren. Denn mit ihm kann ein Zertifikat für eine Domain bzw. einen Host ausgestellt werden, welches von Clients als gültig anerkannt wird, da sie den dazugehörigen Backup-Pin gespeichert haben.

Ich persönlich speichere den CSR und den dazugehörigen privaten Schlüssel in KeePassX[9. The Official KeePassX Homepage]. Auf diese Weise werden die Informationen sicher in einer Datenbank mit einer 256 Bit AES-Verschlüsselung abgelegt. Die KeePassX-Datenbank selbst bewahre ich in einem TeamDrive[10. TeamDrive Homepage]-Space auf. Dadurch wird die Datenbank sicher auf meine Endgeräte synchronisiert, so dass die Daten auch bei Ausfall eines Endgeräts erhalten bleiben.

Die lokalen Datenträger der zur TeamDrive-Synchronisation verwendeten Endgeräte sind ebenfalls verschlüsselt. So sind die Daten im Falle eines Diebstahls eines Endgeräts gleich doppelt geschützt. Erstens durch die Verschlüsselung des lokalen Datenträgers und zweitens durch die verschlüsselte KeePassX-Datenbank.

Die PINs berechnen

Die benötigten PINs werden auf der Kommandozeile mit openssl generiert.[11. RFC 7469: Appendix A. Fingerprint Generation] Für ein existierendes SSL-Zertifikat kann der Pin mit folgendem Code erzeugt werden:

openssl x509 -noout -in certificate.pem -pubkey | openssl asn1parse -noout -inform pem -out public.key
openssl dgst -sha256 -binary public.key | openssl enc -base64

Der erzeugte Pin wird auf der Standardausgabe ausgegeben und endet immer auf das Zeichen „=“.

Für den Backup-Pin wird zunächst ein neuer Certificate Signing Request erstellt:

openssl genrsa -out example.com.key 2048
openssl req -new -key example.com.key -out example.com.csr

Über den so erzeugten Certificate Signing Request (example.com.csr) wird nun ebenfalls ein Pin mit folgendem Code erzeugt:

openssl req -noout -in example.com.csr -pubkey | openssl asn1parse -noout -inform pem -out example.com_csr.key
openssl dgst -sha256 -binary example.com_csr.key | openssl enc -base64

Der erzeugte Backup-Pin wird ebenfalls auf der Standardausgabe ausgegeben und muss ebenfalls auf das Zeichen „=“ enden.

Konfiguration von NGINX

Sind die PINs erzeugt, kann anschließend der Webserver konfiguriert werden, diese auszuliefern. Neben der Pin-Direktive[12. RFC 7469: Abschnitt 2.1.1. The Pin Directive] ist hier die Max-Age-Direktive[13. RFC 7469: Abschnitt 2.1.2. The max-age Directive] von Bedeutung. Letztere gibt die Zeit in Sekunden an, für die ein Pin durch den Browser gespeichert wird.

Für die ersten Tests sollte die Max-Age-Direktive auf wenige Minuten gesetzt werden. Dieser Wert sollte erst bei reibungslosem Betrieb auf mehrere Wochen erhöht werden.

Das zusätzliche Header-Feld muss im SSL-Block der NGINX-Konfiguration hinzugefügt werden. Dazu wird folgender Code in den SSL-Block eingefügt:

add_header Public-Key-Pins 'pin-sha256="PRIMARY-PIN"; pin-sha256="BACKUP-PIN"; max-age=300; includeSubDomains';

Dabei sind PRIMARY-PIN und BACKUP-PIN durch die entsprechenden PINs zu ersetzen. Die optionale includeSubDomains-Direktive[14. RFC 7469: Abschnitt 2.1.3. The includeSubDomains Directive] gibt an, dass die übermittelten PINs auch für alle Subdomains des Hosts gelten.

Anschließend muss die Konfiguration neue geladen werden, um diese zu aktivieren:

sudo service nginx reload

Fazit

Certificate Pinning ist ein in RFC 7469 spezifizierter Standard, welcher heute bereits von den weit verbreiteten Browsern Chrome und Firefox unterstützt wird. Auch die Konfiguration weit verbreiteter Webserver wie Apache, lighttpd und NGINX ist mit geringem Aufwand, wie hier am Beispiel von NGINX gezeigt, zu erledigen.

Lediglich die sichere Aufbewahrung des Backup-CSR ist sicherzustellen, um eine längere Nichterreichbarkeit einer Domain vermeiden zu können.

Damit ist Certificate Pinning grundsätzlich geeignet, die verschlüsselte Kommunikation im Internet noch sicherer zu machen.

Quellen:

Verzeichnisse auf Linux-Server nachträglich verschlüsseln

Auf einem entfernten Linux-Server sollen nachträglich das HOME-Verzeichnis eines Benutzers und weitere einzelne Verzeichnisse im Dateisystem verschlüsselt werden. Nach einer ersten Recherche im Internet kommen für diese Aufgabe ecryptfs, EncFS und VeraCrypt in Frage.

In diesem Artikel möchte ich mich im Folgenden näher mit der Zielstellung auseinandersetzen und die damit zusammenhängenden Fragen diskutieren. Daher freue ich mich, wenn ihr euch an der Diskussion beteiligt und weitere Informationen und Quellen zum Thema beisteuert.

Zielstellung

Es sind Verzeichnisse eines entfernten Linux-Servers zu verschlüsseln. Auf den Server kann via SSH zugegriffen werden. Bei den zu verschlüsselnden Verzeichnissen handelt es sich um das HOME-Verzeichnis eines Benutzers und um weitere Verzeichnisse innerhalb des Dateisystems, wie z.B. /var/www/sitename/data.

Mit der Verschlüsselung sollen die Verzeichnisse vor unberechtigtem Zugriff geschützt werden für den Fall,

  1. dass die Festplatten des Servers gestohlen werden.
  2. dass der Server von einem anderen Bootmedium gestartet wird, um auf das Dateisystem zuzugreifen.

Beim Start des Servers sollen die verschlüsselten Verzeichnisse eingehängt werden, so dass sie unabhängig von einer Benutzeranmeldung zur Verfügung stehen.

Fragen

Um die beschriebene Zielstellung zu erreichen, sind im Vorfeld folgende Fragen zu beantworten:

  1. Ist es mit einer der genannten Lösungen prinzipiell möglich, nachträglich Verzeichnisse eines entfernten Linux-Servers zu verschlüsseln, wenn diese Verzeichnisse bereits existieren und Daten enthalten?
  2. Ist es mit einer der genannten Lösungen möglich, die verschlüsselten Verzeichnisse nach dem Bootvorgang einzuhängen, ohne dass sich ein Benutzer dazu am Server anmelden muss?
  3. Gibt es bekannte Schwachstellen in den genannten Lösungen, die einen Einsatz obsolet erscheinen lassen?
  4. Welche Angriffsvektoren bestehen bei der in der Zielstellung beschriebenen Verschlüsselung?

Eigene Gedanken und Diskussion

Besonders was den zweiten Stichpunkt betrifft, bin ich skeptisch, ob dies überhaupt möglich ist. Denn um ein verschlüsseltes Verzeichnis entschlüsseln zu können, ist in der Regel die Eingabe von Passwort oder Passphrase erforderlich.

Bei einem Desktop-System wird meist bei Eingabe des Benutzerpassworts bei der Anmeldung der Benutzer-Keyring entsperrt, in dem sich die Passphrase zum Entschlüsseln des Verzeichnisses befindet.

Es leuchtet ja auch ein, dass ein Schlüssel bzw. eine Passphrase nicht aus einem verschlüsselten Bereich geladen werden kann. Daher glaube ich nicht, dass sich oben beschriebenes Vorhaben umsetzen lässt.

Was ist eure Meinung dazu? Habt ihr vielleicht andere Ideen, wie oben genannte Anforderungen erfüllt werden können?

Mauszeiger in rdesktop-Sitzung auf Windows Server 2012 R2 wieder sichtbar machen

Zur Administation von Windows-Servern unter Linux/Unix verwende ich das Programm „rdesktop“. Beim Zugriff auf Hosts mit dem Betriebssystem Windows Server 2012 R2 musste ich feststellen, dass der Mauszeiger in der RDP-Sitzung nicht mehr zu sehen war. Er nahm automatisch die Farbe des Hintergrunds an.

Bevor ich wahnsinnig wurde, fand zum Glück ein Kollege die folgende Lösung für dieses Problem:

Auf dem jeweiligen Windows-Server ist der Mausschatten zu deaktivieren. Die dazugehörige Einstellung findet man in der Systemsteuerung unter Hardware -> Maus -> Registerkarte Zeiger. Anschließend sieht man den Mauszeiger wieder und die Administration geht einem deutlich leichter von der Hand.

WLAN-Stick am Raspberry Pi einrichten

Dies wird eine Notiz zu meiner persönlichen Erinnerung. Obwohl ich schon lange mit dem Pi arbeite, hatte ich erst jetzt Gelegenheit, ihn auch mittels eines Wifi-USB-Sticks mit einem WLAN zu verbinden.

Dazu bin ich der Anleitung von datenreise gefolgt, welche auch für den mir zur Verfügung stehenden Adapter von CSL funktioniert.

Anleitung: datenreise – Raspberry Pi – WLAN einrichten (Edimax)

Postfix als Backup-MX einrichten

Seit Januar diesen Jahres betreibe ich meinen Mailserver[1. Der eigene Mailserver – Start der Artikelreihe] [2. Der eigene Mailserver – Teil 2] [3. Der eigene Mailserver – Teil 3] [4. Der eigene Mailserver – Teil 4] selbst. Denn ich wollte wieder etwas mehr Kontrolle über meine E-Mails haben. In den letzten Tagen habe ich mir Gedanken gemacht, wie sehr es mich stören würde, wenn der Mailserver mal für mehrere Stunden oder Tage ausfallen sollte. Nach reiflicher Überlegung kam ich zu dem Schluss, dass ich einen Mailserver benötige, welcher an mich adressierte E-Mails annimmt und an meinen Server weiterleitet, sobald dieser wieder funktioniert. In diesem Artikel halte ich die Umsetzung fest.

Bei der Recherche im Internet habe ich auf HowtoForge[5. HowtoForge – Linux Anleitungen] eine sehr schöne Anleitung[6. HowtoForge Anleitung: Postfix als Backup MX einrichten] gefunden, die beschreibt, wie man Postfix als Backup MX einrichten kann. Diese Anleitung passt perfekt zu meinem Setup, da ich neben meinem eigentlichen Mailserver noch Zugriff auf einen weiteren Server habe, auf dem bereits ein Postfix installiert ist und Mails für weitere Domains entgegen nimmt und verwaltet. Für abweichende Setups ist diese Anleitung unter Umständen nicht geeignet.

HowtoForge Anleitung: Postfix als Backup MX einrichten

Einrichtung und Testlauf auf meinen Systemen sind inzwischen abgeschlossen und ich freue mich über meinen Backup-MX.

Aufgabenplaner und Notizen für die eigene Cloud

An dieser Stelle möchte ich zwei nützliche Erweiterungen (Apps) für ownCloud vorstellen und aufzeigen, wo sich weitere Informationen dazu finden lassen.

Aufgabenplaner

Tasks[1. Tasks 0.7.1 – ownCloud Productivity] ist eine App zur Aufgabenplanung für ownCloud.

Tasks Ansicht
Bildquelle: https://apps.owncloud.com/CONTENT/content-pre1/164356-1.png

Die Aufgabenplanung wird mit Hilfe von CalDAV-Kalendern implementiert. Über das CalDAV-Protokoll können die Aufgabenlisten mit Clients auf diversen Endgeräten synchronisiert werden.

Um meine Aufgabenlisten mit meinem Android-Tablet synchronisieren zu können, habe ich mir auf meinem Tablet das F-Droid-Repository[2. F-Droid – Freie und Open Source Software Repository für Android] eingerichtet und aus diesem die Apps Tasks[3. F-Droid – Tasks] und DAVdroid[4. F-Droid – DAVdroid] [5. DAVdroid – Offizielle Projektseite] installiert. Wichtig dabei ist, dass man die Apps in der angegebenen Reihenfolge installiert, da DAVdroid sonst die Tasks-App nicht findet und die Aufgaben nicht synchronisieren kann.

Mit der App DAVdroid konfiguriert man die Verbindung zur eigenen ownCloud und wählt aus, welche Aufgabenlisten man synchronisieren möchte. Anschließend werden die Aufgabenlisten mit der Tasks-App synchronisiert. Letztere heißt auf eurem Tablet übrigens „Aufgaben“.

Die Implementierung via CalDAV-Kalender bringt noch einen schönen Nebeneffekt mit sich. Ich habe z.B. meine ownCloud Kalender in Thunderbird eingebunden[6. Ein Kalender für die Terminverwaltung]. Da die vorhandenen Kalender für die Aufgabenplanung genutzt werden, erscheinen die geplanten Aufgaben ebenfalls in der Aufgabenansicht in der Thunderbird Erweiterung Lightning.

Für mich persönlich ist dies eine runde Sache. So bin ich in der Lage, meine Aufgaben auf all meinen Geräten synchron zu halten und zu verwalten.

ownNote

ownNote[7. ownNote – Notes Application] ist eine Erweiterung für ownCloud, welche eine Anwendung für Notizen im Stil von Evernote oder Microsoft OneNote bereitstellt.

ownNote - Notes Application
Bildquelle: https://apps.owncloud.com/CONTENT/content-pre1/168512-1.jpg

Die Erweiterung bietet folgende Funktionen:

  • Import aus Evernote und anderen Notizen im HTML-Format
  • Notizen lassen sich nach Gruppen und Kategorien sortieren
  • Notizen werden als HTML-Dateien im Dateisystem gespeichert
  • Vielfältige Formatierungsmöglichkeiten

ownNote - Notes Application
Bildquelle: https://apps.owncloud.com/CONTENT/content-pre2/168512-2.jpg

Auch bei dieser App lassen sich die Notizen mit der dazugehörigen Notiz-App[8. ownNote – Notes for ownCloud] auf einem Android-Gerät synchronisieren.

ownNote - Notes Application
Bildquelle: https://apps.owncloud.com/CONTENT/content-pre3/168512-3.jpg

Fazit

Mit diesen zwei Apps habe ich zwei weitere Funktionen in der eigenen Cloud nachgerüstet und damit die Kontrolle über die darin gespeicherten Daten zurückgewonnen. Vielen Dank den Entwicklern dieser ausgezeichneten ownCloud Apps.

Aktualisierung von Roundcube

In diesem Artikel dokumentiere ich, wie ich Roundcube[1. Wikipedia (de) – Roundcube] auf meinem Mailserver aktualisiert habe. Dabei habe ich mich an die englischsprachige Dokumentation gehalten.[2. Upgrading Roundcube]

Backup, Backup, Backup!

Diese Überschrift habe ich direkt aus der Dokumentation übernommen. Bevor man Änderungen am System durchführt, ist die Anfertigung einer Datensicherung Pflicht. Der Test, ob man diese auch wiederherstellen kann, ist die Kür.

Im Fall von Roundcube sind das Roundcube-Verzeichnis und die Datenbank inkl. Datenbank-Schema zu sichern. Dies kann mit den Werkzeugen tar und mysqldump erledigt werden:

tar cjf ~/roundcube.tar.bz2 "Pfad-zur-Roundcube-Installation"/*

mysqldump -u root -p "Roundcube-Datenbank-Name"> roundcubedb.sql

Damit lässt sich der Status Quo wiederherstellen, sollte beim Upgrade etwas schief gehen.

Upgrade auf der Konsole

Ich beschreibe in diesem Artikel nur das Upgrade auf der Konsole, da dies mein bevorzugter Upgrade-Pfad ist.

Man lädt die aktuelle Version von http://www.roundcube.net/download in ein lokales Verzeichnis herunter und entpackt diese mit tar. Anschließend kann man das Upgrade mit dem Skript installto.sh im eigenen Roundcube-Verzeichnis installieren.

cd "Entpacktes-Roundcube-Verzeichnis"
sudo ./bin/installto.sh <Pfad-zur-Roundcube-Installation>

Das Skript kopiert die Dateien in das Verzeichnis eurer Roundcube-Installation und führt das Upgrade durch. Damit ist die Installation wieder up-to-date.

F-Droid – Freie und Open Source Software Repository für Android

F-Droid stellt ein Repository bereit, über welches Freie und Open Source Software (FOSS) für das Betriebssystem Android bezogen werden kann.

Damit stellt das F-Droid-Repository eine Alternative bzw. Ergänzung zum Google Play-Store dar. Um die Gründe zu erläutern, die für eine Nutzung von F-Droid sprechen, möchte ich Finn Christiansen zitieren:

1. Man hat kein Google Konto, kann also den Play Store nicht nutzen, möchte aber trotzdem komfortabel Apps installieren und verwalten. (Wie in meinem Fall)
2. Man hat ein Google Konto, nutzt den Play Store, möchte aber einige Apps lieber aus dem F-Droid Repository installieren (Misstrauen gegenüber dem Play Store / keine Kosten in F-Droid)

Finn hat in seinem Artikel „Das F-Droid-Repository für Android installieren“ sehr schön beschrieben, wie man das F-Droid-Repository unter seinem Android-Gerät einrichten und nutzen kann. Leider führt der Link zu Finns Anleitung heute ins Leere. Doch lässt sich F-Droid heute auch ganz einfach, ohne gesonderte Anleitung, einrichten.

Ich möchte noch eine Empfehlung zum Schutz eures Android-Gerätes beifügen. Man muss die Installation aus Quellen unbekannter Herkunft erlauben, um F-Droid bzw. Apps aus dem F-Droid-Repository installieren zu können. Dies stellt ein Sicherheitsrisiko für euer Gerät dar. Mit dieser Einstellung kann es passieren, dass Apps oder Webseiten ohne euer Wissen Schadprogramme auf eurem Gerät installieren. Doch durch die Deaktivierung dieser Funktion nach Installation von F-Droid und der gewünschten Apps lässt sich dieses Risiko zum Glück sehr einfach minimieren.

Während der normalen Nutzung bleibt damit die Installation aus Quellen unbekannter Herkunft untersagt. Diese Option aktiviere ich nur direkt vor der Installation einer neuen App aus dem F-Droid-Repository und deaktiviere sie anschließend wieder. Die bereits installierten Apps lassen sich anschließend problemlos weiterverwenden.

Als ich diesen Artikel 2015 geschrieben habe, konnte man die Installation aus unbekannten Quellen nur global für das gesamte Gerät aktivieren. Heute ist es auf den meisten Android-Geräten möglich, diese Berechtigung für einzelne Apps zu aktivieren. Wem das oben beschriebene Prozedere zu mühsam ist, kann so z.B. ausschließlich der App „F-Droid“ die Installation aus unbekannten Quellen erlauben. Damit ist sichergestellt, dass andere Apps nicht einfach etwas nachinstallieren dürfen.

Neugierig geworden? Probiert es aus. Es tut nicht weh. Mich hat F-Droid in den vergangenen Tagen überzeugt.

ownCloud’s Federated Cloud kurz erklärt

Federated Cloud Sharing[1. Federated Cloud Sharing – Share across ownClouds!] ist eine Funktion von ownCloud. Mit dieser Funktion ist es möglich, Dateien und Verzeichnisse der eigenen ownCloud mit anderen ownClouds zu teilen.

Dies ist angeblich so einfach wie eine E-Mail zu schreiben. Man nutzt dazu die sogenannte Federated Cloud ID. Diese entspricht dem Muster username@example.com/owncloud.

Bildquelle: https://owncloud.org/federation/
Bildquelle: https://owncloud.org/federation/

Die Dokumentation[2. Using Federated Cloud Sharing] erklärt, wie es funktioniert. Dies möchte ich hier kurz wiedergeben.

Bei den zu teilenden Dateien bzw. Verzeichnissen klickt man auf das Icon zum Teilen des Elements und trägt die Federated Cloud ID der Ziel-ownCloud ein. Also z.B. username@example.com/owncloud. Wenn der eigene ownCloud-Server erfolgreich eine Verbindung zum Zielserver aufbauen kann, wird die Berechtigung in der eigenen ownCloud gespeichert.

Die empfangende ownCloud zeigt dem Benutzer einen Hinweis, den der Benutzer bestätigen muss, um die Freigabe seiner ownCloud hinzuzufügen.

Bildquelle: https://doc.owncloud.org/server/8.0/user_manual/files/federated_cloud_sharing.html
Bildquelle: https://doc.owncloud.org/server/8.0/user_manual/files/federated_cloud_sharing.html

Damit ist auch schon alles getan. Die geteilte Datei bzw. das geteilte Verzeichnis erscheint nun in der ownCloud des Empfängers. Ich würde sagen, dies ist wirklich so einfach wie E-Mail.

How to shut Windows 10 up!

Microsoft Windows wird spätestens seit der Version XP vorgeworfen, dass es ohne Wissen des Anwenders nach Hause telefoniert. Häufig erfährt der Benutzer davon wenig bis gar nichts. Auch Windows 10 steht wieder in der Kritik, automatisiert Daten zu sammeln und diese an die Zentrale in Redmond zu senden. Um Windows dieses schlechte Benehmen abzugewöhnen, gibt es seit jeher Software-Tools, die den Anwender dabei unterstützen, all die Stellen zu finden, an denen man Windows das heimliche Ausplaudern von Nutzungsinformationen abgewöhnen kann.

In diesem Artikel werfe ich einen Blick auf die Freeware O&O ShutUp10. Die Software verspricht dem Anwender, die Kontrolle darüber zurückzugewinnen, welche Daten Windows sammelt und weitergibt. Diese Software ist für Privatanwender kostenlos erhältlich. Man muss sich dafür nicht einmal registrieren und seine persönlichen Daten preisgeben. Die Software muss auch nicht auf dem System installiert werden. Sie kann direkt ausgeführt werden, um Windows 10 eine zu freigiebige Plauderei abzugewöhnen. [1. O&O ShutUp10]

Als Nutzer von Windows 10 wird man in den meisten Fällen nicht wissen, welche Informationen das Betriebssystem sammelt und an wen es diese Informationen weitergibt. Das macht es jedoch auch schwierig zu kontrollieren, ob eine Software wie O&O ShutUp10 überhaupt etwas bewirkt. Um zu beurteilen, ob O&O ShutUp10 das Betriebssystem wirklich zur mehr Zurückhaltung zwingt, führe ich folgenden Test durch.

Ich installiere ein Windows 10 in einer virtuellen Umgebung und analysiere den Netzwerkverkehr mit Wireshark.[2. Wikipedia (de) – Wireshark] Dabei werde ich analysieren, zu welchen IP-Adressen sich Windows 10 nach der Installation verbindet und Daten austauscht. Der Theorie nach sollte sich das Betriebssystem mit weniger Ziel-IP-Adressen verbinden, nachdem es mit O&O ShutUp10 konfiguriert wurde. Daher werde ich den Netzwerkverkehr nach der erfolgten Konfiguration mit O&O ShutUp10 erneut analysieren. Anschließend werde ich einen kurzen Vergleich durchführen, ob die Anzahl der IP-Adressen, zu denen sich Windows 10 verbindet, verändert hat.

Installationsumgebung

Die Installation von Windows 10 erfolgt in einer virtuellen Umgebung. Dazu wird Windows 10 als Gast-Betriebssystem in VirtualBox 5.0 installiert. Der virtuellen Maschine wurden 2 vCPU, 2 GB RAM und 40 GB HDD zugewiesen. Zur Installation wurde Windows 10 Education N ausgewählt. Dabei handelt es sich um eine Edition, die vom Funktionsumfang Windows 10 Enterprise entspricht. Sie ist für Schulen und Universitäten gedacht und wird über das Academic Volume Licensing Programm ausgeliefert. Das „N“ bedeutet, dass diese Version nicht mit dem Windows Media Player ausgeliefert wird. [3. Wikipedia (en): Windows 10 Editions]

Die Installation kann ohne eine aktive Netzwerkverbindung durchgeführt werden. Da vermutlich die meisten Anwender keine Änderungen während der Installation vornehmen, wähle ich in diesem Fall die „Express-Einstellungen“. Nach Abschluss der Installation werden noch die VirtualBox Guest Additions[4. VirtualBox Guest Additions] installiert.

Untersuchung des Netzwerkverkehrs

Um den Netzwerkverkehr der virtuellen Maschine untersuchen zu können, wird VirtualBox verwendet.[5. VirtualBox VBoxManage Network Settings] [6. Network Lab – VirtualBox]

Windows 10 kurz nach der Installation

Nachdem die Installation von Windows 10 abgeschlossen war, habe ich das System neugestartet und für 15 Minuten den Netzwerkverkehr aufgezeichnet. Bei der anschließenden Analyse habe ich folgende IP-Adressen gefunden, zu denen sich Windows 10 verbindet:

  1. 131.253.61.80
  2. 134.170.58.190
  3. 184.31.86.159
  4. 191.232.139.253
  5. 191.232.139.254
  6. 191.232.80.60
  7. 191.237.208.126
  8. 204.79.197.200
  9. 207.46.101.29
  10. 207.46.7.252
  11. 212.201.100.135
  12. 23.57.28.45
  13. 65.55.252.43
  14. 65.55.54.41
  15. 65.55.54.43

Noch einmal zum Verständnis. Ich habe nicht mit dem System gearbeitet. Ich habe das System lediglich hochgefahren und mich angemeldet. Ohne weitere Aktion seitens des Benutzers hat sich Windows 10 zu insgesamt 15 IP-Adressen verbunden und Daten gesendet bzw. empfangen. Dabei war nicht durchgängig ersichtlich, um welche Daten es sich dabei handelt. Die Tabelle erhebt keinen Anspruch auf Vollständigkeit. Der Messzeitraum betrug nur 15 Minuten. Zum Vergleich, im gleichen Zeitraum baute ein Ubuntu 14.04 lediglich zu drei IP-Adressen Verbindungen auf, um die Uhrzeit zu synchronisieren.

Windows 10 mit ShutUp10!

O&O ShutUp10! kann ohne Registrierung einfach von der Website des Herstellers heruntergeladen werden. Es muss nicht installiert werden. Man entpackt lediglich das Zip-Archiv und startet die darin befindliche EXE-Datei als Administrator. Der Rest des Programms ist selbsterklärend. Bevor Änderungen am System vorgenommen werden, fragt das Programm nach, ob man einen Wiederherstellungspunkt erstellen möchte. Dies ist sehr zu empfehlen. So können die gemachten Einstellungen in jedem Fall rückgängig gemacht werden.

Der Einfachheit halber habe ich die vom Programm empfohlenen Änderungen vorgenommen. Anschließend habe ich erneut für 15 Minuten den Netzwerkverkehr mit Wireshark analysiert. Das Ergebnis ist etwas ernüchternd. Denn Windows 10 kommuniziert im Messzeitraum weiterhin mit immerhin 12 IP-Adressen. Ich habe doch mit deutlich weniger gerechnet.

  1. 137.117.235.16
  2. 184.31.86.159
  3. 191.232.139.253
  4. 204.79.197.200
  5. 207.46.101.29
  6. 207.46.7.252
  7. 212.201.100.135
  8. 23.57.28.45
  9. 64.4.54.22
  10. 65.52.108.33
  11. 65.55.163.222
  12. 65.55.54.43

Fazit

Zusammengefasst muss ich sagen, dass die angewendete Testmethode nicht geeignet ist, um belastbare Schlüsse ziehen zu können. Es kann nicht sichergestellt werden, dass sich das Betriebssystem im jeweiligen Messfenster gleich verhält. Die Ergebnisse sind daher mit Vorsicht zu genießen.

Dennoch kann von „ShutUp!“ nicht die Rede sein. Selbst nach Übernahme der empfohlenen Einstellungen der O&O Software quatscht Windows 10 munter weiter. Verbindungen zu 12 IP-Adressen und keinerlei Information, was das Betriebssystem dort eigentlich tut, sind in meinen Augen zu viel. Man könnte meinen, dass die Software wenig bis gar keine Auswirkung auf das Kommunikationsverhalten des Betriebssystems hat.

Was unternehmt ihr, um Windows 10 die Plauderei abzugewöhnen?