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 ...
随机推荐
- Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据
本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...
- windows10安装配置WSL(Ubuntu)
windows10安装配置WSL(Ubuntu) 怎么在windows系统上用上Linux?有这么几种方法: 1. 安装双系统.这种方法的缺点是每次切换系统都需要关机.切换系统. 2. 虚拟机+Lin ...
- Oracle调用Java方法(下)复杂Jar包封装成Oracle方法以及ORA-29521错误
上一篇随笔中已经说了简单的Jar是如何封装的,但是我的需求是根据TIPTOP的查询条件产生XML文件并上传到FTP主机中,那么就要涉及到XML生成的方法和FTP上传的方法 所以在Eclipse写的时候 ...
- 你想不到的沙雕,10行代码Python实现GIF图倒放,每天的快乐源泉
前言 GIF图现在已经融入了我们的日常网络生活,微信群.QQ群.朋友圈......一言不合就斗图,你怕了吗?不用担心,只要学会了Python之GIF倒放技能,你就是“斗图王”. 咱们直接开始本文的内容 ...
- linuxshell编程之环境变量配置文件 Tony Linux系统工程师
视频参考慕课网 如果修改了环境变量的配置文件,要使得修改的环境变量生效可以使用下面的两个命令 下面是点后面加上了一个空格然后再加上配置文件,这里一定要注意下 这里要注意和隐藏文件的区别: 在linux ...
- redis高级命令2
主服务负责数据的写,从服务器负责客户端的高并发来读 创建主从复制 clone不能让上面的mac地址不能重复,IP地址也不能重复 122和123是从服务器,我们修改二者的配置文件 其中 192.168. ...
- leetcode 力扣 两数之和
class Solution: def addTwoNumbers(self, l1, l2): n1 = [] n2 = [] nl = [] while l1.next and l2.next: ...
- 在采用K8S之前您必须了解的5件事情
作者简介 Christopher Tozzi,自2008年来以自由职业者的身份对Linux.虚拟化.容器.数据存储及其相关主题进行报道. 时至今日,Kubernetes已然成为风靡一时的容器编排调度工 ...
- liunx中组合查询的命令
今天无聊,把以前的liunx命令拿过练练,尤其是一些组合命令并带有逻辑的.这里的script是一个文件夹. 1.查看一个文件的最后3行的第一行. [root@localhost home]# tail ...
- Java工具类—包装类
Java工具类--包装类 我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工 ...