nginx: Header-Härtung
Abgesehen von einigen spezifischen Konfigurationsanweisungen ist dies NICHT spezifisch für das nginx-Plugin. Bitte beachten Sie, dass Sie auf diese Weise auch Ihren Frontend-Code debuggen können.
Hintergrundinformationen
HTTP-Header können steuern, was eine Webanwendung tun darf und was nicht. Dies kann verwendet werden, um die Webanwendung gegen einige client-seitige Risiken zu härten.
Testen von Webanwendungen mit einem lokalen Proxy
Konfiguration von Firefox
Für diese Tests sollten Sie FoxyProxy installieren und konfigurieren.
Klicken Sie nach der Installation auf die Proxy-Einstellungen und fügen Sie einen neuen Proxy hinzu:
Geben Sie als Proxy localhost (oder 127.0.0.1, falls localhost nicht funktioniert) und den Port 8080 ein. Speichern Sie die Einstellungen.
Herunterladen einer Proxy-Software zum Testen
Bekannte Test-Tools sind:
OWASP ZAP (https://github.com/zaproxy/zaproxy)
Rülpsen (https://portswigger.net/burp)
mitmproxy (https://mitmproxy.org/)
Wenn es heruntergeladen ist, müssen Sie es normalerweise in ein passendes Verzeichnis entpacken.`` Wenn es entpackt ist, müssen Sie es ausführen. Im Falle von ZAP doppelklicken Sie auf die zap.sh
oder zap.bat
, abhängig von Ihrem Betriebssystem.
Anschließend regenerieren und exportieren Sie das Zertifikat unter Tools ‣ Einstellungen ‣ Dynamic SSL certificates und importieren es mit vollem Vertrauen in den Firefox-Schlüsselspeicher (Preferences ‣ Data Protection & Security ‣ Show Certificates).
Prüfung starten
Klicken Sie auf das FoxyProxy-Symbol und wählen Sie zunächst den definierten localhost-Proxy aus. Als nächstes verwenden Sie die Anwendung wie gewohnt. Wenn Sie auf die rote Schaltfläche klicken, können Sie die Anfrage in ZAP stoppen und es erlaubt Ihnen, sie zu bearbeiten:
Wenn Sie fertig sind, klicken Sie einfach auf eine der Wiedergabe-Schaltflächen, um das Anhalten zu deaktivieren, oder warten Sie auf die nächste Anfrage/Antwort, um auch diese zu bearbeiten. Die Antwort könnte z. B. wie folgt aussehen:
Sie können hier eine Menge wichtiger Informationen sehen, wie das verwendete Protokoll (HTTP/1.1), den Statuscode 200 (was bedeutet, dass es erfolgreich war) und eine Menge Header. Einige dieser Header wirken sich auf die Sicherheit aus und ZAP wird versuchen, eine Empfehlung auszusprechen, die vielleicht nicht immer korrekt ist, aber Ihnen helfen kann, einige (vergessene) Probleme zu finden:
Die Farben der Flaggen zeigen an, wie hoch das Risiko eingestuft wird. Je röter es also ist, desto mehr Einfluss hat es auf die Sicherheit. Die linke Ansicht enthält eine Liste der Befunde, die rechte Ansicht enthält eine detaillierte Beschreibung der Befunde. Auf der Grundlage dieser Informationen müssen Sie über Ihre weiteren Aktionen entscheiden.
Testen von Webanwendungen mit Entwickler-Tools
Wenn Sie mit der rechten Maustaste auf die Website klicken, können Sie das Element untersuchen, aber die Öffnungswerkzeuge haben auch eine Registerkarte für die Vernetzung.
Die Registerkarte „Netzwerk“ funktioniert wie die Hauptansicht des Proxys. Sie können sehen, welche Header gesendet werden und welche empfangen werden. Der Vorteil hier ist, dass Sie einige Fehler auf der Konsolen-Registerkarte erhalten (zum Beispiel, wenn der CSP einen Fehler hat). Der Nachteil der Konsole ist, dass es nicht so einfach ist, Daten abzufangen und zu verändern.
Fehlende Header über das nginx-Plugin einfügen
Sicherheits-Header im nginx-Plugin können durch Erstellen einer neuen Sicherheits-Header-Konfiguration injiziert werden:
Wenn Sie hier eine Einstellung festlegen, überschreibt sie die Einstellungen des Webservers. Sie können diese Sicherheitseinstellung in einen Speicherort oder HTTP-Server injizieren.
Sie können über die Header im Mozilla Wiki oder in den RFCs nachlesen.
Nicht alle Header werden von allen Browsern unterstützt.
Kurz gesagt, die Überschriften sind:
Referrer | Kontrollieren Sie, was eine Seite sieht, wenn Sie auf sie verlinken |
XSS-Schutz | Aktivieren oder deaktivieren Sie die Erkennung für (reflektierte) XSS |
Inhaltstyp „Don’t Sniff | Erkennung des Inhaltstyps deaktivieren, wenn das Original nicht korrekt ist |
Strenge Transportsicherheit | Nur TLS und gültiges Zertifikat erzwingen |
HPKP | Pin den öffentlichen Schlüssel, nicht weit verbreitet und gefährlich [1] wenn falsch konfiguriert |
Sicherheitsrichtlinien für Inhalte | Steuert Ressourcen und JS-Funktionen |
Wenn Sie das Zertifikat wechseln, ohne vorher seinen öffentlichen Schlüssel über diesen Header in einer Rollover-Zeitspanne bekannt zu geben, sperren Sie diese Clients aus, weil sie erwarten, Ziel eines MITM-Angriffs zu sein und die Verbindung verweigern und es schwer ist, diesen Pin im Browser zurückzusetzen. |