Zabbix モジュール間の通信を暗号化する
- 2. 自己紹介
山根 健志 (Takeshi YAMANE)
https://twitter.com/fripper1214
https://www.facebook.com/takeshi.yamane.9
• 都内某社のプログラマ
• 開発だけでなく、導入支援やらHW周りやら色々‥
• 業務でもZabbixを愛用(2.0.x)
• アニメやら音楽やら色々好き
• 以前は自宅サーバとか置いていたけれど、今は引退‥
• Zabbixとの出会いは数年前(1.6.xの頃)
- 7. Zabbixの通信にstunnelを挟む(1)
• server(proxy) agentd 間の通信
双方向のtcp接続をそれぞれ転送しなければ監視不成立‥
⇨面倒だし、監視対象が増えると、「エージェント」監視用の
転送待受tcpポートの設定・管理等で破綻‥
server(proxy) agentd
「エージェント」監視関連通信 (get)
10050
10051
「ログ」「アクティブ」監視関連通信 (trapper)
server(proxy) agentd
10050
10051
10050
10051
11050
11051
- 8. Zabbixの通信にstunnelを挟む(2)
• server proxy 間通信
zabbix_proxyは標準だとactive proxy設定
⇨ 片方向の通信経路だけ準備できれば良い
⇨ server側の待受は共通化できるので、
監視対象・拠点数が増えても大丈夫!!
server proxy
「passive proxyの場合」
10050
10051
「active proxyの場合」
server proxy10051 1005111051
agent agent
agent agent
- 9. stunnelの導入
• ソースからインストールするなら‥
configure / make / make install
• yum / rpm でインストールするなら‥(CentOS6)
yum install stunnel
⇨標準だとinitスクリプトはインストールされない
Zabbixの通信用にサービス常駐させるので必要
⇨ http://www.gaztronics.net/scripts/stunnel.php
43行目のstunnel実行プログラムフルパスを修正
- 10. stunnelの設定(1)
• とりあえず key/cert が必要
⇨opensslを使って作る
⇨以下コマンド例(いわゆるオレオレ証明書)
• 用意した証明書を配置する
root# openssl genrsa 2048 > server.key
root# openssl req -new -key server.key > server.csr
root# openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
root# cat server.key server.crt > server.pem
root# cp server.pem /etc/stunnel/
root# chmod 600 /etc/stunnel/server.pem
- 11. stunnelの設定(2)
• stunnel.conf 内の設定
⇨先ほど用意した cert/key を設定
⇨転送接続に関する設定
⇨ server 側
⇨ agent 側
cert = /etc/stunnel/server.pem
key = /etc/stunnel/server.pem
[zabbix-server]
accept = 0.0.0.0:11051 ← 外部からの暗号接続を tcp:11051 で受信し
connect = 127.0.0.1:10051 平文化して localhost の tcp:10051 へ接続
[zabbix-agent-to-server]
client = yes
accept = 127.0.0.1:10051 ← agent からの接続を tcp:10051 で受信し
connect = 192.168.1.206:11051 暗号化して server の tcp:11051 へ接続
- 12. Zabbix側の設定
• zabbix_server.conf 内の設定
ListenIP
外部からの接続は stunnel が受け、server 自身は stunnel から
接続されるだけになるので、127.0.0.1 で十分
• zabbix_proxy.conf 内の設定
Server
proxy が結果を送るべき server は localhost 上の stunnel。
127.0.0.1 とする
• zabbix_agentd.conf 内の設定
ServerActive
agent(active) が結果を送るべき server は localhost 上の stunnel。
127.0.0.1 とする
- 13. これで安心!!
• 双方のホストで stunnel を常駐させ、常時通信を暗号化す
ることで、傍受・改ざんを回避!
⇨ これで安心だねっ\(-o-)/
<忘れちゃいけないこと:SSL 使った暗号化をやるなら‥>
・stunnelで使っている暗号化鍵の流出には注意!
・証明書・鍵の有効期限切れにも注意
・stunnel はバックエンドに openssl の機能を利用している
⇨ stunnel / openssl を適正に維持管理