6 Bezpieczne połączenie z frontendem

Przegląd

Ta sekcja zawiera kroki konfiguracji Zabbix oraz przykłady konfiguracji dla bezpiecznych połączeń TLS między frontend Zabbix a serwer Zabbix.

Konfiguracja

Domyślnie komunikacja między frontendem Zabbix a serwerem Zabbix nie jest szyfrowana. Aby zwiększyć bezpieczeństwo, włącz TLS po obu stronach. Poniżej znajduje się przykład najprostszego sposobu wykonania tej konfiguracji.

1. Wygeneruj certyfikaty i klucze.

Utwórz katalog roboczy:

sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl

Utwórz certyfikat CA (dostosuj wartość MyZabbixCA do rzeczywistej nazwy common name):

sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"

Wygeneruj klucz prywatny i certyfikat dla serwera Zabbix (dostosuj wartość zabbix-server.example.com do rzeczywistej nazwy common name):

sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt

Wygeneruj klucz prywatny i certyfikat dla frontendu Zabbix (dostosuj wartość zabbix-frontend-node do rzeczywistej nazwy common name):

sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt

2. Ustaw odpowiednie uprawnienia.

Dla serwera Zabbix (dostosuj właściciela/grupę zgodnie z użytkownikiem demona serwera Zabbix w Twojej dystrybucji):

sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crt

Dla frontendu (dostosuj właściciela/grupę zgodnie z użytkownikiem serwera WWW w Twojej dystrybucji):

sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt

3. Skonfiguruj serwer Zabbix.

W pliku zabbix_server.conf dodaj:

TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Opcjonalnie:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node

Następnie uruchom ponownie serwer:

sudo systemctl restart zabbix-server

4. Skonfiguruj frontend Zabbix.

Podczas instalacji interfejsu webowego włącz opcję Encrypt connections from Web interface (oraz opcję Verify server certificate issuer and subject, jeśli jest to konieczne) i wypełnij pola TLS CA file, TLS key file, TLS certificate file (oraz pola Server TLS certificate issuer i Server TLS certificate subject, jeśli jest to konieczne):

Parameter Description
TLS CA file Określ pełną ścieżkę do pliku certyfikatu urzędu certyfikacji (CA) używanego do weryfikacji certyfikatu serwera.
TLS key file Określ pełną ścieżkę do pliku klucza prywatnego klienta odpowiadającego certyfikatowi klienta.
TLS certificate file Określ pełną ścieżkę do pliku certyfikatu klienta, jeśli wymagana jest wzajemna autoryzacja TLS.
Server TLS certificate issuer Określ wyróżnioną nazwę (DN) wystawcy, która ma zostać dopasowana do certyfikatu serwera.
Server TLS certificate subject Określ wyróżnioną nazwę (DN) podmiotu, która ma zostać dopasowana do certyfikatu serwera.

W istniejących instalacjach edytuj następujące pola w zabbix.conf.php:

$ZBX_SERVER_TLS['ACTIVE'] = '1';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// Opcjonalnie:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';

5. Zweryfikuj szyfrowanie, upewniając się, że w pliku dziennika frontendu Zabbix lub serwera Zabbix nie ma komunikatów o błędach:

tail -f /var/log/zabbix/zabbix_server.log