- 3 Webserver
- Übersicht
- Erzwingen einer Weiterleitung der Root-URL auf die Zabbix-SSL-URL
- Aktivieren von HTTP Strict Transport Security (HSTS) auf dem Webserver
- Erzwingen sicherer und SameSite-Session-Cookies in Zabbix
- Aktivieren der Content Security Policy (CSP) auf dem Webserver
- Deaktivieren der Offenlegung von Webserver-Informationen
- Deaktivieren der Standard-Fehlerseiten des Webservers
- Entfernen der Testseite des Webservers
- X-Frame-Options-HTTP-Antwortheader festlegen
- Ausblenden der Datei mit der Liste gängiger Passwörter
3 Webserver
Übersicht
Dieser Abschnitt enthält bewährte Verfahren für die sichere Einrichtung des Webservers.
Erzwingen einer Weiterleitung der Root-URL auf die Zabbix-SSL-URL
Fügen Sie auf RHEL-basierten Systemen der Apache-Konfiguration (/etc/httpd/conf/httpd.conf) einen virtuellen Host hinzu und legen Sie eine permanente Weiterleitung für das Dokumentenstammverzeichnis auf die Zabbix-SSL-URL fest.
Beachten Sie, dass example.com durch den tatsächlichen Namen des Servers ersetzt werden sollte.
# Zeilen hinzufügen:
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
Starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart httpd.service
Aktivieren von HTTP Strict Transport Security (HSTS) auf dem Webserver
Um das Zabbix Frontend vor Protocol-Downgrade-Angriffen zu schützen, empfehlen wir, die HSTS-Richtlinie auf dem Webserver zu aktivieren.
Um die HSTS-Richtlinie für Ihr Zabbix Frontend in der Apache-Konfiguration zu aktivieren, führen Sie die folgenden Schritte aus:
1. Suchen Sie die Konfigurationsdatei Ihres virtuellen Hosts:
/etc/httpd/conf/httpd.confauf RHEL-basierten Systemen/etc/apache2/sites-available/000-default.confauf Debian/Ubuntu
2. Fügen Sie die folgende Direktive zur Konfigurationsdatei Ihres virtuellen Hosts hinzu:
<VirtualHost *:*>
Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
3. Starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen:
# Auf RHEL-basierten Systemen:
systemctl restart httpd.service
# Auf Debian/Ubuntu
systemctl restart apache2.service
Erzwingen sicherer und SameSite-Session-Cookies in Zabbix
Bei der Konfiguration von Zabbix ist es wichtig, sichere und SameSite-Attribute für Session-Cookies zu erzwingen, um die Sicherheit zu erhöhen und Cross-Site-Request-Forgery-(CSRF)-Angriffe zu verhindern. Das Erzwingen von SameSite=Strict kann jedoch in bestimmten Szenarien zu Problemen führen, zum Beispiel:
- Dashboard-URL-Widgets zeigen „user not logged in“ an, wenn Iframes aus derselben Domain eingebettet werden.
- Benutzer, die auf das Dashboard über HTTP statt HTTPS zugreifen, können Anmeldeprobleme haben.
- Es ist nicht möglich, URLs zu bestimmten Zabbix-Menübereichen oder Hosts zu teilen.
Um diese Probleme zu vermeiden, sollten Benutzer die Möglichkeit haben, die SameSite-Richtlinie anzupassen.
1. Sichere Cookies
Das Setzen des Flags secure stellt sicher, dass Cookies nur über HTTPS übertragen werden, wodurch eine Offenlegung über unverschlüsselte Verbindungen verhindert wird.
Um sichere Cookies in Zabbix zu aktivieren, fügen Sie die folgende Einstellung in der Webserver-Konfiguration hinzu oder ändern Sie sie:
Für Apache:
Header always edit Set-Cookie ^(.*)$ $1;Secure
Für Nginx:
proxy_cookie_path / "/; Secure";
Stellen Sie sicher, dass auf Ihr Zabbix-Frontend über HTTPS zugegriffen wird; andernfalls werden Cookies mit dem Flag Secure nicht gesendet.
2. Konfigurieren des SameSite-Attributs
Webserver-Einstellungen können auch das SameSite-Attribut erzwingen:
Für Apache:
<IfModule mod_headers.c>
Header onsuccess edit Set-Cookie (.*) "$1; SameSite=Strict"
</IfModule>
Für Nginx (Version 1.19.3+):
proxy_cookie_flags ~ samesite=Strict; # Ersetzen Sie ~ durch 'zbx_session' für mehr Spezifität
Aktivieren der Content Security Policy (CSP) auf dem Webserver
Um das Zabbix Frontend vor Cross-Site-Scripting-(XSS)-, Dateninjektions- und ähnlichen Angriffen zu schützen, empfehlen wir, die Content Security Policy auf dem Webserver zu aktivieren. Konfigurieren Sie dazu den Webserver so, dass er den HTTP-Header zurückgibt.
Die folgende CSP-Header-Konfiguration gilt nur für die standardmäßige Zabbix Frontend-Installation und für Fälle, in denen alle Inhalte aus der Domain der Website stammen (mit Ausnahme von Subdomains). Eine andere CSP-Header-Konfiguration kann erforderlich sein, wenn Sie beispielsweise das URL-Widget so konfigurieren, dass Inhalte von Subdomains der Website oder externen Domains angezeigt werden, von OpenStreetMap auf eine andere Karten-Engine wechseln oder externe CSS-Dateien oder Widgets hinzufügen. Wenn Sie die Duo Universal Prompt-Multi-Faktor-Authentifizierung verwenden, stellen Sie sicher, dass Sie "duo.com" zur CSP-Direktive in der Konfigurationsdatei Ihres virtuellen Hosts hinzufügen.
Um CSP für Ihr Zabbix Frontend in der Apache-Konfiguration zu aktivieren, führen Sie die folgenden Schritte aus:
1. Suchen Sie die Konfigurationsdatei Ihres virtuellen Hosts:
/etc/httpd/conf/httpd.confauf RHEL-basierten Systemen/etc/apache2/sites-available/000-default.confauf Debian/Ubuntu
2. Fügen Sie die folgende Direktive zur Konfigurationsdatei Ihres virtuellen Hosts hinzu:
<VirtualHost *:*>
Header set Content-Security-Policy: "default-src 'self' *.openstreetmap.org; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self';"
</VirtualHost>
3. Starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen:
# Auf RHEL-basierten Systemen:
systemctl restart httpd.service
# Auf Debian/Ubuntu
systemctl restart apache2.service
Deaktivieren der Offenlegung von Webserver-Informationen
Zur Verbesserung der Sicherheit wird empfohlen, alle Webserver-Signaturen zu deaktivieren.
Standardmäßig gibt der Webserver die Softwaresignatur preis:

