与前端的安全连接
概述
本节提供 Zabbix 的设置步骤和配置示例,用于在 Zabbix 前端和 Zabbix 服务器之间建立安全的 TLS 连接。
配置
默认情况下,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