Zabbix4.x如何安全传输数据
由于设备都在混合云,所以不少数据传输是通过公网,这样极大的增加了危险性,所以在Zabbix数据传输这块则进行PSK安全认证,由proxy主动收集agent数据后统一发送给server,这样只需要对proxy到server之间的数据进行加密即可。
Zabbix从3.0开始支持传输层安全性(TLS)协议v.1.2加密,在Zabbix服务器,Zabbix代理,Zabbix代理,zabbix_sender和zabbix_get实用程序之间进行加密通信,支持基于证书PSA和基于预共享密钥PSK的加密。
加密对于各个组件是可选配置,Zabbix_Proxy到Zabbix Server之间可以基于证书加密或者基于预共享密钥加密。
Zabbix守护程序将一个侦听端口用于加密和未加密的传入连接。添加加密不需要在防火墙上打开新端口。
加密的局限性
•在启动期间,私钥以纯文本格式存储在Zabbix组件可读的文件中。
•预共享密钥在Zabbix前端中输入,并以纯文本格式存储在Zabbix数据库中。
•内置加密不能保护通信:
•在运行Zabbix前端的Web服务器和用户Web浏览器之间,
•在Zabbix前端和Zabbix服务器之间,
•在Zabbix服务器(代理)和Zabbix数据库之间。
•当前,每个加密的连接均以完整的TLS握手打开,未实现会话缓存和票证。
•添加加密会增加检查和操作的时间,具体取决于网络延迟。
•例如,如果数据包延迟为100毫秒,则打开TCP连接并发送未加密的请求大约需要200毫秒。
•通过加密,大约增加了1000 ms来建立TLS连接。
•可能需要增加超时,否则某些在代理上运行远程脚本的项目和操作可能会与未加密的连接一起工作,但会因加密而超时而失败。
•网络发现不支持加密。由网络发现执行的Zabbix代理检查将不加密,并且如果Zabbix代理配置为拒绝未加密的连接,则此类检查将不会成功
加密方式
Zabbix支持的加密方式有两种:
1.基于证书PSA的加密(常用与Zabbix_Proxy但不局限于Proxy)
2.基于预共享密钥PSK的加密(常用与Zabbix_Agent但不局限于Agent)
支持的加密库
Zabbix支持以下四种加密库,不同的加密库有不同的功能
•GnuTls:如果要使用GnuTLS方式加密,则GnuTLS版本必须高于或者等于3.1.18版本(支持基于证书PSA以及基于预共享密钥PSK两种加密方式)
•OpenSSL:支持版本(1.0.1、1.0.2c、1.1.0),OpenSSL1.1.1版本仅支持Zabbix3.0.23、3.4.15和4.0.1,但是OpenSSL1.0.1、1.0.2c版本在PSK加密方式中并不能完美支持保密性(OpenSSL加密库支持基于证书以及基于预共享密钥PSK两种加密方式)
•LibreSSL:LibreSSL为OpenSSL的替代品,在2014年OpenSSL被爆出心脏漏洞后,OpenSSL成立了LibreSSL重构了OpenSSL加密库的代码,并从2.0版本起跳,官方目前称不支持LibreSSL2.6x版本,通过了(LibreSSL2.7.4、2.8.2版本的测试),(LibreSSl不支持PSK的加密方式,只支持基于证书方式)
•mbed TLS:mbed TLS以前被称为PolarSSL,支持mbed TLS1.3.9版本和的1.3.9x,目前不支持mbed TLS 2版本,它不是1.3分支的完全替代,Zabbix不会用mbed TLS 2.x编译。(支持基于证书以及基于预共享密钥PSK两种加密方式)
配置方式: 在编译部署zabbix时添加以下参数 GnuTls: --with-gnutls[=DIR] OpenSSL: --with-openssl[=DIR] LibreSSL: --with-openssl[=DIR],因为LibreSSL基于OpenSSL所以Libre SSL也使用 --with-openssl选项 mbed TLS: --with-mbedtls[=DIR]
加密参数
TLSConnect 这个参数在Zabbix Server/Zabbix Proxy/Zabbix Agent配置文件中都存在,值有以下三个:unencrypted:不加密 PSK:PSK方式加密 cert:PSA方式加密 此参数仅用于在Zabbix_Proxy或者Zabbix_Agent在主动模式下到服务器的连接。
TLSAccept 这个参数同样在Zabbix Server/Zabbix Proxy/Zabbix Agent配置文件中都存在,值也有以下三个:unencrypted:不加密 PSK:PSK方式加密 cert:PSA方式加密 此参数仅用于在Zabbix_Proxy或者Zabbix_Agent在被动模式指定来自服务器的连接。
如果将Zabbix_Proxy或者Zabbix_Agent配置为PSA证书加密方式,那么Zabbix Proxy或者Zabbix_Agent只能配置为主动模式,来主动提交数据到Server,agent(active) or zabbix trapper。
密码套件
在Zabbix启动期间内部配置了密码套件,并且依赖于加密库,目前它们不是用户可配置的。
按照从高到低顺序的库类型配置密码:

密码套件使用证书:

密码套件使用PSK:

使用PSK共享密钥加密
使用PSK共享密钥加密可以使用四种加密库,如上文所述,但文本只介绍常用的两种方式:GnuTLS进行PSK加密与OpenSSL进行PSK加密 Zabbix中的每个预共享密钥(PSK)实际上都是一对:
•非秘密PSK identity(共享密钥一致性)字符串,
•秘密PSK字符串值。
1)PSK身份字符串是非空的UTF-8字符串。例如,“代理的PSK ID 001 Zabbix”。这是Zabbix组件引用此特定PSK的唯一名称。请勿将敏感信息放在PSK身份字符串中-它将未经加密地通过网络传输。PSK值是很难猜测的十六进制数字字符串,例如“ e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9”。
注:Zabbix Web界面允许配置多达128个字符长的PSK身份字符串和2048位长的PSK,而与所使用的加密库无关。如果某些Zabbix组件支持较低限制,则用户有责任为这些组件配置PSK标识和值以及允许的长度,超过长度限制会导致Zabbix组件之间的通信失败
2)在Zabbix服务器使用PSK连接到代理之前,服务器会在数据库中(实际上是在配置缓存中)查找为该代理配置的PSK身份和PSK值。收到连接后,代理将使用其配置文件中的PSK标识和PSK值。如果双方具有相同的PSK标识字符串和PSK值,则连接可能会成功。用户有责任确保不存在两个具有相同标识字符串但值不同的PSK。否则,可能会导致使用带有此PSK标识字符串的PSK的Zabbix组件之间的通信意外中断。
GnuTLS基于PSK加密
1) 安装GnuTLS加密库 GnuTls加密库版本必须大于或者等于3.1.18
yum install gnutls.x86_64 gnutls-c++.x86_64 gnutls-dane.x86_64 gnutls-devel.x86_64 gnutls-utils.x86_64 -y gnutls-cli --version
gnutls-cli 3.3.
2) 编译部署Zabbix_Proxy
./configure --prefix=/usr/local/zabbix \
--enable-proxy \
--enable-agent \
--enable-ipv6 \
--enable-java \
--with-sqlite3 \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-zlib \
--with-libevent \
--with-libpcre \
--with-iconv \
--with-openipmi \
--with-gnutls \
--with-ssh2
3)生成密钥并设置权限
psktool -u psk_identity -p database.psk -s
Generating a random key for user 'psk_identity'
Key stored to database.psk echo '5a504503a51fb29bfea62e4576808dd4258c5f8cd03928c90a04704464bbbbd8' > /usr/local/zabbix/etc/zabbix_agentd.conf.d/.zabbix_agentd.psk chown -Rf zabbix.zabbix /usr/local/zabbix/etc/zabbix_proxy.conf.d/.zabbix_proxy.psk chmod /usr/local/zabbix/etc/zabbix_proxy.conf.d/.zabbix_proxy.psk
4)修改proxy配置
vim /usr/local/zabbix/etc/zabbix_proxy.conf
TLSConnect=psk #在proxy主动模式下指定加密方式
TLSPSKFile=/usr/local/zabbix/etc/zabbix_proxy.conf.d/.zabbix_proxy.psk #指定PSK文件
TLSPSKIdentity=xxxxxxx #指定PSK名称,可自定义
5)在Zabbix Web界面添加 选中proxy后选择加密方式,填入信息

6)配置agent加密 agent加密与上述一致,除了web界面配置如下

OpenSSL基于PSK加密
以下只介绍OpenSSL与GnuTLS配置不一样的地方 1)编译配置
./configure --prefix=/usr/local/zabbix \
--enable-proxy \
--enable-agent \
--enable-ipv6 \
--enable-java \
--with-sqlite3 \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-zlib \
--with-libevent \
--with-libpcre \
--with-iconv \
--with-openipmi \
--with-openssl= \ #指定加密库为Openssl,如果默认加密库版本不符合Zabbix要求,则安装符合要求的加密库后进行配置
--with-ssh2
2)生成密钥
openssl rand -hex
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
拿到Openssl生成的密钥后,下面的配置则与GnuTLS一致
使用PSA基于证书加密
证书加密非常复杂,需要去申请CA证书、签名证书以及密钥等,如果想了解证书加密请见官方:https://www.zabbix.com/documentation/current/manual/encryption/using_certificates
识别下方二维码,学习更多Zabbix相关知识!

