2 Настройка шифрования 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 неотмеченным

Сервер

Чтобы включить шифрование только на транспортном уровне для соединений между сервером и базой данных, настройте /etc/zabbix/zabbix_server.conf:

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...

Шифрование с проверкой центра сертификации

Веб-интерфейс

Чтобы включить шифрование с проверкой центра сертификации для соединений между веб-интерфейсом Zabbix и базой данных:

  • Установите флажки Database TLS encryption и Verify database certificate
  • Укажите путь к Database TLS CA file

В качестве альтернативы это можно задать в /etc/zabbix/web/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 и базой данных, настройте /etc/zabbix/zabbix_server.conf:

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/ssl/pgsql/root.crt
...

Шифрование с полной проверкой

Веб-интерфейс

Чтобы включить шифрование с использованием сертификата и проверку подлинности узла сети базы данных для соединений между веб-интерфейсом Zabbix и базой данных:

  • Установите флажки Database TLS encryption и Verify database certificate
  • Укажите путь к Database TLS key file
  • Укажите путь к Database TLS CA file
  • Укажите путь к Database TLS certificate file
  • Установите флажок Database host verification

В качестве альтернативы это можно задать в /etc/zabbix/web/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 и базой данных, настройте /etc/zabbix/zabbix_server.conf:

...
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
...