- Zabezpieczanie serwera WWW
- Przegląd
- Wymuszanie przekierowania adresu URL root do Zabbix SSL
- Włączanie HTTP Strict Transport Security (HSTS) na serwerze WWW
- Wymuszanie bezpiecznych i SameSite ciasteczek sesji w Zabbix
- Włączanie Content Security Policy (CSP) na serwerze WWW
- Wyłączanie ujawniania informacji o serwerze WWW
- Wyłączanie domyślnych stron błędów serwera WWW
- Usuwanie strony testowej serwera WWW
- Ustaw nagłówek odpowiedzi HTTP X-Frame-Options
- Ukrywanie pliku z listą popularnych haseł
Zabezpieczanie serwera WWW
Przegląd
Ta sekcja zawiera najlepsze praktyki dotyczące bezpiecznej konfiguracji serwera WWW.
Wymuszanie przekierowania adresu URL root do Zabbix SSL
W systemach opartych na RHEL dodaj wirtualny host do konfiguracji Apache (/etc/httpd/conf/httpd.conf) i ustaw trwałe przekierowanie katalogu głównego dokumentów na adres URL Zabbix SSL.
Zwróć uwagę, że example.com należy zastąpić rzeczywistą nazwą serwera.
# Dodaj wiersze:
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
Uruchom ponownie usługę Apache, aby zastosować zmiany:
systemctl restart httpd.service
Włączanie HTTP Strict Transport Security (HSTS) na serwerze WWW
Aby chronić frontend Zabbixa przed atakami polegającymi na obniżeniu wersji protokołu, zalecamy włączenie polityki HSTS na serwerze WWW.
Aby włączyć politykę HSTS dla swojego frontendu Zabbixa w konfiguracji Apache, wykonaj następujące kroki:
1. Znajdź plik konfiguracyjny swojego wirtualnego hosta:
/etc/httpd/conf/httpd.confw systemach opartych na RHEL/etc/apache2/sites-available/000-default.confw Debianie/Ubuntu
2. Dodaj następującą dyrektywę do pliku konfiguracyjnego swojego wirtualnego hosta:
<VirtualHost *:*>
Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
3. Uruchom ponownie usługę Apache, aby zastosować zmiany:
# W systemach opartych na RHEL:
systemctl restart httpd.service
# W Debianie/Ubuntu
systemctl restart apache2.service
Wymuszanie bezpiecznych i SameSite ciasteczek sesji w Zabbix
Podczas konfiguracji Zabbix istotne jest wymuszenie atrybutów secure i SameSite dla ciasteczek sesji, aby zwiększyć bezpieczeństwo i zapobiec atakom typu cross-site request forgery (CSRF). Jednak wymuszenie SameSite=Strict może powodować problemy w niektórych scenariuszach, takich jak:
- Widżety URL na pulpicie pokazujące komunikat „user not logged in” podczas osadzania ramek iframe z tej samej domeny.
- Użytkownicy uzyskujący dostęp do pulpitu przez HTTP zamiast HTTPS mogą napotkać problemy z logowaniem.
- Brak możliwości udostępniania adresów URL do określonych sekcji menu Zabbix lub hostów.
Aby ograniczyć te problemy, użytkownicy powinni mieć możliwość dostosowania polityki SameSite.
1. Bezpieczne ciasteczka
Ustawienie flagi secure zapewnia, że ciasteczka są przesyłane wyłącznie przez HTTPS, co zapobiega ich ujawnieniu przez nieszyfrowane połączenia.
Aby włączyć bezpieczne ciasteczka w Zabbix, dodaj lub zmodyfikuj następujące ustawienie w konfiguracji serwera WWW:
Dla Apache:
Header always edit Set-Cookie ^(.*)$ $1;Secure
Dla Nginx:
proxy_cookie_path / "/; Secure";
Upewnij się, że frontend Zabbix jest dostępny przez HTTPS; w przeciwnym razie ciasteczka z flagą Secure nie będą wysyłane.
2. Konfigurowanie atrybutu SameSite
Ustawienia serwera WWW mogą również wymuszać atrybut SameSite:
Dla Apache:
<IfModule mod_headers.c>
Header onsuccess edit Set-Cookie (.*) "$1; SameSite=Strict"
</IfModule>
Dla Nginx (wersja 1.19.3+):
proxy_cookie_flags ~ samesite=Strict; # Replace ~ with 'zbx_session' for specificity
Włączanie Content Security Policy (CSP) na serwerze WWW
Aby chronić frontend Zabbix przed Cross Site Scripting (XSS), wstrzykiwaniem danych i podobnymi atakami, zalecamy włączenie Content Security Policy na serwerze WWW. W tym celu skonfiguruj serwer WWW tak, aby zwracał nagłówek HTTP.
Poniższa konfiguracja nagłówka CSP dotyczy wyłącznie domyślnej instalacji frontend Zabbix oraz przypadków, gdy cała zawartość pochodzi z domeny witryny (z wyłączeniem subdomen). Inna konfiguracja nagłówka CSP może być wymagana, jeśli na przykład konfigurujesz widżet URL do wyświetlania zawartości z subdomen witryny lub domen zewnętrznych, przełączasz się z OpenStreetMap na inny silnik map, albo dodajesz zewnętrzny CSS lub widżety. Jeśli używasz metody uwierzytelniania Duo Universal Prompt wieloskładnikowego, upewnij się, że dodasz "duo.com" do dyrektywy CSP w pliku konfiguracyjnym wirtualnego hosta.
Aby włączyć CSP dla frontend Zabbix w konfiguracji Apache, wykonaj następujące kroki:
1. Znajdź plik konfiguracyjny swojego wirtualnego hosta:
/etc/httpd/conf/httpd.confw systemach opartych na RHEL/etc/apache2/sites-available/000-default.confw Debian/Ubuntu
2. Dodaj następującą dyrektywę do pliku konfiguracyjnego swojego wirtualnego hosta:
<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. Uruchom ponownie usługę Apache, aby zastosować zmiany:
# On RHEL-based systems:
systemctl restart httpd.service
# On Debian/Ubuntu
systemctl restart apache2.service
Wyłączanie ujawniania informacji o serwerze WWW
Aby poprawić bezpieczeństwo, zaleca się wyłączenie wszystkich sygnatur serwera WWW.
Domyślnie serwer WWW ujawnia sygnaturę oprogramowania:

