Zabbix モジュール間の通信を暗号化する

4,335 views
4,212 views

Published on

Zabbix モジュール間の通信を暗号化する
~拠点間通信をstunnelで暗号化~

Published in: Engineering
2 Comments
6 Likes
Statistics
Notes
  • >alice-xu 様
    確かにSSHポートフォワードでも良いですね
    ただ‥SSHのセッション、幾分切れてしまいやすい気がします‥(汗)
    再接続・フォワーディング状態の管理までできると良いのですが‥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • SSHポートフォワードでも良さそうですね。L3で繋ぐ場合については少し前にOpenVPNを使った場合の例 http://tmblr.co/ZoMZAt1H7TszC を書いたりしたので、興味深く拝見しました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
4,335
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
11
Comments
2
Likes
6
Embeds 0
No embeds

No notes for slide

Zabbix モジュール間の通信を暗号化する

  1. 1. Zabbixの通信を暗号化する!! ~拠点間通信をstunnelで暗号化~ 山根 健志(Takeshi YAMANE)/ふりっぱぁ Twitter : @fripper1214 fripper1214 at gmail.com 2014/06/29
  2. 2. 自己紹介 山根 健志 (Takeshi YAMANE) https://twitter.com/fripper1214 https://www.facebook.com/takeshi.yamane.9 • 都内某社のプログラマ • 開発だけでなく、導入支援やらHW周りやら色々‥ • 業務でもZabbixを愛用(2.0.x) • アニメやら音楽やら色々好き • 以前は自宅サーバとか置いていたけれど、今は引退‥ • Zabbixとの出会いは数年前(1.6.xの頃)
  3. 3. Zabbixが行う通信は平文 • 現行バージョン(2.2.4)およびそれ以前のZabbixでは、監 視動作に関する通信は、全て暗号化されず、平文にて通 信されている‥ • 公衆回線経由だと業務に関する監視とか心配‥ ⇨暗号化して、秘匿性を維持確保したい • zabbix_server  zabbix_agentd • zabbix_proxy  zabbix_agentd • zabbix_server  zabbix_proxy • zabbix_sender ⇨ zabbix_server • zabbix_sender ⇨ zabbix_proxy • zabbix_get ⇨ zabbix_agentd
  4. 4. 暗号化のために使う手法 • 離れた地点を、暗号化した通信経路でつなぐ技術 • NTTやSoftBankなどの業者が提供する閉域VPN ⇨コストが掛かり過ぎる!高い! • OpenVPN等を利用したインターネットVPN ⇨各拠点でサブネットやらルーティングやらを 考慮して設計する必要がある • もっとカジュアルに暗号化したいなぁ ⇨httpsなどのように、TCPソケット通信単位で SSLを使って暗号化すればいいじゃない!!
  5. 5. SSL暗号化のために使う道具 • TCPソケット通信の暗号化処理・復号処理を行って くれるようなツール ⇨ stunnel https://www.stunnel.org/ • Linux・Windows、どちらも対応している 最新版は 5.02(2014/06/28現在) CentOS等には公式rpmもあるが‥古い‥orz
  6. 6. stunnelを使った通信の暗号化 • stunnelでは色々な使い方で通信暗号化ができるが、今 回のターゲット、Zabbixは接続元・接続先、双方が暗号 通信に非対応なので、接続元・接続先の双方にstunnel を配置して、経路の暗号化を行う 接続元 モジュール 接続先 モジュール 接続元 モジュール 接続先 モジュール 平文による通信 平 文 に よ る 通 信 stunnel 暗号化 stunnel 復号 平 文 に よ る 通 信 暗号通信
  7. 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. 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. 9. stunnelの導入 • ソースからインストールするなら‥ configure / make / make install • yum / rpm でインストールするなら‥(CentOS6) yum install stunnel ⇨標準だとinitスクリプトはインストールされない Zabbixの通信用にサービス常駐させるので必要 ⇨ http://www.gaztronics.net/scripts/stunnel.php 43行目のstunnel実行プログラムフルパスを修正
  10. 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. 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. 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. 13. これで安心!! • 双方のホストで stunnel を常駐させ、常時通信を暗号化す ることで、傍受・改ざんを回避! ⇨ これで安心だねっ\(-o-)/ <忘れちゃいけないこと:SSL 使った暗号化をやるなら‥> ・stunnelで使っている暗号化鍵の流出には注意! ・証明書・鍵の有効期限切れにも注意 ・stunnel はバックエンドに openssl の機能を利用している ⇨ stunnel / openssl を適正に維持管理

×