• zabbix PSK通信加密配置


    zabbix 与 agent 之间 通信加密

    一 使用共享秘钥加密

    概述

    Zabbix中的每个共享密钥(PSK)实际上是一对:

    • 非私密PSK identity(共享密钥一致性)字符串,
    • 私密PSK字符串值。

    PSK identity(共享密钥一致性)字符串是非空的UTF-8字符串。

    例如,“PSK ID 001 Zabbix agentd”。这是一个独特的名称,由Zabbix组件引用该特定的PSK。不要将敏感信息放在PSK identity(共享密钥一致性)字符串中 - 它通过未加密网络传输。

    PSK值通常是很难猜出十六进制数字的字符串,例如“e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9”。

    长度限制

    在Zabbix中有PSK identity(共享密钥一致性)和PSK值的长度限制,在某些情况下,加密库可以有下限:

    注意:Zabbix前端允许配置多达128个字符的长的PSK identity(共享密钥一致性)字符串和2048位长的PSK,而不管使用的加密库。
    如果某些Zabbix组件支持较低限制,则用户有责任为这些组件配置PSK identity(共享密钥一致性)和PSK值。
    超出长度限制会导致Zabbix组件之间的通信故障。

    在Zabbix server使用PSK连接到agent之前,服务器将查找数据库中为该agent配置的PSK identity(共享密钥一致性)和PSK值(实际上在配置缓存中)。agent在收到连接后,从其配置文件中读取PSK identity(共享密钥一致性)和PSK值。如果双方具有相同的PSK identity(共享密钥一致性)字符串和PSK值,则连接才可能会成功。

    注意:用户有责任确保每个PSK identity(共享密钥一致性)字符串只对应唯一的PSK。否则可能会导致使用PSK和PSK identity(共享密钥一致性)字符串的Zabbix组件之间的通信被中断。

    生成PSK

    例如,可以使用以下命令生成256位(32字节)PSK:

    • with OpenSSL:
    • 使用OpenSSL
     $ openssl rand -hex 32
     af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
    
    • 使用GnuTLS:
      $ psktool -u psk_identity -p database.psk -s 32
      Generating a random key for user 'psk_identity'
      Key stored to database.psk
      
      $ cat database.psk 
      psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb
    

    请注意,上面“psktool”命令产生PSK值的数据库文件。Zabbix只需要PSK文件中的PSK,因此应该从文件中删除'psk_identity:'。

    配置PSK进行proxy(主动模式)代理和server通信(示例)

    在proxy主机上,将PSK值写入文件,例如/root/zabbix_proxy.psk。 该文件必须在第一个文本字符串中包含PSK,例如:

    # 生成PSK值
    [root@zabbix-proxy ~]# openssl rand -hex 32
    1e1b0e91c35d67e542d26cb7686a4aaf0a96ab26252a2f45398a2a4464a123fb
    
    # 写入到文件中
    [root@zabbix-proxy ~]# echo '1e1b0e91c35d67e542d26cb7686a4aaf0a96ab26252a2f45398a2a4464a123fb' > zabbix_agentd.psk
    
    

    设置PSK文件的访问权限 - 它必须只能由Zabbix用户读取。保证数据安全性

    [root@zabbix-proxy ~]# chown zabbix.zabbix zabbix_agentd.psk
    [root@zabbix-proxy ~]# chmod 600 zabbix_agentd.psk
    [root@zabbix-proxy ~]# chown .zabbix /root
    [root@zabbix-proxy ~]# ll
    -rw-------  1 zabbix zabbix   65 8月  23 13:42 zabbix_agentd.psk
    

    在proxy配置文件zabbix_proxy.conf中编辑TLS参数,例如set:

    [root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
    TLSConnect=psk # 加密链接方式
    TLSAccept=psk # 接受psk的请求
    TLSPSKFile=/root/zabbix_proxy.psk # psk加密文件位置
    TLSPSKIdentity=PSK001 # 身份认证名
    

    在Zabbix前端配置此proxy的PSK。转到管理→agent代理程序,选择代理,转到“加密”选项卡。在“从代理连接”勾选PSK。将“PSK identity(共享密钥一致性)”字段填上“PSK001”,“共享密钥(PSK)“字段填上“1e1b0e91c35d67e542d26cb7686a4aaf0a96ab26252a2f45398a2a4464a123fb”。点击“更新”。

    重新启动proxy。它将开始使用基于PSK的加密连接到服务器。检查服务器和proxy日志文件查看错误消息。

    zabbix_proxy 测试

    # zabbix_server 配置文件
    [root@zabbix-server ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_server.conf 
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0
    PidFile=/var/run/zabbix/zabbix_server.pid
    SocketDir=/var/run/zabbix
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    Timeout=4
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=3000
    StatsAllowedIP=127.0.0.1
    

    agent端数据到proxy代理端数据进行了psk加密

    web端配置proxy

    对于被动proxy,该过程非常相似。唯一的区别 - TLSAccept=psk在proxy配置文件中设置并在Zabbix前端设置“连接代理” PSK。

  • 相关阅读:
    通过注册表读取设置字体
    StretchBlt
    PatBlt
    如何用MaskBlt实现两个位图的合并,从而实现背景透明
    输出旋转字体
    用字体开透明窟窿
    输出空心字体
    光滑字体
    画贝塞尔曲线
    一些点运算函数
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/15176935.html
Copyright © 2020-2023  润新知