2 PostgreSQL 加密配置

概述

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

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

先决条件

使用official repository安装PostgreSQL数据库。

PostgreSQL默认不配置为接受TLS连接。请参考PostgreSQL文档中的certificate preparation with postgresql.conf说明进行配置,同时参考通过ph_hba.conf配置的user access control说明。

默认情况下,PostgreSQL套接字绑定到本地主机,若要允许网络远程连接,请监听实际的网络接口。

所有术语的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 前端与数据库之间连接的仅传输加密:

  • 勾选 数据库 TLS 加密
  • 不勾选 验证数据库证书

Server

为启用服务器与数据库之间连接的仅传输加密,请配置 /etc/zabbix/zabbix_server.conf

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

带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'] = '';
       ...

Server

要在 Zabbix server 与数据库之间启用带证书验证的加密连接,请配置以下文件: /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 前端与数据库之间的连接:

  • 勾选 数据库 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'] = '';
       ...

Server

为在 Zabbix server 与数据库之间的连接中启用使用证书和数据库 主机 身份验证的加密,请配置 /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
       ...