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頁面配置