Kategorien
Infrastruktur Security Verschlüsselung

Passworte – Kodiert, Verschlüsselt oder Klartext?

Wenn du ein Passwort eingibst, wirst du oft gefragt, ob du es speichern willst. Wenn du die Frage bestätigst, dann speichert das entsprechende Program, beispielsweise dein FTP Client FileZilla, deine Passworte in einer Konfigurationsdatei auf deinem Computer.
Im Falle von FileZilla sieht dann das Passwort beispielsweise so aus:

MTJqZGh6ZTY1M2dHZnNocw==

Wenn du und ich auf dieses Passwort schauen, können wir es uns nicht einfach so merken und wir werden vermuten, dass dieses Passwort auf irgendeine wundersame Weise verschlüsselt ist.

Wenn du aber mal die Website base64encode.org besuchst und das obige Passwort dort eingibst, siehst du das Original Passwort im Klartext.

Base64 - Format
Base64 – Format

MTJqZGh6ZTY1M2dHZnNocw==  = 12jdhze653gGfshs

FileZilla speichert Passworte also Base64 kodiert ab. Das schützt vor flüchtigen Blicken, es schützt aber NICHT vor Ausspähung. Wer Zugang zur filezilla.xml Konfigurationsdatei hat, hat auch prinzipiell Zugang zu allen FTP-Servern, die dort beschrieben sind.

Ich will FileZilla nicht schlecht reden. Wenn du FileZilla nutzt und deine Passworte nicht abspeicherst, ist ja alles in Ordnung und selbst, wenn du sie abspeicherst, wäre es einfach nur gut zu wissen, wie das passiert. FileZilla ist aber ein gutes Beispiel für den Unterschied zwischen Kodieren und Verschlüsseln auf den auch ich hereingefallen bin (siehe dazu auch Seafolly zieht um).

Wenn etwas kodiert wird, kann es auch immer dekodiert werden. Die Base64 Kodierung wurde beispielsweise erfunden, um Binärdaten (z. B. ausführbare Programme, ZIP-Dateien oder Bilder) in eine Zeichenfolge aus lesbaren, einfachen ASCII-Zeichen umzuwandeln um sie dann an eine E-Mail anhängen zu können! Der Empfänger der E-Mail soll die kodierten Dateien dann einfach wieder dekodieren können. Das eigentliche Problem dahinter war, dass E-Mail in 7-bit langen Code verfasst wurden und Binärdaten in 8-bit langen Code. In Binärdaten gab es einfach mehr unterschiedliche Zeichen und es konnte ein Zeichen enthalten sein, das die Übermittlung von E-Mails durcheinander bringt.
Die Idee der Kodierung stammt aus dem Jahr 1969 (ASCII format for Network Interchange).

Wie speichert man nun Passworte?

Ein Passwort ist nur sinnvoll, solange es geheim bleibt. Wenn es irgendwo abgespeichert wird und aus den gespeicherten Zeichen das Passwort ermittelt werden kann, ist das nicht sinnvoll. Daher sollte für Passworte ein Verfahren verwendet werden, das nur in eine Richtung funktioniert. Die Lösung ist eine kryptologischen Hashfunktion. Mit ihr wird aus dem Klartext Passwort immer die gleiche Zeichenkette ermittelt, aus der ermittelten Zeichenkette kann aber nicht auf das Passwort geschlossen werden. Das Programm, dass das Passwort in der konkreten Anwendung dann überprüft, überprüft in Wirklichkeit den Hash-Wert des Passworts (also die errechnete Zeichenfolge) und kennt das Klartext Passwort auch nicht.

Das hört sich erstmal gut an, wurde aber auch nicht speziell für Passworte entwickelt, sondern zunächst für die Integritätsprüfung von Dateien und Nachrichten. Weil das Prinzip aber gut funktioniert, wird es auch für Passworte, Peudo-Zufallsgeneratoren und Blockchiffren verwendet.

Du ahnst es vermutlich schon, auch hier gibt es Schwächen!

Die kryptologische Hashfunktion arbeitet, je nach Konstruktion, mit und ohne Schlüssel, mit algebraischen Verfahren und mit sogenannten Blockchiffren. Um das jetzt mal laienhaft und sicherlich unvollständig zusammenzufassen:

