ich erhalte in der Nextcloud die folgende Fehlermeldung.
Der “Strict-Transport-Security” HTTP-Header ist nicht auf mindestens “15552000” Sekunden eingestellt. Um die Sicherheit zu erhöhen, empfehlen wir das Aktivieren von HSTS
root@ucs-8762:~# ucr search hsts
apache2/hsts/includeSubDomains: <empty>
Applies HSTS policy also to subdomains if set to 'yes'.
apache2/hsts/max-age: <empty>
Time in seconds of how long web browsers will cache and enforce the HSTS policy on the host. Defaults to '10886400' - which are 18 weeks.
apache2/hsts: <empty>
Enable HTTP Strict Transport Security (HSTS) by setting this variable to 'yes'. 'apache2/force_https' should be enabled additionally to take full advantage of HSTS.
ucr ist eine Executable das nur auf Univention Systemen existiert. Das Kommando wird daher auf dem Univention System ausgeführt werden müssen, nicht im Docker Container von Nextcloud.
wo finde ich die datei mit diesem Inhalt. Irgendwie ist in UCS alles etwas anders und ich finde nicht einmal diese Datei mit den VirtualHost Einträgen:
etc…
wenn ich auf diese Datei zugreifen kann dann käme ich vermutlich etwas weiter mit diesem Problemchen?
Andernfalls bin ich völlig verloren.
vielen Dank
Die Konfiguration erfolgt in der default-ssl.conf (unter sites-available bzw. sites-enabled). Dort landen dann auch nach dem Setzen der oben genannten UCR-Variablen die HSTS-Einstellungen. Docker-Gäste müssen normalerweise nicht extra dafür konfiguriert werden.
Soll ich die nachfolgenden Angaben zu HSTS manuell unter <VirtualHost… eintragen oder ist HSTS bei mir gar nicht aktiv oder???
Was mache ich falsch, wo ist der Denkfehler?
Scheinbar haben wir dich irgendwo total verwirrt. Innerhalb von Univention erfolgt die Konfiguration in der Regel über die Univention Web IU oder mittels UCR Variablen (die wiederum über die UI oder über die Kommandozeile gesetzt werden können). Wenn HSTS verwendet werden soll, dann muss dies nicht innerhalb des Nextcloud Containers konfiguriert werden, sondern auf dem Univention Host. Hierfür reicht per CLI ein “einfaches” ucr set apache2/force_https=yes apache2/hsts=yes.
Um es nochmal zu verdeutlichen. Konfigurationsdateien müssen hierfür nicht händisch verändert werden. Im Gegenteil sogar, dies zu tun ist in den meisten fällen sogar kontraproduktiv, da Änderungen dann durch Univention im späteren Verlauf überschrieben werden könnten.
Hallo ich hoffe, ich darf den Thread noch einmal pushen. Ich bin immer noch recht verwirrt wegen dem Strict-Transport-Security.
Wenn ich das richtig verstanden habe, dann ist HSTS ein Sicherheitsmechanismus, um für eine definierte Zeit (max-age) ausschließlich verschlüsselte Vernindungen zuzulassen.
Diese Zeitspanne setze ich mit
Strict-Transport-Security: max-age=……
Aber wo setzte ich diese Seit also in welcher Datei und wo finde ich die Datei?
Oder ist es ein Befehl, den ich in die Konsole eingebe, so wie „fbartels“ es geschrieben hat.
Gebe ich dann einfach
ucr set apache2/force_https=yes apache2/hsts=yes
In die Konsole ein und fertig oder muss ich in einem bestimmten Pfad sein und es eingeben?
Entschuldigt, meine Fragerei und vielen lieben Dank für eure Hilfe.
vereinfacht gesprochen (auch weil ich mir das Thema bisher noch in keinem grösseren Detail angesehen habe, die folgende Aussage kann also technische Fehler enthalten):
Es geht bei hsts nicht vorwiegend darum, dass eine Verbindung verschlüsselt ist, sondern mit welchem Schlüssel dies passiert ist.
Wenn hsts aktiviert ist, merkt sich nicht der selbst Server den Schlüssel, sondern der Browser.
Das hier geschützte Scenario ist also:
ich spreche regelmäßig mit Server X, Server X hat aber nun ein (valides) SSL Zertifikat aus einer anderen CA.
wenn hsts genutzt wird hat der Admin dies hoffentlich vorher bedacht und hsts deaktiviert. Falls nicht dann ist von einem Angriff auszugehen.
Ich glaub, dass ist nicht ganz korrekt.
Wenn ein HSTS verstehender Client (z.B. Browser) sich einmal zu einem Server, der einen HSTS-Header sendet, verbunden hat, wird er sich innerhalb der angegebenen Zeitspanne nicht ohne weiteres mehr mit http zufrieden geben. Das soll Downgrade-Attacken verhindern, bei denen sich ein “Man in the Middle” z.B. mit dem Angebot eines “Free-WiFi here” einklinkt, einfach mal sagt “heute kein https, nehmt http” und dann fleissig mitliest.
Der Wechsel von Zertifikaten bei aktiven HSTS ist nach meiner Erfahrung unkritisch, solange man nicht auf selbst signierte gehen will.
Siehe auch Nextcloud Hardening and security guidance und Wikipedia: HSTS
Das wäre m.E. eher ein mit HPKP adressierbares Problem. Nachbarbaustelle.
Hallo,
vielen lieben Dank für die Antworten. Leider helfen mir diese nicht wirklich weiter. Könntet ihr mir etwas genauer beschreiben, was ich zu machen hätte?
vielen lieben Dank für die Hilfe
Thomas
It would be helpful to know how you access nextcloud ?
direct or through proxy ?
if direct than on the nextcloud host you’ll have to set HSTS and forceHTTPS in UCR
if through proxy than you’ll have to set this on the proxy (if also UCS then in UCR - else in the proxy configuration files (apache nginx, whatever you use)
ich muss den Beitrag auch mal ausgraben. Ich habe Nextcloud (19.0.3) auf einem UCS-Member (4.4.6) am laufen und erhalte diese Meldung auch.
Ich habe auf dem UCS-Host ausgeführt:
ucr set apache2/force_https=yes
ucr set apache2/hsts/includeSubDomains=yes
ucr set apache2/hsts/max-age=15552000
und den UCS anschließend neu gestartet. Die Meldung ist jedoch geblieben. Was mache ich falsch?