HSTS: Unterschied zwischen den Versionen

Aus Xinux Wiki
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 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 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

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