Alles, was vor dem Jahr 2010 entwickelt wurde, ist potentiell unsicher!

Als Beispiel sei das Verfahren MD5 genannt. Passworte in gängigen Content Management Systemen wie WordPress, Joomla und Drupal wurden lange mit diesem Verfahren gespeichert. Im Jahr 2008 gelang ein Man in the Middle Angriff auf MD5 (25C3: Erfolgreicher Angriff auf das SSL-Zertifikatsystem), d.h., das Passwort, oder in diesem Fall, der geheime Schlüssel konnte im Klartext ermittelt werden. Damals, vor 8 Jahren, benötigte man noch die Rechenkraft von 200 in einem Cluster zusammengefassten Sony Playstations. Heute ist das Equipment deutlich schneller geworden und somit ist es auch einfacher dieses Verfahren zu knacken .

Um wieder sicherer zu werden, wurde bei MD5 der sogenannte Salt einführt

Screenshot - http://www.martinstoeckli.ch/hash/de/hash_salt.php
Screenshot – http://www.martinstoeckli.ch/hash/de/hash_salt.php

Nach Salt kam dann Pepper

http://www.martinstoeckli.ch/hash/de/hash_pepper.php
http://www.martinstoeckli.ch/hash/de/hash_pepper.php

So gut gemeint all diese Massnahmen sind, sie führen alle zu einer sehr aufwendigen Implementierung und wo etwas kompliziert wird, werden auch Fehler gemacht. So häufen sich Meldungen von gehackten Firmen, deren Salt „nicht salzig genug war“, beispielsweise Rätselraten um Passwortsicherheit nach Evernote-Hack -7.3.2013.

Die Antwort auf „Salz und Pfeffer“ sind Verfahren, die versuchen, die Dauer des „Entschlüsselns“ zu verlängern. Um den Faktor 1000 gelingt das beispielsweise dem Password-Based Key Derivation Function 2 (PBKDF2) Verfahren aus dem Jahr 2010. Es wird zum Beispiel in einem WLAN als WPA-PSK-Schlüssel verwendet und gilt als sicher … aber

PBKDF2 gilt als anfällig für Angriffe mit spezieller Hardware wie Grafikprozessoren, Field Programmable Gate Arrays und anwendungsspezifischen integrierten Schaltungen (Wikipedia)

Ein Nachfolger ist auch schon ausgemacht. Mit Argon2 wird alles besser …
Spätestens an dieser Stelle lässt vermutlich deine Aufmerksamkeit nach und du denkst

Oh, oh, wo soll das nur hinführen?

Offensichtlich ist es so, dass der, der die meiste Rechenkraft hat, auch ein Password im Klartext lesen kann. Es dauert halt …

Gesetze

Manchmal ist es übrigens einfacher nach dem Passwort mehr oder weniger freundlich zu fragen oder ein Gesetz zu erlassen, dass man das Passwort (oder einen persönlichen Schlüssel) unter bestimmten Umständen den Behörden übergeben muss (Key disclosure law).

Der Markt regelt alles

Auch die Firma Apple hatte neulich so ein Problem. Das FBI wollte eine Möglichkeit haben, iPhones entsperren lassen und Apple wollte das nicht. Also bezahlte das FBI einen Dienstleister und verschaffte sich selbst Zugang (FBI knackt iPhone ohne Apple). Der Handel mit Sicherheitslücken ist mitlerweile ein Geschäft wie jedes andere von Firmen wie Vupen, Hacking Team, Zerodium und vielen anderen, teilweise sogar mit Erfolgsgarantie.

Und FileZilla?

Wenn du die Passworte nicht in FileZilla speicherst, sondern einen Passwort Manager wie KeePass nutzt, ist die Ausspähung deiner Passworte schon viel komplizierter.

Fazit

Mit dem entsprechenden Equipment oder Budget kann jedes Passwort ermittelt werden. Du hast es jedoch selbst in der Hand wie teuer es für einen Angreifer wird!


tl;dr: Das sichere Abspeichern eines Passworts ist kompliziert aber nicht hoffnungslos

Kategorien
Betriebssysteme Infrastruktur Server

Serveradministration mit Webmin

