HSTS: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=HTTP Strict Transport Security= | =HTTP Strict Transport Security= | ||
*HTTP Strict Transport Security (HSTS) ist ein Sicherheitsmechanismus für HTTPS-Verbindungen | *HTTP Strict Transport Security (HSTS) ist ein Sicherheitsmechanismus für HTTPS-Verbindungen | ||
| − | *Schutz | + | *Schutz vor Aushebelung der Verbindungsverschlüsselung durch eine Downgrade-Attacke |
*Soll Schutz vor Session Hijacking bieten. | *Soll Schutz vor Session Hijacking bieten. | ||
*Server teilt Browser mittels des HTTP response header Strict-Transport-Security Verhaltensweisen mit. | *Server teilt Browser mittels des HTTP response header Strict-Transport-Security Verhaltensweisen mit. | ||
| Zeile 11: | Zeile 11: | ||
=Funktionsweise= | =Funktionsweise= | ||
| − | *Server als auch die Browser der Anwender entsprechend der Vorgabe verhalten. | + | *Server als auch die Browser der Anwender sollen sich entsprechend der Vorgabe verhalten. |
| + | |||
=Server= | =Server= | ||
*Server versendet bei HTTPS-Verbindungen einen zusätzlichen Header mit der Information | *Server versendet bei HTTPS-Verbindungen einen zusätzlichen Header mit der Information | ||
| Zeile 33: | Zeile 34: | ||
*Sie verhalten sich wie ein Man in the Middle Angreifer | *Sie verhalten sich wie ein Man in the Middle Angreifer | ||
*Intelligente Proxy schleusen dies durch. | *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;"; | ||
| + | ... | ||
| + | } | ||
Aktuelle Version vom 26. Oktober 2020, 09:34 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;";
...
}