Using PSK Encryption on Zabbix
PSK 를 이용한 ZABBIX 암호화 설정
PSK 는 사전공유된 키를 이용하여 암호화 하는 방식입니다. 암호화 방식에는 PSK 외에도 인증서를 이용한 방식도 있습니다.
이 매뉴얼은 OpenSSL 1.1.1g 버전으로 설치된 ZABBIX 5.0 LTS 를 기준으로 하고 있습니다. 기본적인 설정방법은 이전버전에서도 크게 다르지 않습니다.
키 생성시 OpenSSL 1.1.1g 의 LD_LIBRARY_PATH 가 등록 되어있지 않으면 오류가 발생하기 때문에 export 해주어야 합니다. OpenSSL 1.1.1g 버전은 128 hexadecimal digits 을 지원하기 때문에 128 로 생성하였습니다.
참조 : https://www.zabbix.com/documentation/current/manual/encryption/using_pre_shared_keys
LD_LIBRARY_PATH 또는 ldconfig 에서 라이브러리 등록이 되어 있는지 확인합니다.
LD_LIBRARY_PATH 확인
[root@172-16-11-99 /]# echo $LD_LIBRARY_PATH
ldconfig 확인
// OpenSSL 1.1.1g 버전 등록이 안되있는 경우 [root@172-16-11-99 ~]# ldconfig -p | grep ssl libssl3.so (libc6,x86-64) => /lib64/libssl3.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 libssl.so (libc6,x86-64) => /lib64/libssl.so libevent_openssl-2.0.so.5 (libc6,x86-64) => /lib64/libevent_openssl-2.0.so.5 // OpenSSL 1.1.1g 버전 등록이 되어 있는 경우 [root@172-16-11-99 ld.so.conf.d]# ldconfig -p | grep ssl libssl3.so (libc6,x86-64) => /lib64/libssl3.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1g/lib/libssl.so.1.1 libssl.so (libc6,x86-64) => /usr/local/openssl-1.1.1g/lib/libssl.so libssl.so (libc6,x86-64) => /lib64/libssl.so libevent_openssl-2.0.so.5 (libc6,x86-64) => /lib64/libevent_openssl-2.0.so.5 libcrypto.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1g/lib/libcrypto.so.1.1 libcrypto.so (libc6,x86-64) => /usr/local/openssl-1.1.1g/lib/libcrypto.so
OpenSSL 1.1.1g library 등록이 안되어 있다면 PATH 를 export 해줍니다.
[root@172-16-11-99 /]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl-1.1.1g/lib/
PSK 생성
[root@172-16-11-99 /]# mkdir -p /etc/zabbix/secure [root@172-16-11-99 /]# /usr/local/openssl-1.1.1g/bin/openssl rand -hex 128 | tee /etc/zabbix/secure/zabbix_agent2.psk 6887536594d78612454a4572bb46df18136e7e69fceedfc6e797f555b87763f7b90bac3c70b427b52e03d41515e99e925e0fc4cebf6615d38eaa49bcb7d0d09e6c337337b32fcff71ca6113791a9f97df4a44b0296a04742135169ac310ce05b89cee6ed06eba15f8d7a3abf59f8c88bd9523f3a1f278cac63f934ed1579916d
생성된 암호키값은 웹 프론트엔드의 호스트 설정에 넣어줘야 하므로 기록해 두어야 합니다.
만약 기록을 못했다고 해도 psk 파일에 저장이 되어 있기 때문에 언제든지 확인 가능합니다.
ex) cat /etc/zabbix/secure/zabbix_agent2.psk 6887536594d78612454a4572bb46df18136e7e69fceedfc6e797f555b87763f7b90bac3c70b427b52e03d41515e99e925e0fc4cebf6615d38eaa49bcb7d0d09e6c337337b32fcff71ca6113791a9f97df4a44b0296a04742135169ac310ce05b89cee6ed06eba15f8d7a3abf59f8c88bd9523f3a1f278cac63f934ed1579916d
agent 설정 수정
TLSPSKIdentity 는 중복될 수 없는 고유값이며, 암호화 되지 않는 텍스트이므로 중요정보를 입력하지 않도록 합니다.
: vi /etc/zabbix/zabbix_agent2.conf
TLSConnect=psk TLSAccept=psk TLSPSKIdentity=PSK001 TLSPSKFile=/etc/zabbix/secure/zabbix_agent2.psk
Agent 재시작
[root@172-16-11-99 /]# systemctl restart zabbix_agent2
Zabbix 웹 프론트엔드를 열고 호스트 설정 화면으로 이동 후 Encryption (암호화) 탭에 들어가서 아래 이미지처럼 agent 설정파일에 넣은 정보를 기준으로 넣어줍니다.
정상적으로 모든 설정이 되었다면 아래 이미지처럼 호스트리스트에 암호화 관련 부분에 녹색불이 켜집니다. 이제부터 서버와 에이전트간 모든 통신은 암호화 되어 전송됩니다.