深入浅出Zabbix 3.0 -- 第十九章 数据加密通信

第十九章 数据加密通信

近日完成《深入浅出 zabbix 4.0》视频教程的录制并正式发布,该教程基于 zabbix 4.2 ,对Zabbix进行全面讲解。欢迎大家围观。课程链接:https://edu.csdn.net/course/detail/24870

Zabbix 3.0中非常重要的一个特性就是支持对Zabbixserver、Zabbix proxy、Zabbix agent、zabbix_sender和zabbix_get之间的通信进行加密,支持Certificate-based(基于证书)和pre-shared key-based(基于预共享秘钥)的加密,不再像早期版本那样需要额外的解决方案。

Zabbix 3.0中加密是独立组件,作为配置选项进行配置时非常灵活,可以针对不同的hosts设置不同的加密方式。例如有些proxy 和agents配置使用Certificate-based加密和server之间的通信,有些使用pre-sharedkey-based加密,而另外一些没有配置加密。如下图19-1所示。

 

                            

图 19-1

 

19.1编译Zabbix支持加密

Zabbix使用Transport LayerSecurity (TLS) protocol v1.2进行加密,为了让Zabbix支持加密功能,在源码编译安装时必须要链接到下面三个加密库中的其中一个。

  • mbed TLS:早期也叫PolarSSL,目前仅支持1.3.x版本。注意不支持2.x版本。

  • GnuTLS:支持v3.1.18及更高的版本。

  • OpenSSL:支持v1.0.1及更高的版本。

根据你的选择,configure脚本可以使用下面的某个选项:

  • --with-mbedtls[=DIR]

  • --with-gnutls[=DIR]

  • --with-openssl[=DIR]

例如:

# ./configure--enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp--with-libcurl --with-libxml2 --with-openssl

在编译安装Zabbix的不同组件时可以使用不同的加密库,例如server使用OpenSSL,agent使用GnuTLS。建议使用OpenSSL,在实际测试中OpenSSL是最快的,接下来是GnuTLS。

如果你使用安装包安装Zabbix组件时,默认已经支持加密功能。你可以通过查看日志文件确定Zabbix安装的功能特性。例如下面是Zabbixserver启动时显示的特性列表。

# vi/var/log/zabbix/zabbix_server.log

  1065:20150817:103017.520****** Enabled features ******

  1065:20150817:103017.520SNMP monitoring:           YES

  1065:20150817:103017.520IPMI monitoring:           YES

  1065:20150817:103017.520 Webmonitoring:           YES

  1065:20150817:103017.520VMware monitoring:        YES

  1065:20150817:103017.520SMTP authentication:        YES

  1065:20150817:103017.520Jabber notifications:         YES

  1065:20150817:103017.520 EzTexting notifications:       YES

  1065:20150817:103017.520ODBC:                     YES

  1065:20150817:103017.520SSH2 support:               YES

  1065:20150817:103017.520IPv6 support:               YES

  1065:20150817:103017.520 TLSsupport:                YES

  1065:20150817:103017.520******************************

 

 

19.2 pre-shared keys加密

Zabbix中使用PSK(pre-shared key)加密时,需要提供标识符(PSKidentity)和加密字符串(PSK string)。PSK identity是一个非空的UTF-8字符串,例如PSK ID 001 zabbix agent,在这里仅仅作为一个特定PSK的名称,方便Zabbix中各组件的引用。由于PSK identity在网络中是明文传输,因此在名称中不要涉及到敏感信息。PSK string是由十六进制组成的字符串,例如e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9。

19.2.1 长度限制

在Zabbix中使用PSK加密时,对PSK identity和PSK string长度是有限制的。在Zabbix前端页面中配置PSK identity的长度可以达到128个字符,PSK string的长度可以达到2048个bit,但也要看使用的加密库的限制。如果配置的字符串长度超过限制会导致Zabbix各组件之间通信失败。

例如Zabbix server使用PSK连接到agent之前,server会在数据库中查找agent配置的PSK identity和PSK string,当收到agent配置的PSK identity和PSK string后进行比较,如果双方具有相同的PSK identity和PSK string时将成功连接。

长度限制的参数如下表19-1所示。

表 19-1

组件

PSK identity最大长度

PSK string最小长度

PSK string最大长度

Zabbix

128 UTF-8 characters

128-bit (16-byte PSK, entered as 32 hexadecimal digits)

2048-bit (256-byte PSK, entered as 512 hexadecimal  digits)

GnuTLS

128 bytes (may include UTF-8 characters)

--

2048-bit (256-byte PSK, entered as 512 hexadecimal  digits)

mbed TLS

128 UTF-8 characters

--

256-bit (default limit) (32-byte PSK, entered as 64  hexadecimal digits)

OpenSSL

127 bytes (may include UTF-8 characters)

--

2048-bit (256-byte PSK, entered as 512 hexadecimal  digits)

19.2.2 PSK生成

在CentOS中可以使用不同的工具生成PSK,下面就以生成一个256-bit(32字节)PSK为例来看一下。

  • 使用OpenSSL

# openssl rand -hex 32

3e2b2ef85c2ad0af3410c9a495fe77d0a8741c2f1243c2af73a2e17623f70098

  • 使用GnuTLS

# yum install gnutls-utils

# psktool -u psk_identity -p mypsk.psk -s 32

Generating arandom key for user 'psk_identity'

Key stored to mypsk.psk

# cat mypsk.psk   psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

使用psktool工具时会生成一个文件,格式为pskidentity:psk string,在Zabbix中使用该文件时需要把psk identity:删除,只保留psk string。

19.2.3 配置实例

19.2.3.1 配置server和agent之间使用PSK

配置步骤:

1、  在agnet主机中,将PSK string保存到一个文件中。例如 /etc/zabbix/zabbix_agentd.psk。

# vi /etc/zabbix/zabbix_agentd.psk

3e2b2ef85c2ad0af3410c9a495fe77d0a8741c2f1243c2af73a2e17623f70098

2、  设置zabbix_agentd.psk文件的访问权限。

# chown zabbix:zabbix /etc/zabbix/zabbix_agentd.psk

# chmod 644 /etc/zabbix/zabbix_agentd.psk

3、  编辑zabbix_agentd.conf配置文件。

# vi /etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

TLSAccept=psk

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

TLSPSKIdentity=PSKAgent

如果agnet类型为active(主动式)agent,那么agent将连接到server并接收来自server和zabbix_get使用PSK加密的连接,PSK identity为PSK Agent。

4、  重启agent,使用zabbix_get进行测试。

# zabbix_get -s 1

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白小白一起学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值