HSTS: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 37: | Zeile 37: | ||
*curl -s -D- https://xinux.de/ | grep -i Strict | *curl -s -D- https://xinux.de/ | grep -i Strict | ||
Strict-Transport-Security: max-age=15552000; includeSubDomains | Strict-Transport-Security: max-age=15552000; includeSubDomains | ||
| − | =HSTS aktivieren= | + | =HSTS Apache aktivieren= |
<VirtualHost *:443> | <VirtualHost *:443> | ||
# ..... | # ..... | ||
| Zeile 43: | Zeile 43: | ||
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" | Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" | ||
</VirtualHost> | </VirtualHost> | ||
| + | =HSTS Nginx aktivieren= | ||
| + | server { | ||
| + | listen 443 ssl http2; | ||
| + | ... | ||
| + | add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;"; | ||
| + | ... | ||
| + | } | ||
Version vom 26. Oktober 2020, 09:33 Uhr
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;";
...
}