3 Webserver

Überblick

Dieser Abschnitt enthält Best Practices für die sichere Einrichtung des Webservers.

Erzwingen der Weiterleitung der Root-URL zu Zabbix SSL

Fügen Sie auf RHEL-basierten Systemen einen virtuellen Host zur Apache-Konfiguration (/etc/httpd/conf/httpd.conf) hinzu und legen Sie eine permanente Weiterleitung für das Dokumenten-Root 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 anzuwenden:

systemctl restart httpd.service

Aktivieren von HTTP Strict Transport Security (HSTS) auf dem Webserver

Um das Zabbix Frontend vor Protokoll-Downgrade-Angriffen zu schützen, empfehlen wir, die HSTS-Richtlinie auf dem Webserver zu aktivieren.

Gehen Sie wie folgt vor, um die HSTS-Richtlinie für Ihr Zabbix Frontend in der Apache-Konfiguration zu aktivieren:

1. Suchen Sie die Konfigurationsdatei Ihres virtuellen Hosts:

  • /etc/httpd/conf/httpd.conf auf RHEL-basierten Systemen
  • /etc/apache2/sites-available/000-default.conf auf 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 anzuwenden:

# Auf RHEL-basierten Systemen:
systemctl restart httpd.service

# Auf Debian/Ubuntu
systemctl restart apache2.service

Erzwingen von sicheren 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 „Benutzer nicht angemeldet“ an, wenn iframes derselben Domain eingebettet werden.
  • Benutzer, die über HTTP statt über HTTPS auf das Dashboard zugreifen, können Anmeldeprobleme haben.
  • URLs zu bestimmten Zabbix-Menüabschnitten oder Hosts können nicht geteilt werden.

Um diese Probleme zu entschärfen, 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 und nicht über unverschlüsselte Verbindungen offengelegt werden.

Um sichere Cookies in Zabbix zu aktivieren, fügen Sie die folgende Einstellung in der Webserver-Konfiguration hinzu oder ändern Sie sie entsprechend:

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. Konfiguration 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 ~ für mehr Genauigkeit durch 'zbx_session'

Aktivieren der Content Security Policy (CSP) auf dem Webserver

Um das Zabbix Frontend vor Cross Site Scripting (XSS), Dateninjektion 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 Standardinstallation des Zabbix Frontends und für Fälle, in denen alle Inhalte von der Domain der Website stammen (ausgenommen Subdomains). Eine andere CSP-Header-Konfiguration kann erforderlich sein, wenn Sie beispielsweise das Widget URL so konfigurieren, dass Inhalte von den Subdomains der Website oder von externen Domains angezeigt werden, von OpenStreetMap zu einer anderen Karten-Engine wechseln oder externes CSS oder Widgets hinzufügen. Wenn Sie für die Multi-Faktor-Authentifizierung die Methode Duo Universal Prompt 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, gehen Sie wie folgt vor:

1. Suchen Sie die Konfigurationsdatei Ihres virtuellen Hosts:

  • /etc/httpd/conf/httpd.conf auf RHEL-basierten Systemen
  • /etc/apache2/sites-available/000-default.conf auf 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 anzuwenden:

# 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 legt der Webserver die Software-Signatur offen:

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 Werkzeug mod_security mit Apache verwenden (Paket libapache2-mod-security2). Mit diesem Werkzeug kann die Server-Signatur vollständig entfernt werden, anstatt nur die Versionsangabe aus der Server-Signatur zu entfernen. Die Server-Signatur kann nach der Installation von mod_security durch Setzen von "SecServerSignature" auf einen beliebigen gewünschten Wert geändert werden.

Weitere Informationen zum Entfernen/Ändern von Software-Signaturen finden Sie in der Dokumentation Ihres Webservers.

Standard-Fehlerseiten des Webservers deaktivieren

Um die 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. Zum Beispiel kann die Direktive "ErrorDocument" verwendet werden, um für den Apache-Webserver eine benutzerdefinierte Fehlerseite bzw. einen benutzerdefinierten Fehlertext festzulegen.

Bitte lesen Sie in der Dokumentation Ihres Webservers nach, wie Sie Standard-Fehlerseiten ersetzen/entfernen können.

Entfernen der Testseite des Web-Servers

Um die Offenlegung von Informationen zu vermeiden, wird empfohlen, die Testseite des Web-Servers zu entfernen.

Standardmäßig enthält das Webroot des Apache-Web-Servers die Testseite index.html:

Bitte lesen Sie in der Dokumentation Ihres Web-Servers nach, um Hilfe dazu zu finden, wie Standard-Testseiten entfernt werden können.

X-Frame-Options-HTTP-Response-Header festlegen

Standardmäßig ist Zabbix so konfiguriert, dass der Parameter Use X-Frame-Options HTTP header auf SAMEORIGIN gesetzt ist. Das bedeutet, dass Inhalte nur in einem Frame geladen werden können, der dieselbe Herkunft wie die Seite selbst hat.

Zabbix-Frontend-Elemente, die Inhalte von externen URLs abrufen (nämlich das URL-Dashboard-Widget), zeigen die abgerufenen Inhalte in einer Sandbox mit aktivierten vollständigen Sandbox-Einschränkungen an.

Diese Einstellungen erhöhen die Sicherheit des Zabbix-Frontend 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, iframe-Sandboxing oder den X-Frame-Options-HTTP-Header vollständig zu deaktivieren.

Verbergen 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 kontextspezifischen Passwörter und verhindert, dass Benutzer solche Passwörter festlegen können (wenn der Parameter 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.

Unter Apache kann der Dateizugriff mit der Datei .htaccess eingeschränkt werden:

<Files "top_passwords.txt">
    Order Allow,Deny
    Deny from all
</Files>

Unter NGINX kann der Dateizugriff mit der Direktive location eingeschränkt werden:

location = /data/top_passwords.txt {
    deny all;
    return 404;
}