2017年4月1日土曜日

Zabbix 통신의 암호화(PSK) windows용

본 내용은 Zabbix 3.0을 기준으로 하겠습니다.
암호화에 대해서 Linux관련 자료는 많이 있습니다만, windows용은 적은것 같아 여기서는 windows용을 기준으로 하겠습니다.
그러나, 특별한 차이는 없습니다. Download하는 곳이 틀릴 뿐입니다.
Zabbix Server와 Zabbix agent간의 통신을 암호화 하는 것에 대해서 설명드리겠습니다.
암호화란 Zabbix Server와 Zabbix Agent가 서로 특별한 기약으로 하는 통신을 말합니다. 암호로 통신하므로 옆에서 봐도 뭘 전송하는지를 알수 없습니다. 허가 받지 않은 호스트로 부터의 요청은 거부할 목적으로 사용합니다.
그럼 Zabbix에 설정하는 방법을 알아보도록 하겠습니다.

Zabbix에 PSK(Pre-Shared Key/사전공유키)를 사용해 보겠습니다.

1. PSK를 만들겠습니다.

# psktool -u zabbix -p zabbix.psk -s 32
만약, psktool 이 없는 경우에는
-bash: psktool : コマンドが見つかりません
# yum install gnutls-utils -y
를 인스톨 합니다.

2. zabbix.psk를 수정

vi로 zabbix.psk를 열어 앞부분에 있는 zabbix:부분을 지움니다.
zabbix:부분은 유져를 표현하므로 여기서는 사용안합니다.

3. windows용 zabbix agent를 download합니다.

https://support.zabbix.com/browse/ZBXNEXT-3047
에 있는 Zabbix-agent-3.0.1-with-OpenSSL-1.0.2c-WinAll.zip을 Download합니다.
적당한곳에 해동을 합니다.
폴더명은 zabbix로 하는 편이 편할듯 합니다.

4.windows 컴퓨터에 zabbix.psk을 배치 합니다.

적당한 폴더에 zabbix.psk를 복사해서 넣습니다.
저의 경우에는 Zabbix를 해동한 곳에 같이 넣었습니다.
C:\tmp\zabbix\conf

5.zabbix-agent.win.conf파일의 수정

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=zabbix ##zabbix.psk을 작성한 유져명을 사용합니다.
TLSPSKFile=C:\tmp\zabbix\conf\zabbix.psk   ##zabbix.psk파일이 있는 곳입니다.


6.호스트 작성

Zabbix WEB에서
설정 → 호스트 → 호스트작성 버튼을 클릭할지 아니면 기존의 호스트명을 클릭합니다.
그리고 암호화를 클릭합니다.

 호스트에 접속에서 PSK를 선택합니다.
호스트에서 접속에서 PSK를 선택합니다.
PSK 아이덴티티에서는 zabbix.psk를 만들때 사용한 유져명을 사용합니다.
PSK에는 zabbix.psk의 내용을 적습니다.이때 유져명은 필요하지 않습니다.

그리고 갱신을 클릭하면
호스트의 메인화면으로 가서 위와 같은 설정이 보일 것입니다.


7.Zabbix Agent 실행

Windows의 서버스 에서 Zabbix를 기동합니다.
Windows용 zabbix agent실행은
https://www.zabbix.com/documentation/3.0/manual/appendix/install/windows_agent
를 참조해 주시길 바랍니다.


8.Agent의 확인

   zabbix_get을 이용해 확인을 합니다.
# zabbix_get -s 192.168.137.139 -k "agent.ping"
zabbix_get [3689]: Get value error: ZBX_TCP_READ() failed: [104] Connection reset by peer
zabbix_get [3689]: Check access restrictions in Zabbix agent configuration
이 에러는 psk를 이용하고 있는데, zabbix_get을 사용할때는 psk를 사용안하므로 일어나는 에러입니다.
다음과 같이 하면 문제가 없습니다.
# zabbix_get -s 192.168.137.139 --tls-connect psk --tls-psk-identity zabbix --tls-psk-file zabbix.psk -k "agent.ping"
1
이것으로 확인을 하였습니다.

Zabbix Agent log파일에서
active check configuration update from [192.168.137.138:10051] started to fail (TCP successful, cannot establish TLS to [[192.168.137.138]:10051]: SSL_connect() returned SSL_ERROR_SSL: file .\ssl\s3_pkt.c line 1472: error:1409445B:SSL routines:ssl3_read_bytes:reason(1115): SSL alert number 115: TLS read fatal alert "unknown PSK identity")
에러가 발생할경우에는 zabbix_agent.win.conf파일의 TLSPSKIdentity에 psk작성 틀리다는 뜻이니 확인해 보시길 바라겠습니다.

또, Zabbix Agent LOG에서
failed to accept an incoming connection: from 192.168.137.138: unencrypted connections are not allowed
이 에러의 경우에는 6.호스트 작성d에서 호스트에 접속부분에 PSK가 선택되어 있는지 확인해 보시길 바라겠습니다.

이상입니다.

0 件のコメント: