Zabbix数据加密传输
前端
Zabbix版本从3.0以后,开始支持Zabbix server, Zabbix proxy, Zabbix agent, zabbix_sender and zabbix_get之间的通讯加密,加密方式有预共享密钥(PSK)和证书加密。加密配置是可选项,一些proxies和agents可使用证书认证加密通讯,另一些可使用PSK加密通讯,而剩余的能够不使用加密进行通讯。mysql
在启动期间,rivate键以纯文本形式存储在Zabbix组件可读的文件中。web
预共享密钥在Zabbix前端输入,并以纯文本形式存储在Zabbix数据库中。sql
内置加密不保护通讯:数据库
在运行Zabbix前端和用户Web浏览器的Web服务器之间,浏览器
在Zabbix前端和Zabbix服务器之间,缓存
Zabbix服务器(代理)和Zabbix数据库之间。bash
目前,每一个加密链接都打开一个完整的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 #定义预共享秘钥
3、配置好以上文件重启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
4、测试没问题后,开始在Web页面配置