2 PostgreSQL加密配置

概述

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

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

先决条件

安装 PostgreSQL 请参照official repository.

PostgreSQL未配置开箱即用的TLS连接。请按照 PostgreSQL 文档中的说明进行操作 certificate preparation with postgresql.conf 也适用于 user access control _hba.conf.

默认情况下,PostgreSQL套接字绑定到本地主机,因为网络远程连接允许侦听真实的网络接口。

PostgreSQL 所有配置请参见 modes 像这样:

/var/lib/pgsql/13/data/postgresql.conf:

  1. ...
  2. ssl = on
  3. ssl_ca_file = 'root.crt'
  4. ssl_cert_file = 'server.crt'
  5. ssl_key_file = 'server.key'
  6. ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
  7. ssl_prefer_server_ciphers = on
  8. ssl_min_protocol_version = 'TLSv1.3'
  9. ...

/var/lib/pgsql/13/data/pg_hba.conf 配置文件用于访问控制的调整:

  1. ...
  2. ### require
  3. hostssl all all 0.0.0.0/0 md5
  4. ### verify CA
  5. hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca
  6. ### verify full
  7. hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
  8. ...

所需模式

前端

请执行以下操作来启用 Zabbix 前端和数据库之间的仅传输加密连接:

  • 勾选 Database TLS encryption
  • 取消勾选 Verify database certificate

2 PostgreSQL加密配置 - 图1

服务端

请配置下面的参数来启用 Zabbix 前端和数据库之间的仅传输加密连接:

  1. ...
  2. DBHost=10.211.55.9
  3. DBName=zabbix
  4. DBUser=zbx_srv
  5. DBPassword=<strong_password>
  6. DBTLSConnect=required
  7. ...

验证 CA 模式

前端

对于启用Zabbix 前端和数据库之间的连接加密,请使用证书颁发机构验证:

  • 勾选 Database TLS encryptionVerify database certificate
  • 指定 Database TLS key file 路径
  • 指定 Database TLS CA file 路径
  • 指定 Database TLS certificate file 路径

2 PostgreSQL加密配置 - 图2

或者,可以在这里配置 /etc/zabbix/web/zabbix.conf.php:

  1. ...
  2. $DB['ENCRYPTION'] = true;
  3. $DB['KEY_FILE'] = '';
  4. $DB['CERT_FILE'] = '';
  5. $DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
  6. $DB['VERIFY_HOST'] = false;
  7. $DB['CIPHER_LIST'] = '';
  8. ...

服务端

要为Zabbix服务端和数据库之间的连接启用加密和证书验证,请配置/etc/zabbix/zabbix_server.conf:

  1. ...
  2. DBHost=10.211.55.9
  3. DBName=zabbix
  4. DBUser=zbx_srv
  5. DBPassword=<strong_password>
  6. DBTLSConnect=verify_ca
  7. DBTLSCAFile=/etc/ssl/pgsql/root.crt
  8. ...

完整验证模式

前端

要使用证书和数据库主机身份验证为 Zabbix 前端和数据库之间的连接启用加密,请执行以下操作:

  • 勾选Database TLS encryptionVerify database certificate
  • 指定 Database TLS key file 路径
  • 指定 Database TLS CA file 路径
  • 指定 Database TLS certificate file 路径
  • 勾选 Database host verification

2 PostgreSQL加密配置 - 图3

或者,可以在这里配置 /etc/zabbix/web/zabbix.conf.php:

  1. $DB['ENCRYPTION'] = true;
  2. $DB['KEY_FILE'] = '';
  3. $DB['CERT_FILE'] = '';
  4. $DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
  5. $DB['VERIFY_HOST'] = true;
  6. $DB['CIPHER_LIST'] = '';
  7. ...

服务端

要使用证书和数据库主机身份验证为Zabbix服务器和数据库之间的连接启用加密,请配置该文件 /etc/zabbix/zabbix_server.conf:

  1. ...
  2. DBHost=10.211.55.9
  3. DBName=zabbix
  4. DBUser=zbx_srv
  5. DBPassword=<strong_password>
  6. DBTLSConnect=verify_full
  7. DBTLSCAFile=/etc/ssl/pgsql/root.crt
  8. DBTLSCertFile=/etc/ssl/pgsql/client.crt
  9. DBTLSKeyFile=/etc/ssl/pgsql/client.key
  10. ...