SSL
本节提供针对CentOS 8.2和PostgreSQL 13的若干加密配置示例。
若数据库主机字段值以斜杠开头或该字段为空,则Zabbix前端与PostgreSQL之间的连接无法加密(图形界面中的参数将显示为禁用状态)。
使用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文件:
...
### 要求
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前端与数据库之间的连接启用仅传输加密:
要为服务器与数据库之间的连接启用仅传输加密,请配置 /etc/zabbix/zabbix_server.conf 文件:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
要为Zabbix前端与数据库之间的连接启用证书颁发机构验证的加密:
或者,可以在/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 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前端与数据库间连接的证书加密及数据库主机身份验证:
或通过修改/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 server与数据库之间的连接启用证书加密和数据库主机身份验证,请配置/etc/zabbix/zabbix_server.conf文件: