Unix Timestamp vs. Java Timestamp

Wer als Sysadmin mit Java Entwicklern zu tun hat und beide wie selbstverstaendlich ueber Timstamps reden, dann gibt es doch einen entscheidenen Unterschied. Beide Timestamps geben die Zeit seit dem 01.01.1970 00:00:00h wieder. Unix Timestamps jedoch in Sekunden, Java Timestamps in Millisekunden.

Fuer die Praxis:

  • 01.01.2014 00:00:00 als Unix Timestamp:
    user@host:~$ date -d "2014-01-01 00:00:00" "+%s"
    1388530800
    user@host:~$
  • 01.01.2014 00:00:00 als Java Timestamp:
    usaer@host:~$ echo $(date -d "2014-01-01 00:00:00" "+%s")*1000 | bc
    1388530800000
    user@host:~$

HSTS – Was es ist, wie es funktioniert und wie man es in Apache einrichtet

HSTS steht für HTTP Strict Transport Security und ist ein HTTP-Header bei dem der Webserver dem anfragenden Browser mitteilt, das alle Verbindungen nur ueber SSL/TLS aufgebaut werden sollen.
HSTS soll „Man-in-the-middle“ Attacken abwehren oder erschweren. Das Angriffsszenario besteht darin, dass Nutzer in der Regel nie

https

in den Webbrowser eingeben, sondern immer nur

example.net

Die Weiterleitung von http:// zu https:// macht der Webserver. Das sieht dann zum Beispiel so aus:
ohne_hsts

Man kann sehen, dass die erste GET Anfrage mit einem HTTP 302 Weitergeleitet wird und die zweite dann ein 200 OK zurueck liefert. Der Webserver ist in diesem Fall so konfiguriert, das alles was per HTTP reinkommt, automatisch auf HTTPS umgeleitet wird:

<VirtualHost *:80>
        ServerAdmin webmaster@jan-von.de
        ServerName mail.jan-von.de
        DocumentRoot /var/www/empty
 
        RewriteEngine on
        RewriteCond %{HTTP:X-Forwarded-Proto} !https
        RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
 
        CustomLog /var/log/apache2/mail.jan-von.de-access.log combined
</VirtualHost>

Genau hier liegt auch das Problem. Man kann sich in einem fremden Netz befinden, zum Beispiel einem unbekannten oeffentichen WLAN, dort kann die HTTP Anfrage abgefangen und der HTTPS Aufruf auf einen alternativen Server weitergeleitet werden.

Hier kommt HSTS ins Spiel. Der Server teilt dem Webbrowser mit, dass er sich bitte fuer eine bestimmte Zeit (zum Beispiel ein Jahr) daran erinnern soll, das diese Webseite nur noch ueber HTTPS aufgerufen werden soll.

In Apache muss dafuer das Headers-Modul aktiviert sein:

a2enmod headers

und anschliessend fuegt man in den HTTPS vhost die folgende Zeile ein:

Header always set Strict-Transport-Security "max-age=31556926"

Der Parameter max-age wird in Sekunden gesetzt. 31556926 Sekunden sind 365 Tage. Ein weiterer Parameter den man optional noch mit Komma Semikolon separiert dahinter haengen kann ist includeSubDomains. Dafuer muss aber sichergestellt sein, dass auch alle Subdomains per HTTPS erreichbar sind.
Weiter muss man aufpassen, dass die entsprechenden vhosts auch die angegebene Zeit, also zum Beispiel ein Jahr lang per HTTPS erreichbar sind, ansonsten kann es zu Fehlermeldungen kommen.

Wenn man dann HSTS aktiviert hat und eine Webseite aufruft die es unterstuetzt, dann kann man schoen sehen, wie der Browser gleich HTTPS nimmt und gar nicht erst HTTP probiert.

mit_hsts

Weiteres zu dem Thema z.B. unter:

Snippets: Postfix canonical mit regex; Samba alternatives disk free command

Vor einiger Zeit hatte ich Dokumentiert, wie man bei Postfix Absender umschreiben kann, es geht auch mit regex und dadurch generischer und einfacher:

  1. In die /etc/postfix/main.cf folgendes eintragen
    sender_canonical_maps = regexp:/etc/postfix/canonical.regexp
  2. /etc/postfix/canonical.regexp anlegen mit Eintraegen wie z. B.:
    /^(.*)@bastel.fritz.box$/               bastel-${1}@example.org
  3. Postfix neu starten:
    service postfix restart

Der zweite Punkt ist, dass man in Samba ein alternatives Kommando zur Berechnung des freien Speichers geben kann. Dieses ist seit 3.0.21 per Share moeglich. Die Ursache wofuer wir das brauchten ist zu kompliziert um es auf die schnelle zu notieren, deswegen nur fix:

  1. Fuer den gewuenschten Share die folgende neue Option konfigurieren
    dfree command = /usr/local/bin/samba-dfree
  2. Folgendes Skript unter /usr/local/bin/samba-dfree ablegen
    #!/bin/bash
     
    #df $1 | tail -1 | awk ´{print $(NF-4),$(NF-2)}´
    df /mnt/disk1/ |tail -1 | awk '{print $(NF-4),$(NF-2)}'
  3. Samba neu starten
    service smbd restart

 

Weil mein Arbeitskollege seinen Blog erst nach vermutlich 5 Jahren wiederbeleben moechte, notiere ich es jetzt hier mit Credits an Ihn, er hat beides rausgesucht.

weitere selbstgehostete Dienste: Filez und Poche

Vor einiger Zeit hatte ich ueber verschiedene Dienste geschrieben, die man selber hosten kann, damit die Daten nicht bei irgendwelchen Fremdanbietern liegen. In der Zwischenzeit sind bei mir zwei neue Dienste hinzugekommen: Filez und Poche.

Filezfilez-logo

Filez ist ein Webdienst, mit dem man Dateien zum Download zur Verfuegung stellen kann. Diese haben eine kryptische URL und koennen optional mit einem Passwort gesichert werden. Nach einer definierten Zeitperiode verfallen die Daten und sind nicht mehr verfuegbar. Der Dienst ist praktisch um grosse Anhaenge an Emails zu vermeiden. Ausserdem ist er auch von nicht so technisch versierten Nutzern einfach zu bedienen, da Filez komplett ueber ein Webinterface bedient wird. Der Upload von Dateien per SFTP und setzen irgendwelcher Rechte oder aehnliches entfaellt also komplett.

Ich hatte vor einiger Zeit mal aus Spass an der Freude das Projekt file delivery (code) geschrieben, aber Filez ist besser.

 

Pochepoche

Poche ist ein selbst gehosteter „Read-It-Later“ Dienst. Ich stosse im Netz immer wieder auf interessante Inhalte, sei es ein Hinweis auf Twitter, ein zufaelliger Fund beim Surfen oder ein spannender Artikel in meinem RSS-Feedreader. Oft habe ich nicht die Moeglichkeit den Artikel gleich zu lesen und dadurch vergesse ich ihn wieder. Mit einem „Read-It-Later“ Dienst kann man die Inhalte speichern um sie dann spaeter zu lesen.

Poche ist nicht vergleichbar mit grossen Vorbildern wie zum Beispiel Pocket, aber die Grundfunktionen sind schon einmal da. Durch existierende Integrationen in Firefox, Android und meinen RSS-Feedreader TinyTiny RSS kann ich Poche auch bereits sehr gut beliefern. Mir fehlen noch Funktionen wie Offline auf dem Smartphone oder Tablet lesen, im grossen und ganzen bin ich aber sehr zufrieden.