Mehr Sicherheit fuer die eigenen Daten – selbstgehostete webbasierte Dienste

Dieses ist der achte Teil einer Serie von Blogeintraegen, die sich als Reaktion auf die NSA Affaere um den Kontext Sicherheit fuer die eigenen Daten und Verschluesselung drehen.

Links zu den ersten sieben Artikeln befinden sich am Ende des Blogposts. Im achten Teil moechte ich webbasierte Dienste vorstellen die man selber hosten kann und dadurch die eigenen Daten unter mehr Kontrolle hat.

Alles was ich bei mir speichern kann ist prinzipiell sicherer als das was ich nicht bei mir gespeichert habe. Wie einfach es dennoch ist daran zu kommen ist eine andere Geschichte, aber je mehr die Daten auf meinen Server liegen, desto sicherer sind sie. Voraussetzung dafuer ist natuerlich, dass man einen eigenen Linuxserver betreiben kann und moechte.

Mit der Zeit sind bestimmte Tools in den Regelbetrieb uebergegangen die ich hier im folgenden nun kurz vorstellen moechte:

WordPress

Mein Blog ist selbst gehostet. Seit 7,5 Jahren nutze ich meinen Blog unter der Adresse blog.pregos.info als meine persoenliche Klowand, an die ich alles das rankritzel was ich will. Die Software dahinter ist OpenSource, laesst sich von wordpress.org herunterladen und sehr einfach installieren. Updates koennen mit einem Klick aus der Software selbst heraus einspielt werden. Ich wuerde mich jederzeit wieder fuer WordPress entscheiden.

Alternative Loesungen bei denen ich beahlen muesste, monetaer oder mit meinen Daten, waeren zum Beispiel blogger.com oder wordpress.com

TinyTiny RSS

Frueher hatte ich RSS Feeds in Thunderbird abonniert. Das war aber auf Dauer aber voll aetzend, weil es nicht synchronisiert war. Ich bin dann auf die Software rsslounge gestossen und war damit lange Zeit sehr zufrieden. Das Projekt ist aber eingeschlafen und mit dem Nachfolger selfoss bin ich nicht warm geworden. Gelandet bin ich dann bei TinyTiny RSS. Die Software ist OpenSource und kann direkt auf der Projektseite heruntergeladen werden. Ich nutze sie mit dem Feedly-Theme, das ich im Forum gefunden habe. Es gibt auch eine offizielle Android App dafuer. Der Unlocker nach 7 Tagen kostet zwar 1.49EUR aber ich finde die App ist Ihr Geld wert. Mit der Software bin ich sehr zufrieden und kann sie nur weiterempfehlen.

Alternative Loesungen bei denen ich bezahlen muesste, monetaer oder mit meinen Daten, waeren zum Beispiel feedly, digg reader oder The Old Reader

Dokuwiki

Eine eigene Wiki zu haben ist mehr als praktisch. Ich notiere mir dort vieles was auf dem Blog hier keinen Platz hat: Urlaubsplanung, Geschenkideen, Links zu den Firmware Upgrade Seiten der persoenlichen Elektronikspielzeuge und so weiter. Dokuwiki ist eine sehr einfache Wikisoftware, kommt ohne Datenbank aus und laesst sich vor allem einfach bedienen. Sie ist OpenSource und laesst sich von der Webseite herunterladen.

Ich weiss nicht was ich als Alternative dazu nutzen wuerde, aber ich glaube die grossen Notizen die ich hier mache pflegen andere Leute vielleicht in Evernote oder Wunderlist.

Piwik

Ich gebe zu, ein bisschen spannend finde ich es ja schon wer alles meine Webseiten aufruft und was er sucht und findet und von wo her verlinkt wird und so weiter. Aus diesem Grund setze ich Piwik ein. Piwik ist eine Open Source Web-Analysesoftware und laesst sich kostenlos von piwik.org herunterladen.

Die einzige alternative Loesung die ich kenne ist Google Analytics. Vieles andere basiert auf Serverlogs und ist deswegen nicht vergleichbar.

Tine2.0

Ich betreibe einen eigenen Mailer (kommen spaeter noch Artikel dazu). Frueher habe ich als Webinterface Roundcube eingesetzt. Damit war ich immer sehr zufrieden. Parallel dazu habe ich die Google Apps in der freien Version mit einer eigenen Domain genutzt. Der Service wird heute nicht mehr angebote. Ich wollte aber wieder mehr Kontrolle ueber meine eigenen Daten gewinnen und mich von Google Produkten soweit es geht loesen. Deswegen bin ich von Roundcube und Google hin zu Tine2.0 migriert. Ich synchronisiere mein Android Handy und mein Thunderbird erfolgreich ueber CalDAV und CardDAV mit meiner Tine2.0 Instanz. Tine2.0 ist OpenSource und zum Einrichten sind sicherlich schon fortgeschrittene Kenntnisse notwendig. Heruntergeladen werden kann es auf http://www.tine20.org

 

