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
       
       ### 验证CA
       
       hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca
       
       ### 完全验证
       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 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'] = ''; ...

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