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, aby to zrobić.

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, aby odpowiadała rzeczywistej nazwie pospolitej):

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, aby odpowiadała rzeczywistej nazwie pospolitej):

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, aby odpowiadała rzeczywistej nazwie pospolitej):

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 swojej 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 swojej 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 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 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 to konieczne):

Parametr Opis
TLS CA file Podaj pełną ścieżkę do pliku certyfikatu urzędu certyfikacji (CA) używanego do weryfikacji certyfikatu serwera.
TLS key file Podaj pełną ścieżkę do pliku klucza prywatnego klienta odpowiadającego certyfikatowi klienta.
TLS certificate file Podaj pełną ścieżkę do pliku certyfikatu klienta, jeśli wymagana jest wzajemna autentykacja TLS.
Server TLS certificate issuer Podaj nazwę wyróżniającą (DN) wystawcy, która ma zostać dopasowana do certyfikatu serwera.
Server TLS certificate subject Podaj nazwę wyróżniającą (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, potwierdzając, że we frontendzie Zabbix ani w pliku dziennika serwera Zabbix nie ma komunikatów o błędach:

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