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