Als NOVATREND Kunde kennst du das professionelle Paket cPanel von unseren Webhostings. In deiner persönlichen cPanel Installation bei NOVATREND ist alles individuell für dich eingerichtet und mit zahlreichen sinnvollen Zusatzfeatures kombiniert. Per Mausklick kannst du bequem dein Webhosting verwalten und wir sorgen im Hintergrund dafür, dass alles reibungslos funktioniert.

Wenn du einen dedizierten Server betreibst, aber kein cPanel benutzen möchtest, bietet sich Webmin an.

Webmin ist ein Open Source Projekt. Du kannst es auf deinem Server als Browser basierte Administrationsumgebung installieren. Diesen Verwendungszweck drückt auch bereits der Name des Projekts aus:
Web von World Wide Web und min von Administrator.

Wenn du Webmin nutzt, bist du natürlich immer noch dein eigener Administrator und musst dich eingehend mit dem Betriebssystem deines Servers und den Fähigkeiten und Hilfestellungen von Webmin beschäftigen. Aus diesem Grunde führt kein Weg an der offiziellen Webmin Dokumentation vorbei. Du findest sie auf http://doxfer.webmin.com/. Im besten Fall bist du in der Lage, alles was du mit Webmin machen kannst auch per Hand auf der Konsole zu erledigen. Webmin hilft dir, deinen Administrationsaufwand erheblich zu verkürzen. Für dich ist das eher ein „nice to have“ Feature, denn dir steht der User root und die Konsole zur Verfügung. Für deine Kunden und/oder Mitbenutzer des Servers ist es jedoch oft die einzige Art und Weise ihren Bereich des Servers verwalten zu können und somit ein „must have“.

Das Paket Webmin ist die Basisversion des Systems und hilft dir als Administrator eines Servers diesen zu verwalten. Wenn du den Nutzern auf deinem Server Administrationsmöglichkeiten geben willst, benötigst du zusätzlich das Paket Usermin.

Wenn du deinen Server als Shared Hosting Server aufbauen willst, benötigst du Virtualmin und/oder Cloudmin. Von Virtualmin und Cloudmin  gibt es jeweils eine freie Open Source Variante und eine Pro Version, für die Lizenzgebühren fällig werden. Die Pro Version entspricht dem Leistungsumfang von cPanel.

Nichtsdestotrotz ist es auch mit den kostenlosen Varianten möglich einen Server einfach zu verwalten.

Installation Webmin

Mein Testserver läuft mit Ubuntu 14.04. Um Webmin mittels Paketmanager installieren zu können, müssen die Installationsquellen angepasst werden, ein GPG Key geladen, die Installationsquellen aktualisiert und schließlich Webmin installiert werden.

Hier sind die notwendigen Befehle:

sudo sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install webmin

Webmin läuft danach mit einem selbst unterschriebenen Zertifikat auf Port 10,000. In meinem Fall also https://serverblogger.ch:10000. In allen Browsern erscheint eine entsprechende Zertifikatswarnung und du musst bestätigen, dass du wirklich auf die Seite zugreifen willst.

Webmin Anmeldung
Webmin Anmeldung

Nach der Anmeldung meldet sich Webmin mit den Systeminformationen

Webmin - Systeminformationen
Webmin – Systeminformationen

An dieser Stelle kann die eigentliche Arbeit beginnen. Abhängig vom Zweck des Servers können nun Programmpakete, wie beispielsweise ein LAMP Stack installiert und konfiguriert werden.

Usermin

Usermin ist ein Modul in Webmin. In der linken Seitenleiste gibt es dazu den Link un-used Modules – Usermin. Die Konfiguration wird angezeigt, aber es erscheint ein Hinweis, dass das Paket noch nicht installiert ist.

Webmin - Installation Usermin
Webmin – Installation Usermin

Ich installiere Usermin über die Paketverwaltung

sudo apt-get install usermin

Nach der Installation ist Usermin bereit!

Usermin Konfiguration
Usermin Konfiguration

Nun ist alles vorhanden, um Services, die du auf deinem Server anbietest, deinen Kunden zur Verfügung zu stellen.

Tip: Spätestens an dieser Stelle solltest du dich über die Konzepte und die Architektur von Webmin intensiver informieren. Einen guten (und freien) Einstieg in deutscher Sprache bietet nach wie vor das Webmin Kapitel des Debian Anwenderhandbuchs (Webbasierte Administration mit Webmin). Das Buch ist aus dem Jahr 2003 und Webmin war damals noch nicht so weit entwickelt wie heute. Die Grundkonzepte sind jedoch nach wie vor gültig.

