PostgreSQL 加密配置

概述

本节提供了几个对 CentOS 8.2 和 PostgreSQL 13 的加密配置示例。

如果数据库主机字段的值以斜杠开头或该字段为空,则Zabbix前端和PostgreSQL之间的连接无法加密(GUI中的参数被禁用)。

前提条件

使用 官方仓库 安装 PostgreSQL 数据库。

PostgreSQL 默认未配置为接受 TLS 连接。请按照 PostgreSQL 文档中的说明,完成 使用 postgresql.conf 进行证书准备,以及通过 ph_hba.conf 进行的 用户访问控制

默认情况下,PostgreSQL socket 绑定到 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 encryptionVerify 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 encryptionVerify 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
...