Sygnaturę można wyłączyć, dodając następujące parametry do pliku konfiguracyjnego Apache:
ServerSignature Off
ServerTokens Prod
Sygnaturę PHP (nagłówek HTTP X-Powered-By) można wyłączyć, zmieniając plik konfiguracyjny php.ini (domyślnie sygnatura jest wyłączona):
expose_php = Off
Aby zmiany w pliku konfiguracyjnym zostały zastosowane, wymagane jest ponowne uruchomienie serwera WWW.
Dla dodatkowego bezpieczeństwa można użyć narzędzia mod_security z Apache (pakiet libapache2-mod-security2). To narzędzie umożliwia usunięcie sygnatury serwera zamiast usuwania tylko wersji z sygnatury serwera. Sygnaturę serwera można zmienić na dowolną wartość, ustawiając "SecServerSignature" na wybraną wartość po zainstalowaniu mod_security.
Aby uzyskać pomoc dotyczącą usuwania lub zmiany sygnatur oprogramowania, należy zapoznać się z dokumentacją swojego serwera WWW.
Wyłączanie domyślnych stron błędów serwera WWW
Aby uniknąć ujawnienia informacji, zaleca się wyłączenie domyślnych stron błędów.
Domyślnie serwer WWW używa wbudowanych stron błędów:

Te domyślne strony błędów powinny zostać zastąpione/usunięte. Na przykład dyrektywa "ErrorDocument" może zostać użyta do zdefiniowania niestandardowej strony/tekstu błędu dla serwera WWW Apache.
Aby uzyskać pomoc dotyczącą zastępowania/usuwania domyślnych stron błędów, zapoznaj się z dokumentacją swojego serwera WWW.
Usuwanie strony testowej serwera WWW
Aby uniknąć ujawnienia informacji, zaleca się usunięcie strony testowej serwera WWW.
Domyślnie katalog główny Apache webroot zawiera stronę testową index.html:

Zapoznaj się z dokumentacją swojego serwera WWW, aby znaleźć informacje o tym, jak usunąć domyślne strony testowe.
Ustaw nagłówek odpowiedzi HTTP X-Frame-Options
Domyślnie Zabbix jest skonfigurowany z parametrem Use X-Frame-Options HTTP header ustawionym na SAMEORIGIN.
Oznacza to, że zawartość może być ładowana tylko w ramce, która ma to samo pochodzenie co sama strona.
Elementy frontend Zabbix, które pobierają zawartość z zewnętrznych adresów URL (a konkretnie widżet dashboard widget URL), wyświetlają pobraną zawartość w piaskownicy z włączonymi wszystkimi ograniczeniami piaskownicy.
Te ustawienia zwiększają bezpieczeństwo frontend Zabbix i zapewniają ochronę przed atakami XSS oraz clickjacking. Użytkownicy Super admin mogą w razie potrzeby modyfikować parametry Use iframe sandboxing oraz Use X-Frame-Options HTTP header. Przed zmianą ustawień domyślnych należy dokładnie rozważyć ryzyko i korzyści. Całkowite wyłączenie piaskownicy iframe lub nagłówka HTTP X-Frame-Options nie jest zalecane.
Ukrywanie pliku z listą popularnych haseł
Aby zwiększyć złożoność ataków brute force na hasła, zaleca się ograniczenie dostępu do pliku ui/data/top_passwords.txt.
Plik ten zawiera listę najczęściej używanych oraz zależnych od kontekstu haseł i uniemożliwia użytkownikom ustawianie takich haseł (jeśli parametr Avoid easy-to-guess passwords jest włączony w polityce haseł).
Aby ograniczyć dostęp do pliku top_passwords.txt, zmodyfikuj konfigurację swojego serwera WWW.
W Apache dostęp do pliku można ograniczyć za pomocą pliku .htaccess:
<Files "top_passwords.txt">
Order Allow,Deny
Deny from all
</Files>
W NGINX dostęp do pliku można ograniczyć za pomocą dyrektywy location:
location = /data/top_passwords.txt {
deny all;
return 404;
}