Zabbix4.x如何安全传输数据的更多相关文章
- Flash跨域传输数据 crossdomain.xml
一.概述位于www.a.com域中的SWF文件要访问www.163.com的文件时,SWF首先会检查163服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功:若crossdo ...
- MVC 前台向后台传输数据
今天,我们一起来学习下.MVC如何在前台给后台传输数据 (1)前台传输数据到后台 具体思路:前台拼凑json字符串,然后通过 get 或 post 方式,传递到后台 Action 方法中 我现在前台展 ...
- [转载]JavaEE学习篇之——网络传输数据中的密码学知识以及Tomcat中配置数字证书EE
原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/21716557 今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一 ...
- php中curl模拟浏览器来传输数据
cURL可以使用URL的语法模拟浏览器来传输数据, 因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以 ...
- cdoj 1143 传输数据 最大流
传输数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1143 Descri ...
- vsftp实现ftps加密传输数据
FTP明文传输数据,不太安全,ftp+ssl可以实现传输加密=ftps 01.创建FTP用户 user -d /ftp_www -s /sbin/nologin mvpbang echo " ...
- C#中thrift 中THttpHandler 传输数据 慢 slow 解决办法
1. 在用c# 写thrift的服务端,来相应http请求,在用结构体传输时,会遇到一个问题,就是(在用网络)传输数据特别慢, 这是由于在发生数据是用的TStreamTransport 导致每传一个数 ...
- WIFI(1)WIFI直连 + socket 可以用来实现类似蓝牙传输数据的功能
WIFI 直连简介 从Android4.0(API Level=14)开始,允许通过Wi-Fi模块在两个移动设备之间建立直接连接(这种技术称为Wi-Fi Direct),这种连接不需要无线路由作为中介 ...
- 蓝牙(3)如何通过蓝牙传输数据及UUID详介
如何通过蓝牙传输数据 通过蓝牙传输数据与Socket类似.在网络中使用Socket和ServerSocket控制客户端和服务端的数据读写.而蓝牙通讯也由客户端和服务端Socket来完成.蓝牙客户端So ...
随机推荐
- 11.DRF-权限
Django rest framework源码分析(2)----权限 添加权限 (1)API/utils文件夹下新建premission.py文件,代码如下: message是当没有权限时,提示的信息 ...
- Apache Hudi:云数据湖解决方案
1. 引入 开源Apache Hudi项目为Uber等大型组织提供流处理能力,每天可处理数据湖上的数十亿条记录. 随着世界各地的组织采用该技术,Apache开源数据湖项目已经日渐成熟. Apache ...
- c语音学习笔记
1.学习教程参考了杨光福 android jni Android视频<JNI> http://edu.csdn.net/course/detail/3235/54186?auto_star ...
- 【neo4j】文件管理路径、数据备份、创建新数据库、导入数据等操作记录
neo4j一般的配置路径如下 一.备份数据 使用neo4j-admin命令. 首先,先找到数据的存储路径,然后关闭数据库. 关闭数据库的语句如下: #切换到/bin目录下 ./neo4j stop 然 ...
- 序列推荐(transformer)
目录 Attention演进(RNN&LSTM&GRU&Seq2Seq + Attention机制) LSTM GRU Seq2Seq + Attention机制 Attent ...
- AcWing 走廊泼水节 题解
这道题大致题意就是让一棵树任意两点有连边(也就是完全图),但是补完后最小生成树是一开始的那棵树,问最小加的边权之和是多少. 了解题意后,我们可以想到用Kruskal(废话),当每两个集合合并的时候,除 ...
- SqueezeNet/SqueezeNext简述 | 轻量级网络
SqueezeNet系列是比较早期且经典的轻量级网络,SqueezeNet使用Fire模块进行参数压缩,而SqueezeNext则在此基础上加入分离卷积进行改进.虽然SqueezeNet系列不如Mob ...
- 2020年Web前端开发工程师市场怎么样?学会什么技术才能拿到高薪
几乎整个互联网行业都缺前端工程师,不仅在刚起步的创业公司,对上市公司乃至巨头这个问题也一样存在.据统计,国外的前端开发人员和后端开发人员比例约1:1,但是在国内比例却在1:3以下, Web前端开发职位 ...
- 读取模式下cbc latch的事件模拟(热块竞争和热链竞争)-P62
文章目录 1. 背景 2. 过程 2.1 热块竞争 2.1.1 版本11.2.0.1.0 2.1.1.1 session 1(sid:34) 2.1.1.2 session 2(sid:35) 2.1 ...
- 主存到Cache直接映射、全相联映射和组相联映射
转自:https://blog.csdn.net/dongyanxia1000/article/details/53392315 ---- Cache的容量很小,它保存的内容只是主存内容的一个子集,且 ...