HSTS

Aus xinux.net
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

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