Можно настроить безопасные соединения TLS с базами данных MySQL и PostgreSQL из:
Опции для настройки безопасных соединений с базой данных становятся доступными, когда флажок TLS шифрование отмечен на шаге Настроить соединение с БД при установке веб-интерфейса Zabbix.
Параметр | Описание | |
---|---|---|
Шифрование TLS | Установите этот флажок, чтобы активировать шифрование для соединений с базой данных Zabbix. Даже если другие параметры не заполнены, соединения будут зашифрованы TLS, если этот флажок установлен. |
|
Параметры TLS | ||
Файл TLS ключа | Укажите полный путь к действительному файлу TLS ключа. | |
Файл TLS сертификата | Укажите полный путь к действительному файлу TLS сертификата. | |
//Файл TLS источника сертификатов // | Укажите полный путь к действительному файлу источника сертификации TLS. | |
С проверкой хоста | Установите этот флажок, чтобы активировать проверку узла сети. | |
Список TLS шифров | Укажите собственный список допустимых шифров. Формат списка шифров должен соответствовать стандарту OpenSSL. Это поле доступно только для MySQL. |
Параметры TLS должны корректно указывать на файлы. Если они указывают на несуществующие или недействительные файлы, будет отображаться ошибка соединения. Если параметры TLS указывают на файлы, которые открыты для записи, веб-интерфейс сгенерирует предупреждение в отчете Информация о системе о том, что "Файлы сертификата TLS должны быть доступны только для чтения."
Настройка | Результат |
---|---|
Нет (оставьте Шифрование TLS неотмеченным) | Подключение к базе данных без шифрования. |
1. Установите только флажок Шифрование TLS | Безопасное соединение TLS с базой данных. |
1. Установите флажок Шифрование TLS 2. Укажите файл источника TLS сертификации |
Безопасное соединение TLS с базой данных; Сертификат сервера базы данных проверен и подтвержден тем, что он подписан доверенным центром. |
1. Установите флажок Шифрование TLS 2. Укажите файл источника TLS сертификации 3. Установите С проверкой хоста 4. Укажите список шифров TLS (необязательно) |
Безопасное соединение TLS с базой данных; Сертификат сервера базы данных проверяется путем сравнения имени узла сети, указанного в сертификате, с именем хоста, к которому он подключен; Подтверждено, что сертификат подписан доверенным центром. |
1. Установите флажок Шифрование TLS 2. Укажите файл TLS ключа 3. Укажите файл TLS сертификата 4. Укажите файл источника TLS сертификации 5. Установите С проверкой хоста 6. Укажите список шифров TLS (необязательно) |
Защищенные TLS соединения с базой данных устанавливаются с максимальной безопасностью. Требование к клиентской части представить свои сертификаты настраивается на стороне сервера. |
A secure connection to the database can be configured during frontend installation:
For MySQL, the Database TLS encryption checkbox is disabled, if Database host is set to localhost, because connection that uses a socket file (on Unix) or shared memory (on Windows) cannot be encrypted.
For PostgreSQL, the TLS encryption checkbox is disabled, if the value of the Database host field begins with a slash or the field is empty.
The following parameters become available in the TLS encryption in certificates mode (if both checkboxes are marked):
Parameter | Description |
---|---|
Database TLS CA file | Specify the full path to a valid TLS certificate authority (CA) file. |
Database TLS key file | Specify the full path to a valid TLS key file. |
Database TLS certificate file | Specify the full path to a valid TLS certificate file. |
Database host verification | Mark this checkbox to activate host verification. Disabled for MYSQL, because PHP MySQL library does not allow to skip the peer certificate validation step. |
Database TLS cipher list | Specify a custom list of valid ciphers. The format of the cipher list must conform to the OpenSSL standard. Available for MySQL only. |
TLS parameters must point to valid files. If they point to non-existent or invalid files, it will lead to the authorization error.
If certificate files are writable, the frontend generates a warning in the System information report that "TLS certificate files must be read-only." (displayed only if the PHP user is the owner of the certificate).
Certificates protected by passwords are not supported.
Zabbix frontend uses GUI interface to define possible options: required, verify_ca, verify_full. Specify required options in the installation wizard step Configure DB connections. These options are mapped to the configuration file (zabbix.conf.php) in the following manner:
GUI settings | Configuration file | Description | Result |
---|---|---|---|
... // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Check Database TLS encryption Leave Verify database certificate unchecked |
Enable 'required' mode. | |
... $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. Check Database TLS encryption and Verify database certificate 2. Specify path to Database TLS CA file |
Enable 'verify_ca' mode. | |
... // 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>'; ... Or: ... // 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. Check Database TLS encryption and Verify database certificate 2. Specify path to Database TLS key file 3. Specify path to Database TLS CA file 4. Specify path to Database TLS certificate file 6. Specify TLS cipher list (optional) |
Enable 'verify_full' mode for 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. Check Database TLS encryption and Verify database certificate 2. Specify path to Database TLS key file 3. Specify path to Database TLS CA file 4. Specify path to Database TLS certificate file 6. Check Database host verification |
Enable 'verify_full' mode for PostgreSQL. |
See also: Encryption configuration examples for MySQL, Encryption configuration examples for PostgreSQL.
Secure connections to the database can be configured with the respective parameters in the Zabbix server and/or proxy configuration file.
Configuration | Result |
---|---|
None | Connection to the database without encryption. |
1. Set DBTLSConnect=required | Server/proxy make a TLS connection to the database. An unencrypted connection is not allowed. |
1. Set DBTLSConnect=verify_ca 2. Set DBTLSCAFile - specify the TLS certificate authority file |
Server/proxy make a TLS connection to the database after verifying the database certificate. |
1. Set DBTLSConnect=verify_full 2. Set DBTLSCAFile - specify TLS certificate authority file |
Server/proxy make a TLS connection to the database after verifying the database certificate and the database host identity. |
1. Set DBTLSCAFile - specify TLS certificate authority file 2. Set DBTLSCertFile - specify the client public key certificate file 3. Set DBTLSKeyFile - specify the client private key file |
Server/proxy provide a client certificate while connecting to the database. |
1. Set DBTLSCipher - the list of encryption ciphers that the client permits for connections using TLS protocols up to TLS 1.2 or DBTLSCipher13 - the list of encryption ciphers that the client permits for connections using TLS 1.3 protocol |
(MySQL) TLS connection is made using a cipher from the provided list. (PostgreSQL) Setting this option will be considered as an error. |