[comment]: # translation:outdated

[comment]: # ({f4bccb67-40cfdec2})
# 3 Serwer WWW

[comment]: # ({/f4bccb67-40cfdec2})

[comment]: # ({2ff4365d-129e34f5})
#### Przegląd

Ta sekcja zawiera najlepsze praktyki dotyczące bezpiecznej konfiguracji serwera WWW.

[comment]: # ({/2ff4365d-129e34f5})

[comment]: # ({a38dec5b-bb3706f4})
#### 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.

```ini
# Dodaj wiersze:

<VirtualHost *:*>
    ServerName example.com
    Redirect permanent / https://example.com
</VirtualHost>
```

Uruchom ponownie usługę Apache, aby zastosować zmiany:

```bash
systemctl restart httpd.service
```

[comment]: # ({/a38dec5b-bb3706f4})

[comment]: # ({3d62d250-c7ee0bb2})
#### Włączanie HTTP Strict Transport Security (HSTS) na serwerze WWW

Aby chronić frontend Zabbix przed atakami polegającymi na obniżeniu wersji protokołu, zalecamy włączenie polityki [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) na serwerze WWW.

Aby włączyć politykę HSTS dla swojego frontend Zabbix w konfiguracji Apache, wykonaj następujące kroki:

1\. Znajdź plik konfiguracyjny swojego wirtualnego hosta:

-   `/etc/httpd/conf/httpd.conf` w systemach opartych na RHEL
-   `/etc/apache2/sites-available/000-default.conf` w Debian/Ubuntu

2\. Dodaj następującą dyrektywę do pliku konfiguracyjnego swojego wirtualnego hosta:

```ini
<VirtualHost *:*>
    Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
```

3\. Uruchom ponownie usługę Apache, aby zastosować zmiany:

```bash
# W systemach opartych na RHEL:
systemctl restart httpd.service

# W Debian/Ubuntu
systemctl restart apache2.service
```

[comment]: # ({/3d62d250-c7ee0bb2})

[comment]: # ({09df8737-8057bf9f})
#### Wymuszanie bezpiecznych i SameSite plików cookie sesji w Zabbix

Podczas konfigurowania Zabbix istotne jest wymuszenie atrybutów secure i SameSite dla plików cookie 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 wyświetlają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 pliki cookie

Ustawienie flagi ``secure`` zapewnia, że pliki cookie są przesyłane wyłącznie przez HTTPS, co zapobiega ich ujawnieniu przez nieszyfrowane połączenia.

Aby włączyć bezpieczne pliki cookie 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 pliki cookie 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

[comment]: # ({/09df8737-8057bf9f})

[comment]: # ({0291801e-55d3532e})
#### 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.
Aby to zrobić, skonfiguruj serwer WWW tak, aby zwracał [nagłówek HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy).

::: noteimportant
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*](/manual/web_interface/frontend_sections/dashboards/widgets/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 wieloskładnikowego Duo Universal Prompt [multi-factor authentication](/manual/web_interface/frontend_sections/users/authentication/mfa), 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.conf` w systemach opartych na RHEL
-   `/etc/apache2/sites-available/000-default.conf` w Debian/Ubuntu

2\. Dodaj następującą dyrektywę do pliku konfiguracyjnego swojego wirtualnego hosta:

```ini
<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:

```bash
# W systemach opartych na RHEL:
systemctl restart httpd.service

# W Debian/Ubuntu
systemctl restart apache2.service
```

[comment]: # ({/0291801e-55d3532e})

[comment]: # ({cc2b15aa-cd09dcd1})
#### 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:

![](../../../../assets/en/manual/installation/requirements/software_signature.png)

Sygnaturę można wyłączyć, dodając następujące parametry do pliku konfiguracyjnego Apache:

```ini
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):

```ini
expose_php = Off
```

Aby zastosować zmiany w plikach konfiguracyjnych, 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*.

Zapoznaj się z dokumentacją swojego serwera WWW, aby znaleźć informacje o tym, jak usuwać lub zmieniać sygnatury oprogramowania.

[comment]: # ({/cc2b15aa-cd09dcd1})

[comment]: # ({2053690e-720052da})
#### 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:

![](../../../../assets/en/manual/installation/requirements/error_page_text.png)

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, należy zapoznać się z dokumentacją swojego serwera WWW.

[comment]: # ({/2053690e-720052da})

[comment]: # ({5dd327a4-ba1547c0})
#### Usuwanie strony testowej serwera WWW

Aby uniknąć ujawnienia informacji, zaleca się usunięcie strony testowej serwera WWW.

Domyślnie katalog główny serwera WWW Apache zawiera stronę testową `index.html`:

![](../../../../assets/en/manual/installation/requirements/test_page.png)

Aby uzyskać pomoc dotyczącą usuwania domyślnych stron testowych, zapoznaj się z dokumentacją swojego serwera WWW.

[comment]: # ({/5dd327a4-ba1547c0})

[comment]: # ({47163d34-7e4e4a45})
#### Ustaw nagłówek 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 ten sam origin co sama strona.

Elementy frontend Zabbix, które pobierają zawartość z zewnętrznych adresów URL (a konkretnie [widget URL pulpitu](/manual/web_interface/frontend_sections/dashboards/widgets/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 [zmodyfikować](/manual/web_interface/frontend_sections/administration/general#security) parametry *Use iframe sandboxing* oraz *Use X-Frame-Options HTTP header*.
Przed zmianą domyślnych ustawień należy dokładnie rozważyć ryzyko i korzyści.
Nie zaleca się całkowitego wyłączania piaskownicy iframe ani nagłówka HTTP X-Frame-Options.

[comment]: # ({/47163d34-7e4e4a45})

[comment]: # ({35ac3238-3f76ae70})
#### 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 specyficznych dla kontekstu haseł i uniemożliwia użytkownikom ustawianie takich haseł (jeśli parametr *Avoid easy-to-guess passwords* jest włączony w [polityce haseł](/manual/web_interface/frontend_sections/users/authentication#internal-authentication)).

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`:

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

W NGINX dostęp do pliku można ograniczyć za pomocą dyrektywy `location`:

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

[comment]: # ({/35ac3238-3f76ae70})
