2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 PostgreSQL 加密配置

总览

本节提供了一些针对CentOS 8.2和PostgreSQL 13的加密配置示例。

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

从Zabbix 5.0.5 版本,TLS加密参数名称,已略有更改:为了更清楚起见,添加了"数据库(Database)"前缀。在5.0.0-5.0.4版中,参数名称为TLS加密(TLS encryption), TLS证书文件(TLS certificate file)等。

前提条件

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

若PostgreSQL没有配置接受TLS连接。请按照文档使用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
       ...

必须模式(Required mode)

前端

要为 Zabbix前端和数据库之间的连接启用仅传输加密:

  • 检查 数据库TLS加密 (Database TLS encryption)
  • 不选择 验证数据库证书 (Verify database certificate)

Server

要为Zabbix server和数据库之间的连接启用仅传输加密,请配置/etc/zabbix/zabbix_server.conf:

...
       DBHost=10.211.55.9
       DBName=zabbix
       DBUser=zbx_srv
       DBPassword=<健壮的复杂密码>
       DBTLSConnect=required
       ...

验证CA模式(Verify CA mode)

Frontend

To enable encryption with certificate authority verification for connections between Zabbix frontend and the database:

  • 检查 数据库TLS加密(Database TLS encryption)验证数据库证书(Verify database certificate)
  • 指定 数据库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'] = false;
       $DB['CIPHER_LIST'] = '';
       ...

Server

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

...
       DBHost=10.211.55.9
       DBName=zabbix
       DBUser=zbx_srv
       DBPassword=<健壮的复杂的密码>
       DBTLSConnect=verify_ca
       DBTLSCAFile=/etc/ssl/pgsql/root.crt
       ...

验证完整模式(full mode)

前端

为Zabbix前端和数据库之间的连接启用使用证书和数据库主机身份验证的加密:

  • 检查 数据库TLS加密(Database TLS encryption)验证数据库证书(Verify database certificate)
  • 指定 数据库TLS密钥文件的路径(Database TLS key file)
  • 指定 数据库TLS CA文件的路径(Database TLS CA file)
  • 指定 数据库TLS证书文件的路径(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'] = '';
       ...

Server

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

...
       DBHost=10.211.55.9
       DBName=zabbix
       DBUser=zbx_srv
       DBPassword=<健壮的复杂密码>
       DBTLSConnect=verify_full
       DBTLSCAFile=/etc/ssl/pgsql/root.crt
       DBTLSCertFile=/etc/ssl/pgsql/client.crt
       DBTLSKeyFile=/etc/ssl/pgsql/client.key
       ...