Zabbix数据加密传输
Zabbix版本从3.0之后,开始支持Zabbix server, Zabbix proxy, Zabbix agent, zabbix_sender and zabbix_get之间的通信加密,加密方式有预共享密钥(PSK)和证书加密。加密配置是可选项,一些proxies和agents可以使用证书认证加密通信,另外一些可以使用PSK加密通信,而剩余的可以不使用加密进行通信。
- 在启动期间,rivate键以纯文本形式存储在Zabbix组件可读的文件中。
- 预共享密钥在Zabbix前端输入,并以纯文本形式存储在Zabbix数据库中。
- 内置加密不保护通信:
1.在运行Zabbix前端和用户Web浏览器的Web服务器之间
2.在Zabbix前端和Zabbix服务器之间
3.Zabbix服务器(代理)和Zabbix数据库之间 - 每个加密连接都打开一个完整的TLS握手,没有实现会话缓存和票证。
- 添加加密会增加检查和操作的时间,具体取决于网络延迟。
例如,如果数据包延迟为100毫秒,则打开TCP连接并发送未加密的请求大约需要200毫秒。使用加密大约1000毫秒来建立TLS连接。可能需要增加超时,否则在代理上运行远程脚本的某些项和操作可能与未加密的连接一起使用但在加密超时时失败。
- 网络发现不支持加密。通过网络发现执行的Zabbix代理检查将是未加密的,如果Zabbix代理配置为拒绝未加密的连接,则此类检查将不会成功。
编译支持加密功能
要想支持加密功能,我们必须在编译安装的时候把加密库编译进Zabbix里面,编译的时候加上--with-openssl
./configure \
--prefix=/usr/local/zabbix \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-openssl
使用共享密钥(PSK)加密
使用OpenSSL工具生成psk
# openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
配置zabbix的agent端
创建一个文件/etc/zabbix/zabbix_agentd.conf.d/zabbix_agentd.psk
,存入刚刚生成的psk。然后编辑/etc/zabbix/zabbix_agentd.conf
,添加如下内容。
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/etc/zabbix/zabbix_agentd.conf.d/zabbix_agentd.psk #定义zabbix_agentd.psk文件路径
TLSPSKIdentity=PSK 001 #定义预共享秘钥
配置好以上文件重启Server端和Agent端,最后使用zabbix_get测试
zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/etc/zabbix/zabbix_agentd.conf.d/zabbix_agentd.psk
测试没问题后,开始在Web页面配置