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.

Snippets: Android flashen etc.

Folgendes habe ich gestern Morgen gelernt:

  1. Android adb und fastboot sind in den Ubuntu Repositories vorhanden
    sudo apt-get install android-tools-adb android-tools-fastboot
  2. In den Fastboot Modus wechselt man wenn das Geraet mit der folgenden Tastenkombination anstellt:
    Power + VolumeUP/VolumeDown
  3. Mit dem folgenden Befehl kann man herausfinden, welche Android Geraete vom PC erkannt werden:
    adb devices
  4. TWRP2 ist ein gutes Recovery Build fuer Android. Es kann auf der offiziellen Projektseite bezogen werden.
  5. Mit dem folgenden Befehl wird das TWRP2 Recovery Image installiert wenn sich das Geraet im Fastboot Modus befindet:
     fastboot flash recovery openrecovery-twrp-2.6.3.4-hammerhead.img
  6. Mit dem folgenden Befehl werden Dateien wie zum Beispiel ein alternatives ROM auf das Geraet kopiert, wenn sich dieses im Recovery Modus befindet:
    adb push cm-11-20131214-NIGHTLY-hammerhead.zip /sdcard/

HowTo: Apache SSL and perfect forward secrecy

Man liesst die Tage ueberall von perfect forward secrecy. Das bedeutet, dass man bei verschluesselten Verbindungen erst sichere Protokolle anbietet und gleichzeitig unsichere verbietet. Mit den folgenden Einstellungen kann man in Apache einen SSL vHost selber PFS like absichern und auch BEAST (Browser Exploit Against SSL/TLS) Attacken abschwaechen:

SSLProtocol all -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

Um die SSL Konfiguration des vHosts zu testen ist noch der SSL Server Test von Qualys SSL Labs zu empfehlen.

(via)