HSTS
Zur Navigation springen
Zur Suche springen
HTTP Strict Transport Security
- HTTP Strict Transport Security (HSTS) ist ein Sicherheitsmechanismus für HTTPS-Verbindungen
- Schutz vor Aushebelung der Verbindungsverschlüsselung durch eine Downgrade-Attacke
- Soll Schutz vor Session Hijacking bieten.
- Server teilt Browser mittels des HTTP response header Strict-Transport-Security Verhaltensweisen mit.
- Für eine definierte Zeit ausschließlich verschlüsselte Verbindungen für diese Domain zu nutzen.
- Man kann dies auch auf alle Subdomains ausweiten
- Standard wurde 2012 von der IETF als RFC 6797 veröffentlicht
- Wird unter jüngsten Versionen der gängigen Webbrowser unterstützt.
- Anlass für die Entwicklung waren von Moxie Marlinspike 2009 demonstrierte Attacken auf verschlüsselte Verbindungen durch Man-in-the-Middle-Angriffe
Funktionsweise
- Server als auch die Browser der Anwender sollen sich entsprechend der Vorgabe verhalten.
Server
- Server versendet bei HTTPS-Verbindungen einen zusätzlichen Header mit der Information
- das die angeforderte Seite in der Zukunft nur über eine verschlüsselte Verbindung verfügbar ist.
- Header muss dann vom Browser des Anwenders entsprechend interpretiert werden.
- Header ist Strict-Transport-Security. Außerdem wird angegeben, wie lange die Seite in Zukunft verschlüsselt erreichbar sein wird.
- Diese Zeitspanne wird in Sekunden angegeben.
Browser
- Wenn ein Browser einen HSTS-Header erhält, muss er sich für alle zukünftigen Verbindungen zu dieser Domain bis zum Ablauf der angegebenen Gültigkeit folgendermaßen verhalten
- unverschlüsselten Links zu dieser Seite werden automatisch in verschlüsselte umgewandelt
- Wenn die Sicherheit der Verbindung nicht gewährleistet werden kann, z. B. wenn dem Zertifikat des Servers nicht getraut werden kann, wird eine Fehlermeldung angezeigt und die Verbindung abgebrochen.
- Der Nutzer hat dann keine Möglichkeit mehr, die Seite mit dem Browser aufzurufen.
- Wird ein HSTS-Header über eine unverschlüsselte Verbindung übertragen oder ist das Zertifikat der Verbindung nicht gültig, muss der Browser diesen ignorieren.
Kritik
- Die Speicherung der HSTS-Informationen durch den Client lässt sich für ein Tracking von Benutzern ausnutzen.
- Besonders kritisch wurde in diesem Zusammenhang diskutiert, dass Google Chrome die HSTS-Informationen auch in den für besonderen Datenschutz ausgelegten Inkognito-Modus übernimmt.
- Webserver sollten HSTS dennoch aktivieren, da, unabhängig vom Datenschutzrisiko auf der Browserseite, die Kommunikation durch HSTS sicherer wird
- Auch kann eine zwingend erforderliche SSL/TLS-Verbindung helfen, einen Man-in-the-Middle-Angriff leichter zu erkennen
Anmerkung
- Transparente Proxys schalten ein eignes Zertifikat davor
- Sie verhalten sich wie ein Man in the Middle Angreifer
- Intelligente Proxy schleusen dies durch.
HSTS checken
- curl -s -D- https://xinux.de/ | grep -i Strict
Strict-Transport-Security: max-age=15552000; includeSubDomains
HSTS Apache aktivieren
<VirtualHost *:443> ... ... Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </VirtualHost>
HSTS Nginx aktivieren
server { listen 443 ssl http2; ... add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;"; ... }