Bezpieczne połączenie z frontendem

Przegląd

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

Konfiguracja

Domyślnie komunikacja między frontend Zabbix a serwerem Zabbix jest niezaszyfrowana. Aby zwiększyć bezpieczeństwo, włącz TLS po obu stronach. Poniżej przedstawiono przykład najprostszego sposobu wykonania tej czynności.

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 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 do rzeczywistej nazwy 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 frontend Zabbix (dostosuj wartość zabbix-frontend-node do rzeczywistej nazwy 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 frontend (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 pliku konfiguracyjnym serwera (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 WWW włącz opcję Szyfruj połączenia z interfejsu WWW (oraz, jeśli to konieczne, opcję Weryfikuj wystawcę i temat certyfikatu serwera) i wypełnij pola Plik CA TLS, Plik klucza TLS, Plik certyfikatu TLS (oraz, jeśli to konieczne, pola Wystawca certyfikatu TLS serwera i Temat certyfikatu TLS serwera):

Parametr Opis
Plik CA TLS Określ pełną ścieżkę do pliku certyfikatu urzędu certyfikacji (CA) używanego do weryfikacji certyfikatu serwera.
Plik klucza TLS Określ pełną ścieżkę do pliku prywatnego klucza klienta odpowiadającego certyfikatowi klienta.
Plik certyfikatu TLS Określ pełną ścieżkę do pliku certyfikatu klienta, jeśli wymagane jest wzajemne uwierzytelnianie TLS.
Wystawca certyfikatu TLS serwera Określ nazwę wyróżniającą (DN) wystawcy, która ma odpowiadać wystawcy certyfikatu serwera.
Temat certyfikatu TLS serwera Określ nazwę wyróżniającą (DN) tematu, która ma odpowiadać tematowi certyfikatu serwera.

W istniejących instalacjach edytuj następujące parametry w pliku konfiguracyjnym frontend:

$ZBX_SERVER_TLS['ACTIVE'] = 'true';
$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 brak komunikatów o błędach w frontend Zabbix lub w pliku dziennika serwera Zabbix:

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