0x01 前言
我为我的所有虚拟机都配置了zabbix agent以便监控所有信息方便日后的分析。安装配置过程请参考以下链接:
但默认情况下,zabbix是通过不安全的线路进行传输的,有可能造成数据泄露等危险,为此我为我的zabbix服务添加数据证书的配置以便通过加密通道传输数据。
0x02 数字证书
当配置好zabbix服务端和agent后,即可继续配置数字证书的部分,首先需要使用openssl生成数字证书。
我们需要先生成ca证书,然后通过ca证书签发服务器证书与客户端证书。先建立一个文件夹以便存放所有证书文件:
#新建文件夹 [root@web ~]# mkdir zabbix_crt #进入文件夹 [root@web ~]# cd zabbix_crt
然后使用以下命令建立所需要的证书文件。其中CN部分可以修改为服务器的域名或IP,在实际应用中推荐修改为服务器的域名:
#生成ca私钥 openssl genrsa 2048 > ca.key #使用ca私钥建立ca证书 openssl req -new -x509 -nodes -days 1000 -key ca.key -subj /CN=Signing\ CA/OU=Development\ group/O=Zabbix\ SIA/DC=zabbix/DC=com > ca.crt #生成服务器csr证书请求文件 openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server.key -subj /CN=server/OU=Development\ group/O=Zabbix\ SIA/DC=zabbix/DC=com > server.csr #使用ca证书与私钥签发服务器证书 openssl x509 -req -in server.csr -days 1000 -CA ca.crt -CAkey ca.key -set_serial 01 > server.crt #生成客户端csr证书请求文件 openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client.key -subj /CN=client/OU=Development\ group/O=Zabbix\ SIA/DC=zabbix/DC=com > client.csr #使用ca证书与私钥签发客户端证书 openssl x509 -req -in client.csr -days 1000 -CA ca.crt -CAkey ca.key -set_serial 01 > client.crt
完成后,该目录下一共有8个文件:
[root@web zabbix_crt]# ll 总用量 32 -rw-r--r-- 1 root root 1350 1月 8 21:20 ca.crt -rw-r--r-- 1 root root 1679 1月 8 21:20 ca.key -rw-r--r-- 1 root root 1216 1月 8 21:20 client.crt -rw-r--r-- 1 root root 1013 1月 8 21:20 client.csr -rw-r--r-- 1 root root 1704 1月 8 21:20 client.key -rw-r--r-- 1 root root 1216 1月 8 21:20 server.crt -rw-r--r-- 1 root root 1013 1月 8 21:20 server.csr -rw-r--r-- 1 root root 1704 1月 8 21:20 server.key
0x03 服务端
现在服务端的zabbix目录建立一个文件夹,并将以下文件复制到该文件夹下:
- ca.crt
- server.crt
- server.key
#新建文件夹 [root@zabbix_crt ~]# mkdir /usr/local/zabbix/zabbix_crt #复制文件 [root@web zabbix_crt]# cp ca.crt /usr/local/zabbix/zabbix_crt/ [root@web zabbix_crt]# cp server.crt /usr/local/zabbix/zabbix_crt/ [root@web zabbix_crt]# cp server.key /usr/local/zabbix/zabbix_crt/
请注意,如果你通过yum的方式安装zabbix服务端,那么你的zabbix服务端目录应该是:/etc/zabbix。
然后修改配置文件zabbix_server.conf:
#打开文件 [root@web zabbix_crt]# vim /usr/local/zabbix/etc/zabbix_server.conf #修改TLSCAFile配置 TLSCAFile=/usr/local/zabbix/zabbix_crt/ca.crt #修改TLSCertFile配置 TLSCertFile=/usr/local/zabbix/zabbix_crt/server.crt #修改TLSKeyFile配置 TLSKeyFile=/usr/local/zabbix/zabbix_crt/server.key
完成后重启zabbix服务即可:
[root@web zabbix_crt]# systemctl restart zabbix-server
0x04 客户端
客户端和服务端类似,现在agent目录建立一个文件夹,然后将以下文件复制到该文件夹中:
- ca.crt
- client.crt
- client.key
#新建文件夹 [root@zabbix_crt ~]# mkdir /etc/zabbix/zabbix_crt/ #复制文件 [root@web zabbix_crt]# cp ca.crt /etc/zabbix/zabbix_crt/ [root@web zabbix_crt]# cp server.crt /etc/zabbix/zabbix_crt/ [root@web zabbix_crt]# cp server.key /etc/zabbix/zabbix_crt/
然后打开agent配置文件修改以下内容:
#打开文件 [root@web zabbix_crt]# vim /etc/zabbix/zabbix_agentd.conf #修改agent连接模式 TLSConnect=cert #修改传入数据连接模式 TLSAccept=cert #修改TLSCAFile配置 TLSCAFile=/etc/zabbix/zabbix_crt/ca.crt #修改TLSCertFile配置 TLSCertFile=/etc/zabbix/zabbix_crt/client.crt #修改TLSKeyFile配置 TLSKeyFile=/etc/zabbix/zabbix_crt/client.key
完成后重启agent即可:
[root@web zabbix_crt]# systemctl restart zabbix-agent
0x05 监控点
最后在监控点配置中启用数字证书加密连接即可:
修改完成后稍等1分钟即可看到连接状态:
0x06 结语
如果对安全性有更高要求,还可以使用商业数字证书或免费的数字证书(例如:为strongswan配置Encryption Everywhere项目的证书)替换掉自签发的数字证书。
0x07 更新
0x07.1 2017-10-12
因为zabbix官方编译的agent不包含TLS模块,所以windows系统使用官方编译的agent并启用TLS时会无法启动服务,这时候需要手动编译。以下是相关流程: