Настройка шифрования PostgreSQL
Обзор
В этом разделе приведено несколько примеров настройки шифрования для CentOS 8.2 и PostgreSQL 13.
Соединение между веб-интерфейсом Zabbix и PostgreSQL не может быть зашифровано (параметры в GUI отключены), если значение поля Database host начинается со слэша или поле пустое.
Предварительные требования
Установите базу данных PostgreSQL, используя официальный репозиторий.
PostgreSQL по умолчанию не настроен на прием TLS-соединений.
Следуйте инструкциям из документации PostgreSQL по
подготовке сертификатов с помощью postgresql.conf, а
также по
контролю доступа пользователей
через ph_hba.conf.
По умолчанию сокет PostgreSQL привязан к localhost, поэтому для удаленных сетевых подключений необходимо разрешить прослушивание на реальном сетевом интерфейсе.
Параметры PostgreSQL для всех режимов могут выглядеть так:
/var/lib/pgsql/13/data/postgresql.conf:
...
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
ssl_prefer_server_ciphers = on
ssl_min_protocol_version = 'TLSv1.3'
...
Для контроля доступа измените /var/lib/pgsql/13/data/pg_hba.conf:
...
### require
hostssl all all 0.0.0.0/0 md5
### verify CA
hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca
### verify full
hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
...
Шифрование только для передачи данных
Веб-интерфейс
Чтобы включить шифрование только для передачи данных для соединений между веб-интерфейсом Zabbix и базой данных:
- Установите флажок Database TLS encryption
- Оставьте Verify database certificate снятым

Сервер
Чтобы включить шифрование только транспортного уровня для соединений между сервером и базой данных, отредактируйте файл конфигурации сервера:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
Шифрование с проверкой центра сертификации
Веб-интерфейс
Чтобы включить шифрование с проверкой центра сертификации для соединений между веб-интерфейсом Zabbix и базой данных:
- Установите флажки Шифрование TLS для базы данных и Проверять сертификат базы данных
- Укажите путь к файлу центра сертификации TLS для базы данных

Также это можно настроить в файле конфигурации веб-интерфейса (zabbix.conf.php):
...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Сервер
Чтобы включить шифрование с проверкой сертификата для соединений между сервером Zabbix и базой данных, отредактируйте файл конфигурации сервера:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/ssl/pgsql/root.crt
...
Шифрование с полной проверкой
Веб-интерфейс
Чтобы включить шифрование с помощью сертификата и проверку идентичности узла базы данных для соединений между веб-интерфейсом Zabbix и базой данных:
- Установите флажки Шифрование TLS базы данных и Проверять сертификат базы данных
- Укажите путь к файлу ключа TLS базы данных
- Укажите путь к файлу центра сертификации TLS базы данных
- Укажите путь к файлу сертификата TLS базы данных
- Установите флажок Проверять узел базы данных

Также это можно настроить в файле конфигурации веб-интерфейса (zabbix.conf.php):
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...
Сервер
Чтобы включить шифрование с проверкой сертификата и идентификации узла базы данных для подключений между сервером Zabbix и базой данных, отредактируйте файл конфигурации сервера:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_full
DBTLSCAFile=/etc/ssl/pgsql/root.crt
DBTLSCertFile=/etc/ssl/pgsql/client.crt
DBTLSKeyFile=/etc/ssl/pgsql/client.key
...