Fazit

Webmin funktioniert einwandfrei und erleichtert tägliche Konfigurationsarbeiten an einem Server. Die Einrichtung der angebotenen Services für den Mehrbenutzerbetrieb setzt allerdings know how außerhalb von Webmin voraus.

Links


tl;dr: Mit Webmin es ist möglich, allen Benutzern eines dedizierten Servers eine Browser basierte Administration zur Verfügung zu stellen.

Kategorien
Allgemein Infrastruktur

Ein schnelles Web mit Instant Articles, der News App und Accelerated Mobile Pages?

Natürlich mag ich elegante Websites.
Natürlich betrachte ich gern gute Fotos und interessante Videos und lese gern gute Geschichten.
Ich mag auch elegante Autos, extravagante Kunst, Drei-Sterne Restaurants und sündhaft teure Modekreationen.

Den Grossteil meiner Zeit verbringe ich jedoch damit, mein Leben möglichst effektiv zu organisieren. Beim Online Einkauf mag ich einfache, logische Checkouts und verständliche Artikelbeschreibungen, Blogeinträge möchte ich einfach nur lesen und kein Brimborium drumherum haben. Wenn ich eine Website besuche, möchte ich meist ein Bedürfnis befriedigen oder ein Problem lösen, beispielsweise die Postadresse des Seitenbetreibers finden.

All das wird heutzutage unter dem Begriff User Experience subsumiert und diese Experience ist überlebenswichtig für Website Anbieter.

Was ich auf meinem Telefon nicht lesen kann, lese ich vermutlich nie.

Auch im Jahr 2016 ist schnelles mobiles Internet kein Standard. Ausser Chatten geht in vielen Gegenden Europas nichts, weil die Internet Verbindung einfach zu langsam ist. Ein Grund, warum Messaging Apps so beliebt sind.

Nun gibt es grundsätzlich immer zwei Möglichkeiten so ein Problem zu lösen.

  1. Schnelles Internet bereit stellen
  2. Die Informationen so aufbereiten, dass sie auch mit langsamer Internetverbindung aufrufbar sind.

Als Website Betreiber, der ich ja auch bin, kann ich den ersten Punkt nicht umsetzen, also bleibt mir nur die zweite Variante. Auch dort gibt es zwei Möglichkeiten:

  1. Eine „echte, aufwendige, bunte, schöne, durchgestylte“ Website und eine „abgespeckte“ mobile Variante
  2. Eine Website für alle, die sich an das Ausgabegerät anpasst (responsiv)

Die zweite Variante klingt auf jeden Fall zukunftssicherer bei der Vielfalt von mobilen Endgeräten die bereits existieren oder demnächst auf den Markt kommen. Content Management Systeme wie WordPress, Joomla und Drupal sind mittlerweile standardmässig responsiv. Unglücklicherweise steigt aber damit auch die Ladezeit einer Website, also die zu übermittelnde Datenmenge und die Anzahl der zu übertragenden Dateien an.
Beide Effekte verlangsamen den Transport und Aufbau eine Website auf einem Telefon ungemein.

Um diesen Tweet lesen zu können, werden im Browser 470,7 Kilobyte übertragen (470,700 Byte). Der relevante Text besteht bei einem Tweet aus maximal 140 Zeichen. Ein Zeichen könnte man in einem Byte darstellen, maximal in 2 Bytes. Es werden also etwa 1,650 oder 3,300 mal soviele Bytes übertragen um 140 Zeichen (in 1 oder 2 Bytes) darzustellen und das in 30 Dateien!

Datenmenge eines Tweets im Browser

Nun ist das kein spezifische Problem von Twitter sondern betrifft mehr oder weniger jede Website.

Ein paar Beispiele:

Selbst die Startseite unseres Blogs bringt es auf 247,800 Byte und 23 Dateien. Ich habe aber auch gelernt, dass wir damit im Vergleich zu anderen Websites recht niedrig liegen 🙂

Werbung

Ein immer grösser werdender Posten bei den Ladezeiten sind datenintensive Werbeformen und Tracking Scripte. Ein sehr eindruckvoller Vergleich der Ladezeiten von Werbe- und redaktionellen Inhalten hat die New York Times für die USA dargestellt (The Cost of Mobile Ads on 50 News Websites – New York Times).

The Cost of Mobile Ads on 50 News Websites - New York Times

Was tun?

Was kann der Einzelne jetzt tun, um Websites schlanker zu machen? Einen besonders konsequenten Schritt geht Felix von Leitner mit seinem Angebot Fefes Blog (Wikipedia). Er verzichtet auf alles unnötige, nutzt HTML und schafft es, alle Artikel für den Monat Februar in 19,300 Bytes darzustellen – in EINER Datei!
Auch die Ladezeit dürfte der Beliebheit seines Blogs sehr gut tun.

Fefes Blog

Jetzt kommst du und sagst:

Ja, ja, das ist Fefe mit seinem Textblog, aber ich brauche doch Photos und Videos und Slider und JavaScript Frameworks …

Was machen die Grossen?

Die Diskussion entging den „üblichen Verdächtigen“ natürlich nicht und so erfand Facebook das Produkt Instant Articles, Apple die App News und Google schliesslich Accelerated Mobile Pages.

Facebook Instant Articles

Instant Articles werden sehr schnell dargestellt, sollen Verlage zu Facebook locken und Besucher auf der eigenen Plattform halten. Die Werbeeinnahmen von Facebook werden im Verhältnis 30/70 geteilt, 70% gehen an den Content Lieferanten.

