HSTS: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(5 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 vorr Aushebelung der Verbindungsverschlüsselung durch eine Downgrade-Attacke
*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 24: Zeile 25:
**Der Nutzer hat dann keine Möglichkeit mehr, die Seite mit dem Browser aufzurufen.
**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.
**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=
=Anmerkung=
*Transparente Proxys schalten ein eignes Zertifikat davor
*Transparente Proxys schalten ein eignes Zertifikat davor
*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 24. Juni 2026, 09:00 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.

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

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;";
 ...
}