Schlagwort-Archiv: Planet

Tag für den Ubuntuusers.de Planeten.

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?

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.

vlc-logo

Einzelne Bilder aus Video extrahieren

Dieser Artikel beschreibt, wie man sehr einfach mit Hilfe eines kostenlos erhältlichen Programms einzelne Bilder aus einem Video extrahieren kann.

Diese Anforderung entstand, nachdem ich ein Gewitter mit meiner Digitalkamera gefilmt habe und anschließend einzelne Bilder herausschneiden wollte.

Sehr einfach lässt sich diese Aufgabe mit der freien, quelloffenen und kostenlosen Software „VLC media player“ erledigen. VLC ist sowohl für Ubuntu-Linux als auch für Windows erhältlich. Unter Ubuntu kann das Programm einfach aus den offiziellen Paketquellen installiert werden:

sudo apt-get install vlc

Für Windows kann man sich das Programm von der offiziellen Website herunterladen.

Hat man das Programm gestartet, kann man unter Werkzeuge -> Einstellungen -> Video konfigurieren, in welchem Pfad und mit welchem Präfix die zukünftigen Schnappschüsse gespeichert werden sollen.

vlc-settings

Werkzeuge -> Einstellungen -> Video

Um Schnappschüsse aus dem Video erstellen zu können, muss noch die „Erweiterte Steuerung“ aktiviert werden. Dies erledigt man unter Ansicht -> Erweiterte Steuerung. Nun erhält man vier neue Buttons. Die wichtigsten sind dabei das kleine Kamera- und das Film-Symbol. Diese sind auf dem folgenden Screenshot gelb hinterlegt.

vlc-enhanced-control

VLC Erweiterte Steuerung

Kommt man in dem Video zu einer Stelle, von der man gern ein Bild erstellen möchte, so pausiert man das Video und erstellt mit der Kamera-Schaltfläche einen Schnappschuss. Dieser wird in dem konfigurierten Pfad abgespeichert. Mit Hilfe der Film-Schaltfläche kann man in dem Video Frame für Frame vorwärts gehen. So ist es möglich, jedes Einzelbild des Videos zu betrachten, um von den schönsten Stellen einen Schnappschuss erstellen zu können.

Statt ständig die Maus schubsen zu müssen, können die oben beschriebenen Schritte auch mit den folgenden Tastenkombinationen ausgeführt werden:

  • Video pausieren/fortsetzen -> Leertaste
  • Schnappschuss erstellen -> Umschalt+s
  • Frame für Frame vorwärts -> e

Das war auch schon alles. Einfach, praktisch, gut!

Standardgateway mit dem Linux-Kommando „route“ hinzufügen

Im Mai brachte mir ein DSM-Update auf meiner Synology Diskstation DS213air einigen Ärger ein. Nach dem Update fehlte meiner Diskstation das Standardgateway, so dass diese ihren Weg in das Internet nicht mehr finden konnte. Zum Glück lässt sich das Standardgateway mit dem folgenden Befehl schnell und einfach zur Routingtabelle hinzufügen. Und dies funktioniert nicht nur auf der Diskstation, sondern prinzipiell unter jedem Linux-Betriebssystem.

Auf der Diskstation muss man sich zuerst via SSH als root anmelden. Anschließend wir das Standardgateway wie folgt wieder hinzugefügt:

route add default gw IP-ADRESSE SCHNITTSTELLE

In meinem Fall wurde als Schnittstelle das Interface „wlan0“ verwendet. Der Befehl sieht dann konkret wie folgt aus:

route add default gw 192.168.178.188 wlan0

Leider verliert die Diskstation das Standardgateway bei jedem Neustart wieder. Ich habe daher auch eine Support-Anfrage an Synology gestellt. Leider verlief die Bearbeitung nicht meinen Wünschen entsprechend. Da ich das Standardgateway nicht nach jedem Neustart manuell hinzufügen möchte, habe ich mir daher etwas anderes einfallen lassen.

Als Workaround dient folgendes Skript. Dieses prüft, ob in der Routingtabelle ein Standardgateway vorhanden ist. Fehlt dieses, wird es durch das Skript hinzugefügt. Die IP-Adresse des Standardgateways und die verwendete Schnittstelle können dem Skript dabei über Parameter mitgeteilt werden.

Dieses Skript habe ich auf meiner Diskstation abgelegt. In den Dateieigenschaften habe ich unter „Genehmigungen“ die Berechtigung zum Ausführen der Datei erteilt. Anschließend habe ich das Skript in den Aufgabenplaner eingetragen und lasse es von nun an stündlich ausführen.

Diese Lösung ist nicht schön, aber sie stabilisiert den Betrieb meines NAS. Ich hoffe, mit diesem Beitrag meinen Leidensgenossen helfen zu können, die ebenfalls mit diesem Problem zu kämpfen haben.

Update 2015-07-05T14:05
Da das Skript im Feed nicht mit angezeigt wird, reiche ich hiermit den Link zum Skript auf GitHub nach.