2. Настройка шифрования для PostgreSQL

Обзор

В этом разделе предоставлено несколько примеров настроек шифрования для CentOS 8.2 и PostgreSQL 13.

Если значение поля Хост базы данных начинается с косой черты или это поле пустое, то соединения между веб-интерфейсом Zabbix и PostgreSQL шифрованными быть не могут (параметры в GUI выключаются).

Предварительные требования

Установите базу данных PostgreSQL, используя официальный репозиторий.

«Из коробки» PostgreSQL не настроен на приём TLS подключений. Пожалуйста, следуйте инструкциям из документации PostgreSQL для подготовки сертификата и postgresql.conf [en], а также для контроля доступа пользователей[en] посредством файла 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 ...

Режим Required

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

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

  • Отметьте TLS шифрование базы данных
  • Оставьте Удостоверять сертификат базы данных неотмеченным

Сервер

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

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

Режим Verify CA

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

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

  • Отметьте TLS шифрование базы данных и Удостоверять сертификат базы данных
  • Укажите путь в поле Файл TLS CA базы данных

В качестве альтернативы, можно выставить в /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 ...

Режим Verify full

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

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

  • Отметьте TLS шифрование базы данных и Удостоверять сертификат базы данных
  • Укажите путь в поле Файл TLS ключа базы данных
  • Укажите путь в поле Файл TLS CA базы данных
  • Укажите путь в поле Файл TLS сертификата базы данных
  • Отметьте Сверка хоста базы данных

Как альтернатива, можно задать в /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 ...