Ein Grafana Dashboard für Goetemp

Über mein kleines Projekt Goetemp habe ich hier schon öfter geschrieben. Seit nunmehr über sieben Jahren sammle ich Wetterdaten aus Göttingen und spiele damit herum.

In den vergangenen Tagen habe ich das Backend für die Simple JSON Datasource für Grafana implementiert. Damit ist es nun möglich die Daten auch in Grafana zu visualisieren. Zuerst hatte ich überlegt die Daten auch gleich in eine InfluxDB zu schreiben, aber die Implementierung des Backends für die Datasource war erheblich schneller realisiert.

Mehr dazu habe ich auf der Goetemp Webseite geschrieben. Hier kann auch das Dashboard heruntergeladen werden. Zum spielen mit dem Datenbestand habe ich einen Snapshot freigegeben:

Mehr Sicherheit fuer die eigenen Daten: Groupware ohne Google

Dieses ist der zehnte 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 neun Artikeln befinden sich am Ende des Blogposts. Im zehnten Teil moechte ich meine Loesung zum Thema Groupware ohne vorstellen.

Wir leben in der Cloud. 24 Stunden vom Tag ist der Router mit dem Internet verbunden. Das Smartphone ist nur noch bei schlechter Netzabdeckung offline und die wird auch immer seltener. Es ist bequem auf dem Smartphone eine Telefonnummer ins Adressbuch hinzuzufuegen, und der Eintrag auf dem DECT Telefon Zuhause aktualisiert sich auch automatisch. Es ist bequem auf dem stationaeren Arbeitsplatz PC eine Emailadresse ins Adressbuch zu uebernehmen und spaeter ist sie auch auf dem Adressbuch des Laptops. Koennen wir uns eine Welt in der die Mails NICHT auf einem Server liegen und gleichermassen von Arbeitsplatz PC, Laptop, Smartphone, Tablet oder Webinterface bei Bekannten abgerufen werden koennen vorstellen? Ich nicht.

Google macht es einem da sehr einfach. Mit Diensten wie GMail, dessen Adressbuch, Google Calendar oder auch Google Drive gibt es fuer alles Loesungen. Sie sind kostenlos und das Erstellen eines Google Kontos dauert gerade mal zwei Minuten. Auf fast allen Geraeten kann man es sehr einfach einbinden. Wenn man ein Android Smartphone oder Tablet besitzt, ist die Integration perfekt!

Ich war auch in der Google Abhaengigkeit und mich davon zu loesen war schwerer als gedacht. Ich werde hier in diesen Blogpost keine Anleitungen schreiben wie alles eingerichtet ist, das ist definitiv zu kompliziert. Wenn jemand das Setup nachbauen moechte kann er mich gerne kontaktieren und ich helfe dabei oder gebe Tipps. Deswegen hier meine Loesung nur grob umrissen.

Grunsaetzlich liegt alles auf einem eigenen Server. Dieser ist voll verschluesselt. Fuer Emailempfang und Versand sowie den Zugriff via IMAP ist Postfix als MTA und Dovecot als MDA installiert. Bei beiden Diensten ist Perfect Forward Secrecy eingerichtet. Bei Dovecot wurde weiter das managesieve Plugin aktiviert. Postfix akzeptiert Verbindungen mit STARTTLS auf Port 25 und 465; letzterer damit man auch aus restriktiven Netzen bei denen Port 25 gesperrt ist wie z.B. be vielen WLANs in Hotels oder Gastnetzen von Universitaeten Emails versenden kann. Dovecot wurde so konfiguriert, dass nur Verbindungen ueber IMAPS auf Port 993 akzeptiert werden.

Als Groupware kommt bei mir Tine20.org zum Einsatz. Installiert habe ich es aus den bereitgestellten Debian Repositories. Apache ist so konfiguriert, dass der vhost auf Port 80 automatisch auf den vhost auf Port 443 weiterleitet. Tine20 wurde mit Postfix und Dovecot Backend eingerichtet. So kann ich die komplette Konfiguration der User und der Virtual Mailboxes aus dem Tine20 Adminmodul machen.

Als MUA auf dem Desktop verwende ich Thunderbird. Fuer Email ist alles mit den Standard Boardmitteln konfiguriert. Kalender, Adressbuch und Aufgaben werden mit Hilfe der Kombination aus Lightning Plugin und SOGo Connector synchronisiert.

Als Mailclient auf dem Smartphone verwende ich Kaiten Mail. Zur Synchronisation von Kalender, Adressbuch und Aufgaben nutze ich die Apps CalDAV-Sync, CardDAV-Sync und Tasks. Die Android eigene Kalenderapplikation habe ich gegen aCalendar getauscht.

Dieses Setup ermoeglicht es mir die Synchronisation meines Google Kontos in den Android Einstellungen komplett zu deaktivieren.

Seit dem neusten Release von Tine20.org – Collin – kann Tine auch als Server fuer OwnCloud Clients fungieren. Das funktioniert prinzipiell auch schon ganz gut, aber gerade auf dem Smartphone gibt es immer nochmal wieder Synchronisierungsprobleme. Ob das nun an der App, Tine20, Android 4.4 oder an meiner Serverkonfiguration liegt habe ich noch nicht herausgefunden.

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.
  • Der achte Teil stellt webbasierte Dienste vor, die man selber hosten kann und dadurch die eigenen Daten unter mehr Kontrolle hat.
  • Der neunten Teil stellt meine Ueberlegungen zu selbstgehosteten Servern und deren Sicherheit im Kontext Verschluesselung der Festplatten vor.

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.