Die Signatur kann deaktiviert werden, indem die folgenden Parameter zur Apache-Konfigurationsdatei hinzugefügt werden:
ServerSignature Off
ServerTokens Prod
Die PHP-Signatur (HTTP-Header X-Powered-By) kann durch Ändern der Konfigurationsdatei php.ini deaktiviert werden (standardmäßig ist die Signatur deaktiviert):
expose_php = Off
Damit Änderungen an der Konfigurationsdatei wirksam werden, ist ein Neustart des Webservers erforderlich.
Für zusätzliche Sicherheit können Sie das Tool mod_security mit Apache verwenden (Paket libapache2-mod-security2). Dieses Tool ermöglicht das Entfernen der Server-Signatur, anstatt nur die Version aus der Server-Signatur zu entfernen. Die Server-Signatur kann auf einen beliebigen Wert geändert werden, indem nach der Installation von mod_security "SecServerSignature" auf den gewünschten Wert gesetzt wird.
Bitte lesen Sie die Dokumentation Ihres Webservers, um Hilfe zum Entfernen/Ändern von Softwaresignaturen zu erhalten.
Deaktivieren der Standard-Fehlerseiten des Webservers
Um eine Offenlegung von Informationen zu vermeiden, wird empfohlen, die Standard-Fehlerseiten zu deaktivieren.
Standardmäßig verwendet ein Webserver integrierte Fehlerseiten:

Diese Standard-Fehlerseiten sollten ersetzt/entfernt werden. Beispielsweise kann die Direktive "ErrorDocument" verwendet werden, um eine benutzerdefinierte Fehlerseite bzw. einen benutzerdefinierten Fehlertext für den Apache-Webserver zu definieren.
Bitte lesen Sie die Dokumentation Ihres Webservers, um Hilfe dazu zu erhalten, wie Standard-Fehlerseiten ersetzt/entfernt werden können.
Entfernen der Testseite des Webservers
Um eine Offenlegung von Informationen zu vermeiden, wird empfohlen, die Testseite des Webservers zu entfernen.
Standardmäßig enthält das Webroot des Apache-Webservers die Testseite index.html:

Bitte lesen Sie die Dokumentation Ihres Webservers, um Hilfe zum Entfernen der standardmäßigen Testseiten zu erhalten.
X-Frame-Options-HTTP-Antwortheader festlegen
Standardmäßig ist Zabbix mit dem Parameter Use X-Frame-Options HTTP header auf SAMEORIGIN konfiguriert.
Das bedeutet, dass Inhalte nur in einem Frame geladen werden können, der denselben Ursprung wie die Seite selbst hat.
Frontend-Elemente von Zabbix, die Inhalte von externen URLs abrufen (namentlich das URL-Dashboard-Widget), zeigen die abgerufenen Inhalte in einer Sandbox mit allen aktivierten Sandbox-Einschränkungen an.
Diese Einstellungen erhöhen die Sicherheit des Frontends von Zabbix und bieten Schutz vor XSS- und Clickjacking-Angriffen. Benutzer mit der Rolle Super admin können die Parameter Use iframe sandboxing und Use X-Frame-Options HTTP header bei Bedarf ändern. Bitte wägen Sie die Risiken und Vorteile sorgfältig ab, bevor Sie die Standardeinstellungen ändern. Es wird nicht empfohlen, das iframe-Sandboxing oder den X-Frame-Options-HTTP-Header vollständig zu deaktivieren.
Ausblenden der Datei mit der Liste gängiger Passwörter
Um die Komplexität von Brute-Force-Angriffen auf Passwörter zu erhöhen, wird empfohlen, den Zugriff auf die Datei ui/data/top_passwords.txt einzuschränken.
Diese Datei enthält eine Liste der am häufigsten verwendeten und kontextbezogenen Passwörter und verhindert, dass Benutzer solche Passwörter festlegen (wenn der Parameter Einfache, leicht zu erratende Passwörter vermeiden in der Passwortrichtlinie aktiviert ist).
Um den Zugriff auf die Datei top_passwords.txt einzuschränken, ändern Sie die Konfiguration Ihres Webservers.
Bei Apache kann der Dateizugriff mithilfe der Datei .htaccess eingeschränkt werden:
<Files "top_passwords.txt">
Order Allow,Deny
Deny from all
</Files>
Bei NGINX kann der Dateizugriff mithilfe der Direktive location eingeschränkt werden:
location = /data/top_passwords.txt {
deny all;
return 404;
}