6 与前端的安全连接
概述
本节提供 Zabbix 前端 与 Zabbix 服务器 之间建立安全 TLS 连接的 Zabbix 设置步骤和配置示例。
配置
默认情况下,Zabbix 前端与 Zabbix 服务器之间的通信未加密。为提高安全性,请在两端都启用 TLS。下面是实现此目的的最简单方法示例。
1. 生成证书和密钥。
创建工作目录:
sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl
创建 CA 证书(将 MyZabbixCA 值调整为实际的通用名称):
sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"
为 Zabbix 服务器生成私钥和证书(将 zabbix-server.example.com 值调整为实际的通用名称):
sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt
为 Zabbix 前端生成私钥和证书(将 zabbix-frontend-node 值调整为实际的通用名称):
sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt
2. 设置适当的权限。
对于 Zabbix 服务器(根据您的发行版中的 Zabbix 服务器守护进程用户调整所有者/组):
sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crt
对于前端(根据您的发行版中的 Web 服务器用户调整所有者/组):
sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt
3. 配置 Zabbix 服务器。
在 zabbix_server.conf 中添加:
TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# 可选:
# TLSFrontendCertIssuer=/CN=MyZabbixCA/
# TLSFrontendCertSubject=/CN=zabbix-frontend-node/
然后重启服务器:
sudo systemctl restart zabbix-server
4. 配置 Zabbix 前端。
在Web 界面安装期间,启用 Encrypt connections from Web interface 选项(如有必要,还可启用 Verify server certificate issuer and subject 选项),并填写 TLS CA file、TLS key file、TLS certificate file 字段(如有必要,还可填写 Server TLS certificate issuer 和 Server TLS certificate subject 字段):

| Parameter | Description |
|---|---|
| TLS CA file | 指定用于验证服务器证书的证书颁发机构(CA)证书文件的完整路径。 |
| TLS key file | 指定与客户端证书对应的客户端私钥文件的完整路径。 |
| TLS certificate file | 如果需要双向 TLS 身份验证,请指定客户端证书文件的完整路径。 |
| Server TLS certificate issuer | 指定用于与服务器证书进行匹配的颁发者可分辨名称(DN)。 |
| Server TLS certificate subject | 指定用于与服务器证书进行匹配的主题可分辨名称(DN)。 |
对于现有安装,请编辑 zabbix.conf.php 中的以下字段:
$ZBX_SERVER_TLS['ACTIVE'] = '1';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// 可选:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER'] = '/CN=MyZabbixCA/';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = '/CN=zabbix-server.example.com/';
5. 通过确认 Zabbix 前端或 Zabbix 服务器日志文件中没有错误消息来验证加密:
tail -f /var/log/zabbix/zabbix_server.log