[youtube https://www.youtube.com/watch?v=T8itWEQowhA]

Apple News App

Apple News ist eine News App, die momentan in UK, USA und Australien angeboten wird und ähnlich wie Flipboard ein persönliches Nachrichten-Feed anbietet das schnell läd und schön aussieht.

[youtube https://www.youtube.com/watch?v=sfrnNBG28DE]

Google Accelerated Mobile Pages

Und jetzt kommt Google und erfindet mit dem Open Source Projekt AMP das einfache Web mehr oder weniger neu.

[youtube https://www.youtube.com/watch?v=WrpkFROqR0Q]

Auf Github findet sich der Quellcode (https://github.com/ampproject) und damit möchte Google das Web „great again“ machen.

Um ein Facebook Instant Article Publisher zu werden, muss man sich bewerben.
Um in die Apple News App zu kommen, muss man sich ebenfalls bewerben.

Google dagegen kommt zu dir und sieht nach, ob du eine AMP Version deiner Website betreibst. Wenn ja, wirst du in den Suchergebnissen bevorzugt behandelt. Wenn nein … tja … dann eben nicht!

Ich will nun gar nicht über Themen wie Plattformen, Marktmacht, Verlage und Inhalte sprechen, ich finde die Angebote der grossen Drei durchaus interessant. Sie erfinden gerade etwas neu, was es eigentlich schon gibt – HTML!
Sie erfinden es aber so, dass meine Bedürfnisse von oben vermutlich perfekt erfüllt werden.

AMP und deine Website

Da Facebook Instant Articles und die Apple News App für einfache Website Betreiber zunächst noch eher uninteressant sind, will ich etwas genauer auf Googles AMP Projekt eingehen. Das AMP Prinzip entspicht der bereits oben aufgeführten Problemlösung: Eine „echte, aufwendige, bunte, schöne, durchgestylte“ Website und eine „abgespeckte“ mobile Variante“, wobei die AMP Version die mobile Variante ist. Die AMP Version deiner Seite wird dem Besucher allerdings nicht automatisch auf dem Mobilgerät angezeigt, sie wird „nur“ über sogenannte AMP consumers genutzt, beispielsweise Google Search.

  • WordPress:
    WordPress bietet ein offizielles AMP Plugin an. Es erzeugt dynamisch AMP-kompatible Versionen deiner Seiten, die über den Zusatz /amp/ am Ende des URL aufrufbar sind. Wenn du beispielsweise einen WordPress Artikel mit der dem URL http://example.com/2016/02/29/mein-artikel/ hast, dann wird die AMP Version über http://example.com/2016/02/29/mein-artikel/amp/ aufgerufen. AMP-Aufrufe von Seiten (Pages) werden momentan nicht unterstützt.
  • Joomla:
    Es lässt sich momentan (29.2.2016) nichts im Extension Directory finden, aber hinter den Kulissen schreiben viele Anbieter Plugins für AMP. Hier ein Beispiel: Weeblr – Accelerated Mobile Pages for Joomla
  • Drupal:
    Das Drupal Modul AMP ist für die Drupal 8 als Beta Version verfügbar. Damit es funktioniert, wird die PHP AMP Library benötigt und das AMP Basis Theme. Die Installation beschreibt der Artikel AMPing up Drupal sehr gut. Für Drupal 7 liegt das Modul leider noch nicht vor und so muss ich unser Blog entweder auf Drupal 8 updaten oder auf das entsprechende Modul für Drupal 7 warten.

Fazit

Ein deutliches hmmmm :).
Ich weiss noch nicht so recht, was ich davon halten soll. Grundsätzlich sind alle drei Ideen gut durchdacht. Sie dienen aber vermutlich hauptsächlich dazu, Besucher auf der jeweiligen Plattform zu halten, weil die dort angebotenen Inhalte so schön und schnell laden. Facebook und Google können dann prinzipiell mehr Werbung verkaufen, im Falle von Facebook werden die Erlöse mit dem Inhaltsanbieter geteilt.
Bei aller Schönheit und Schnelligkeit darf man nicht vergessen, dass HTML diese Funktionalität bereits heute sehr effizient bietet. Bei Websites wie Fefes Blog beispielsweise würde eine Technik wie AMP die Grösse nur unnötig aufblähen und die Ladezeiten vergrössern.


tl;dr: Das schnelle Web wird gerade jeweils von Facebook, Apple und Google neu erfunden.

Kategorien
Infrastruktur Performance Webserver

Schnellere Antwortzeiten mit dem LiteSpeed Web Server

In den Monaten November und Dezember 2015 haben wir die Auslieferung der Websites für alle Webhostings bei Novatrend deutlich beschleunigt. Möglich wurde das durch die Nutzung eines anderen Web Servers. Vor November 2015 nutzten wir ausschliesslich den Apache HTTP Server. Nach und nach haben wir dann alle Web Hostings mit dem LiteSpeed Web Server versehen.

Gemäss w3techs.com wird LiteSpeed von mehr als 2 Prozent aller Websites weltweit genutzt, Tendenz steigend (http://w3techs.com/technologies/overview/web_server/all).

Usage of web servers for websites
Usage of web servers for websites

Mit Hilfe von Services wie site24x7.com kann man Antwortzeiten von Websites messen. Unser Kunde Adi Heutschi hat das für seine beiden Sites arbeitsrentner.ch und adiheutschi.ch mal genauer untersucht. Im Zeitraum der Untersuchung hat er seine Sites auf SSL umgestellt und wir haben den Web Server ausgetauscht. Alle Screenshots sind von Adi Heutschi erstellt worden.

Website – adiheutschi.ch

Die Website nutzt Joomla und läuft mit dem Apache HTTP Server. Am 18.11.2015 erhält Sie ein SSL/TLS Zertifikat und die Antwortzeiten werden größer. Hier ein Screenshot vom 19.11.2015.

adiheutschi.ch - SSL-Aktivierung/Apache
adiheutschi.ch – SSL-Aktivierung/Apache

Am 17. Dezember wird der Apache HTTP Server von unserer Seite durch den LiteSpeed Web Server ersetzt. Die Verbesserung der Antwortzeiten ist deutlich zu sehen.

adiheutschi.ch - Umstellung Apache -> LiteSpeed
adiheutschi.ch – Umstellung Apache -> LiteSpeed

Die erste Woche vom 20.12. – 26.12.2015 sieht dann so aus:

adiheutschi.ch - eine Woche - LiteSpeed mit SSL
adiheutschi.ch – eine Woche – LiteSpeed mit SSL

Website – arbeitsrentner.ch

Auch diese Site lief mit Joomla und dem Apache HTTP Server. Hier wurde SSL/TLS am 16.12.2015 um 11:00 Uhr aktiviert. Die Antwortzeiten werden grösser.

arbeitsrentner.ch - SSL-Aktivierung/Apache
arbeitsrentner.ch – SSL-Aktivierung/Apache

Am 17.12.2015, also einen Tag später wurde dann auf den LiteSpeed Server gewechselt. Die Antwortzeiten werden kürzer, es gibt aber vereinzelte Peaks (lange Antwortzeit).

arbeitsrentner.ch - Apache -> LiteSpeed
arbeitsrentner.ch – Apache -> LiteSpeed

Etwas besser kann man beide Effekte in diesem Chart sehen. Es deckt die Woche vom 13.12-19.12.2015 ab. Nach der SSL/TLS Aktivierung wird alles etwas langsamer, nach Einführung von LiteSpeed wieder schneller.

arbeitsrentner.ch - Umstellungszeitraum
arbeitsrentner.ch – Umstellungszeitraum

Wiederum eine Woche, in der Zeit vom 21.12-16.12.2015, später stabilisieren sich die Antwortzeiten im Durchschnitt auf 681 ms.

arbeitsrentner.ch - LiteSpeed Server mit SSL/TLS
arbeitsrentner.ch – LiteSpeed Server mit SSL/TLS
Hier zum Vergleich eine Woche Anfang Dezember (06.12. – 12.12.) mit dem Apache HTTP Server ohne SSL. Im Durchschnitt lagen dort die Antwortzeiten bei 869 ms, mehr als 20 Prozent besser als zuvor.

Fazit

Zunächst sagen die Werte in Millisekunden (ms) wenig über echte Antwortzeiten am Telefon oder dem heimischen PC aus, da diese von sehr vielen Faktoren abhängig sind. Interessant ist aber die sichtbare Beschleunigung nach Einsatz des LiteSpeed Web Servers.
Der Einsatz von SSL/TLS verlangsamt grundsätzlich die Auslieferung von Websites. Der LiteSpeed Web Server kann diesen Unterschied, verglichen mit dem Apache HTTP Server, jedoch mehr als ausgleichen. Durch den Einsatz von HTTP/2 (siehe auch Transportverschlüsselung und HTTP/2 für alle – kostenlos!) und weitere Massnahmen wird die Auslieferung aller Websites massiv beschleunigt. Auf der Benchmark Seite von LiteSpeed kann man das an verschiedenen Szenarien nachvollziehen (Statische Seiten, PHP – Hello World, HTTPS und mehr). Im Screenshot kannst du ein Beispiel für WordPress Sites sehen:

Benchmark - WordPress
Benchmark – WordPress

Es besteht auch die Möglichkeit den LiteSpeed Web Server auf deinem dedizierten Server und beim Cloud Hosting zu nutzen. Hier müssen wir allerdings Lizenzkosten in Höhe vom 50 CHF pro Monat erheben. Für Rückfragen kontaktiere uns einfach per E-Mail.


tl;dr: Durch einen Wechsel der Web Server Software antworten alle von uns gehosteten Websites schneller auf Anfragen

Kategorien
Infrastruktur Security Server

Let’s Encrypt serverblogger.ch

Tadaa, es ist es soweit!

SSL/TLS Zertifikate, die von allen Browsern anerkannt werden, können nun kostenlos erstellt werden. Am 3. Dezember 2015 startete die öffentliche Beta-Phase der Let’s Encrypt Zertifizierungsstelle und in diesem Blogeintrag werde ich ein solches Zertifikat auf unserem Blogserver erzeugen und für die Domain serverblogger.ch einrichten.

Basissystem

Ich nutze einen virtuellen root Server aus dem aktuellen Novatrend Angebot und habe dort Linux Ubuntu 14.04 und einen LAMP Stack installiert. Die Domain serverblogger.ch zeigt auf einen virtuellen Host mit dieser Minimalkonfiguration:

<VirtualHost *:80>
  ServerName serverblogger.ch
  ServerAlias www.serverblogger.ch
  DocumentRoot /var/www/serverblogger.ch/public_html/
</VirtualHost>

Let’s encrypt verspricht eine automatisierte Einrichtung von Konfigurationsdateien des Apache Webservers.

Let’s Encrypt serverblogger.ch

Da das Let’s Encrypt Softwarepaket natürlich noch nicht in den Distributionspaketen von Ubuntu 14.04 vorhanden ist, muss es individuell installiert werden. Die einfachste Variante ist die Installation über Git/GitHub. Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien und GitHub ist ein kommerzieller Dateihoster für Softwareprojekte. Dort hostet auch das Let’s Encrypt Projekt seinen Quellcode (https://github.com/letsencrypt).

Um die Dateien installieren zu können, muss zunächst Git installiert werden

sudo apt-get install git

Danach wird das Let’s Encryt Repository auf GitHub geklont

git clone https://github.com/letsencrypt/letsencrypt

Das sieht dann so aus

Cloning into 'letsencrypt'...
remote: Counting objects: 25238, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 25238 (delta 2), reused 0 (delta 0), pack-reused 25227
Receiving objects: 100% (25238/25238), 6.61 MiB | 4.86 MiB/s, done.
Resolving deltas: 100% (17693/17693), done.
Checking connectivity... done.
novatrend@server1:~$

Das Let’s Encrypt Softwarepaket wurde im Verzeichnis /letsencrypt installiert. Also wechsele ich in das Verzeichnis und rufe das Programm auf

cd letsencrypt

Das folgende Kommando ruft letsencrypt auf

sudo ./letsencrypt-auto

Das Script läd alle notwendigen Bibliotheken, meldet dann aber folgenden Fehler

InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Letsencrypt ist in Python geschrieben und es fehlen offenbar noch ein paar Python Bibliotheken, die mit diesem beiden Befehl nachinstalliert werde können:

sudo apt-get install python-pip
sudo pip install pyopenssl ndg-httpsclient pyasn1

Die Installationsparameter kann man sich unter ./letsencrypt-auto –help ansehen.

Der Konfigurationsprozess wird mit diesem Befehl gestartet

./letsencrypt-auto

Die installierten virtuellen Hosts erscheinen zur Auswahl

Let's Encrypt - Domainauswahl
Let’s Encrypt – Domainauswahl

Es wird eine E-Mail Adresse als Ansprechpartner für die Wiederherstellung von Schlüssel und dringenden Benachrichtigungen verlangt. Die anzugebende E-Mail Adresse muss nicht bei einer der ausgewählten Domains sein.

Let's Encrypt - E-Mail Ansprechpartner
Let’s Encrypt – E-Mail Ansprechpartner

Die Geschäftsbedingungen müssen bestätigt werden. Hier der Link zum angezeigten PDF: https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf

Interessant in diesem Zusammenhang ist vermutlich dieser Satz:

The parties agree that the laws of the State of California govern this Agreement, irrespective of California’s choice of law and conflicts of law principles.

Let's Encrypt - Geschäftsbedingungen
Let’s Encrypt – Geschäftsbedingungen

Im letzten Fenster kann festgelegt werden, ob HTTP und HTTPS angeboten werden sollen oder der gesamte Verkehr über HTTPS abgewickelt werden soll.

Let's Encrypt - Auswahl ob HTTPS erzwungen werden soll (Ja)
Let’s Encrypt – Auswahl ob HTTPS erzwungen werden soll (Ja)

Das wars! Es erscheint ein Hinweis auf eine Testsite …

Let's Encrypt - Erfolg
Let’s Encrypt – Erfolg

und dieser Hinweis …

IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to hagen@novatrend.ch.
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/serverblogger.ch/fullchain.pem. Your cert
   will expire on 2016-03-03. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Auf der Testsite erscheint dann auch ein leuchtendes Grün und ein grosses A!

Let's Encrypt – SSL Labs
Let’s Encrypt – SSL Labs

Fazit:

Es ist einfach, es funktioniert und im Ergebnis hat man eine SSL/TLS abgesicherte Website. Das ist zunächst mal gut!

Der Haken an der Sache ist, dass man nun auch eine Art Backdoor unter kalifornischem Recht auf dem Server hat. Hierzu hat sich Felix von Leitner ein paar Gedanken gemacht (https://blog.fefe.de/?ts=a89f4ed6) und auch eine Lösung angeboten. Diese Website (https://gethttpsforfree.com/) bietet die Möglichkeit ein Let’s Encrypt Zertifikat zu erzeugen und zu nutzen ohne das Let’s Encrypt Python Softwarepaket.

Links:

Weitere Artikel zum Thema hier im Blog:


tl;dr: Es funktioniert! Ein kostenloses SSL-Zertifikat per Knopfdruck!