Vorherige Blogposts:

  • Der erste Teil war fuer mich das Aufraeumen, einen Ueberblick zu bekommen sowie Strukturen zu schaffen, auf denen ich aufbauen kann.
  • Der zweite Teil bestand darin einen Ort zu schaffen, in dem ich Keys und Passwoerter sicher aufbewahren und gleichzeitig alles in ein vernuenftiges Backup schieben kann.
  • Der dritte Teil bezog sich auf das erzeugen von Zertifikaten und Einrichten von verschluesselten Verbindungen zu Apache vHosts.
  • Der vierte Teil drehte sich um das Thema Komfort im Webbrowser und verwies in dem Kontext auf einen Artikel zum selbst gehosteten Firefox Sync Server.
  • Im fuenften Teil habe ich etwas zu meinen Ueberlegungen zu sicheren Zugangsdaten und Passwoertern geschrieben.
  • Im sechsten Teil dreht es sich darum, wie man sich auf seinen Servern mit SSH aber ohne Passwort sicher authentifizieren kann.
  • Der siebte Teil behandelt das Thema Backup und zeigt eine Moeglichkeit wie man selbiges einfach konfiguriert und verschluesselt auf einem externen Speicher ablegen kann.

HowTo: https beim Anmelden an WordPress Blog Backend + Schutz gegen Brutforce

Bei meinem Blog hatte ich vor kurzem zwei Dinge die ich Aendern wollte:

  1. Der Blog soll ueber http:// lesbar sein, aber Anmelden soll grundsaetzlich immer https:// sein, damit das Passwort nicht unverschluesselt durch das Netz schwirrt
  2. Der Login Bereich soll gegen Brutforce Attacken abgesichert sein

Anmelden an Blog Backend nur ueber https://

Viele Menschen lesen diesen Blog oder finden hier hin. Ich bin immer wieder erstaunt darueber. Die Verbindung soll grundsaetzlich unverschluesselt sein, aber das Anmelden wollte ich – egal was ich eingebe – immer auf https:// landen, damit das Passwort nicht unverschluesselt durchs Netz uebertragen wird. Dafuer habe ich im vhost der auf Port 80 lauscht die folgende Rewrite Regel hinzugefuegt:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/wp-login.php$
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ https://blog.pregos.info/wp-login.php/%1? [R=302,L]

So werde ich immer auf https weitergeleitet ohne das ich darauf achten muss, das was ich eingebe. Es ist wichig mit mod_rewrite zu arbeiten und nicht nur einen Alias zu setzen, da wenn man sich aus dem Backend abmeldet man dann auch auf den Anmeldebildschirm zurueckgeleitet wird. Da haengen GET Parameter dran. Ein Alias wuerde dann nicht mehr greifen, die mod_rewrite Regel oben tut es hingegen.

Schutz gegen ungewollte (Brutforce) Anmeldeversuche am Blog Backend

Nach vielen vielen Jahren den ich diesen Blog nun schon schreibe bin ich auf das Plugin WP fail2ban gestossen. Es loggt fehlgeschlagene Loginversuche ins Backend mit, so das man diese mit fail2ban auswerten und behandeln kann. Ich habe mit ein bisschen schlechten Gewissen das Plugin installiert und mal geschaut was so passiert. Von der Anzahl der Attacken war ich echt ueberrascht. Teilweise Skriptkiddies die ueber Stunden hinweg von der gleichen IP probieren, teilweise aber auch Brutforce Attacken mit ueber 16000 Loginversuchen in ~3h.

Spannend zu sehen was mir vorher alles entgangen ist, aber so richtig gut fuehlt sich das nicht an, dass von tausenden von Hosts probiert wird und die immer erst nach drei Versuchen gesperrt werden. Deswegen ist es am einfachsten, wenn man das Backend mit einem Benutzernamen und Passwort direkt im Apache sichert. Das habe ich auf die folgende Art und Weise im vHost getan:

<Location /wp-admin/>
        AuthName "Wordpress Login"
        AuthType Basic
        AuthUserFile /var/www/pregos.info/htpasswd-blog
        Require valid-user
</Location>

Da die Angreifer einfach per POST Daten an die wp-login.php schicken habe ich die Datei selbst auch noch explizit wie folgt abgesichert:

<FilesMatch "wp-login.php">
        AuthName "Wordpress Login"
        AuthType Basic
        AuthUserFile /var/www/pregos.info/htpasswd-blog
        require valid-user
</FilesMatch>

In wieweit das Passwort ein komplexes Zufallspasswort oder ein einfacher zu merkendes ist, ist jedem selbst ueberlassen. Es hilft aber erstaunlich einfach und effizient gegen die Attacken auf meinen Blog.

HowTo: Export and Import GnuPG Keys

Exportieren:

  1. Vorhandene Keys auflisten um Schluessel ID herauszufinden:
    gpg --list-keys
  2. Public Key abspeichern:
    gpg -ao mynamefor-public.key --export KEY_ID
  3. Private Key abspeichern:
    gpg -ao mynamefor-private.key --export-secret-keys KEY_ID
  4. Wiederrufszertifikat erzeugen:
    gpg --gen-revoke KEY_ID

Importieren:

gpg --import _something_-public.key
gpg --import _something_-private.key