Ta sekcja zawiera kroki konfiguracyjne i przykłady konfiguracji Zabbix do bezpiecznych połączeń TLS pomiędzy:
Baza danych | Komponenty Zabbix |
---|---|
MySQL | Frontend Zabbix, Serwer Zabbix, Proxy Zabbix |
PostgreSQL | Frontend Zabbix, Serwer Zabbix, Proxy Zabbix |
Aby skonfigurować szyfrowane połączenie w systemie DBMS, zapoznaj się z oficjalną dokumentacją producenta:
Wszystkie przykłady są oparte na wydaniach GA MySQL CE (8.0) i PgSQL (13) dostępnych za pośrednictwem oficjalnych repozytoriów przy użyciu AlmaLinux 8.
Do konfiguracji szyfrowania wymagane są następujące elementy:
Zaleca się unikanie systemów operacyjnych znajdujących się w fazie końca wsparcia, szczególnie w przypadku nowych instalacji
Ustawienie tej opcji wymusza użycie połączenia TLS do bazy danych z serwera/proxy Zabbix i frontendu do bazy danych:
Bezpieczne połączenie do bazy danych można skonfigurować podczas instalacji frontendu:
Dla MySQL, pole wyboru Database TLS encryption jest wyłączone, jeśli Host bazy danych jest ustawiony na localhost, ponieważ połączenie, które korzysta z pliku gniazda (na Unixie) lub pamięci współdzielonej (na Windows), nie może być szyfrowane.
Dla PostgreSQL, pole wyboru Szyfrowanie bazy danych TLS jest wyłączone, jeśli wartość pola Host bazy danych zaczyna się od ukośnika lub pole jest puste.
W trybie szyfrowania TLS z certyfikatem dostępne stają się następujące parametry (jeśli oba pola wyboru są zaznaczone):
Parametr | Opis |
---|---|
Plik TLS CA bazy danych | Podaj pełną ścieżkę do prawidłowego pliku certyfikatu CA (Certificate Authority). |
Plik klucza TLS bazy danych | Podaj pełną ścieżkę do prawidłowego pliku klucza TLS. |
Database TLS certificate file | Podaj pełną ścieżkę do prawidłowego pliku certyfikatu TLS. |
Weryfikacja hosta bazy danych | Zaznacz to pole wyboru, aby aktywować weryfikację hosta. Wyłączone dla MYSQL, ponieważ biblioteka PHP MySQL nie pozwala na pominięcie kroku walidacji certyfikatu rówieśnika. |
Lista szyfrów TLS bazy danych | Podaj niestandardową listę prawidłowych szyfrów. Format listy szyfrów musi być zgodny ze standardem OpenSSL. Dostępne tylko dla MySQL. |
Parametry TLS muszą wskazywać na prawidłowe pliki. Jeśli wskazują na nieistniejące lub nieprawidłowe pliki, spowoduje to błąd autoryzacji.
Jeśli pliki certyfikatów są zapisywalne, frontend wyświetla ostrzeżenie w raporcie Informacje o systemie, że "Pliki certyfikatów TLS bazy danych muszą być tylko do odczytu." (wyświetlane tylko wtedy, gdy użytkownik PHP jest właścicielem certyfikatu).
Certyfikaty zabezpieczone hasłami nie są obsługiwane.
Frontend Zabbix używa interfejsu GUI do definiowania możliwych opcji: required, verify_ca, verify_full. Określ wymagane opcje w kroku kreatora instalacji Konfiguruj połączenie DB. Opcje te są mapowane na plik konfiguracyjny (zabbix.conf.php) w następujący sposób:
Ustawienia GUI | Plik konfiguracyjny | Opis | Rezultat |
---|---|---|---|
... // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Zaznacz Szyfrowanie bazy danych TLS Pozostaw Zweryfikuj certyfikat bazy danych niezaznaczone |
Włącz tryb 'required'. | |
... $DB['ENCRYPTION'] = true;\\ $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem'; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
1. Zaznacz Szyfrowanie bazy danych TLS i Zweryfikuj certyfikat bazy danych 2. Podaj ścieżkę do pliku w parametrze Plik TLS CA bazy danych |
Włącz tryb 'verify_ca'. | |
... // Used for TLS connection with strictly defined Cipher list. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = '<cipher_list>'; ... Lub: ... // Used for TLS connection without Cipher list defined - selected by MySQL server $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ''; ... |
1. Zaznacz Szyfrowanie bazy danych TLS i Zweryfikuj certyfikat bazy danych 2. Podaj ścieżkę do pliku w parametrze Plik klucza TLS bazy danych 3. Podaj ścieżkę do pliku w parametrze Plik TLS CA bazy danych 4. Podaj ścieżkę do pliku w parametrze Plik certyfikatu TLS bazy danych 5. Podaj listę szyfrów TLS (opcjonalnie) |
Włącz tryb 'verify_full' dla MySQL. | |
... $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ' '; ... |
1. Zaznacz Szyfrowanie bazy danych TLS i Zweryfikuj certyfikat bazy danych 2. Podaj ścieżkę do pliku w parametrze Plik klucza TLS bazy danych 3. Podaj ścieżkę do pliku w parametrze Plik TLS CA bazy danych 4. Podaj ścieżkę do pliku w parametrze Plik certyfikatu TLS bazy danych 5. Zaznacz Weryfikacja hosta bazy danych |
Włącz tryb 'verify_full' dla PostgreSQL. |
Zobacz także: Przykłady konfiguracji szyfrowania dla MySQL, Przykłady konfiguracji szyfrowania dla PostgreSQL.
Bezpieczne połączenia z bazą danych mogą być skonfigurowane za pomocą odpowiednich parametrów w pliku konfiguracyjnym serwera i/lub proxy Zabbix.
Konfiguracja | Rezultat |
---|---|
Brak | Połączenie z bazą danych bez szyfrowania. |
1. Ustaw DBTLSConnect=required | Serwer/proxy nawiązuje połączenie TLS z bazą danych. Połączenie nieszyfrowane nie jest dozwolone. |
1. Ustaw DBTLSConnect=verify_ca 2. Ustaw DBTLSCAFile - podaj plik urzędu certyfikacji TLS |
Serwer/proxy nawiązuje połączenie TLS z bazą danych po weryfikacji certyfikatu bazy danych. |
1. Ustaw DBTLSConnect=verify_full 2. Ustaw DBTLSCAFile - podaj plik urzędu certyfikacji TLS |
Serwer/proxy nawiązuje połączenie TLS z bazą danych po weryfikacji certyfikatu bazy danych i tożsamości hosta bazy danych. |
1. Ustaw DBTLSCAFile - podaj plik urzędu certyfikacji TLS 2. Ustaw DBTLSCertFile - podaj plik certyfikatu klucza publicznego klienta 3. Ustaw DBTLSKeyFile - podaj plik prywatnego klucza klienta |
Serwer/proxy dostarcza certyfikat klienta podczas łączenia się z bazą danych. |
1. Ustaw DBTLSCipher - listę szyfrów, które klient dopuszcza dla połączeń przy użyciu protokołów TLS do wersji 1.2 lub DBTLSCipher13 - listę szyfrów, które klient dopuszcza dla połączeń przy użyciu protokołu TLS 1.3 |
(MySQL) Połączenie TLS jest nawiązywane przy użyciu szyfru z podanej listy. (PostgreSQL) Ustawienie tej opcji będzie traktowane jako błąd. |