Stoneでzabbix途中経路を暗号化(続き)

Stoneでzabbix途中経路を暗号化
これの続きです。

Stoneとzabbixの関係図

もう一度設計図を出しておきます。
(2014/05/26 追記)
Stoneでの運用は、長期間再起動を行わないと通信が途切れたり、再起動時間が延びるためにSSH経由に変えました。

■サーバ側でStoneの設定をする
「(1)   あて先ホスト:あて先ポート 受けポート 接続許可リスト」
上記の参考文書のように、あて先ホストとあて先ポートのようだから

localhost:10051 20051/ssl seedslight.com

上記の設定は、このようなルールになると思ってテスト起動。

* localhost の10051ポートに転送する。
* 20051ポートで受け付ける。SSLを復号する。
* seedslight.com のみ接続許可する。

↓テスト起動したときの表示

# Apr 19 11:47:14.451018 3085977296 start (2.3e) [2250]
Apr 19 11:47:14.452366 3085977296 SSL_CTX_use_PrivateKey_file
(/etc/pki/tls/certs/stone.pem) error:02001002:system library:fopen:No such file or directory

エラーがあがる。つまり、公開鍵(または証明書)を相手先において暗号化し、こちらの複合用の鍵を指定する必要がある。
ApacheのSSL証明書を作ったのでそれを流用してしまうのがベストかと思った。READMEの下記の箇所が参考になりそうだ。

passfile= 秘密鍵のパスフレーズを格納したファイルを指定します。
passfilepat= ファイル名のパターンを指定します。
key= 証明書の秘密鍵ファイルを指定します。
certpat= ファイル名のパターンを指定します。
certkey= 秘密鍵付証明書ファイルを指定します。
certkeypat= ファイル名のパターンを指定します。

サーバ側の設定ファイルを作ってみる。

# cp /etc/httpd/conf.d/certs/httpd.crt /etc/pki/tls/certs/stone.pem
# /usr/local/stone/etc/zabbix_ssl.conf

サーバ側の最終的な設定

-q key=/etc/httpd/conf.d/certs/privatekey.httpd.pem
-z key=/etc/httpd/conf.d/certs/privatekey.httpd.pem
localhost:10051 20051/ssl seedslight.com xxx.xxx123xxx.com —
seedslight.com:20050/ssl 20050 localhost —
xxx.xxx123xxx.com:20050/ssl 20052 localhost —

※/etc/httpd/conf.d/certs/privatekey.httpd.pem は /etc/httpd/conf.d/certs/httpd.crtの秘密鍵です。
※証明書と秘密鍵が一つになったファイルを使えばstone.pemは要らないかもしれません。

※Stoneでドメイン名ごとの接続許可を複数記述できるので
seedslight.com xxx.xxx123xxx.comの2つからOKにしています。

※– を行末にくっつけることにより、複数の条件をまとめてかけるという点も重要なので、
 急きょ設計にはないxxx.xxx123xxx.comを付け加えました。

■エージェント側の設定

-a /tmp/stone.log
-q certkey=/usr/local/certs/server/stone_zabbix.pem
-z certkey=/usr/local/certs/server/stone_zabbix.pem
localhost:10050 20050/ssl redalarm.jp —
redalarm.jp:20051/ssl 20051 127.0.0.1

※-a オプションは導入時の接続テストに使ったら、後は削除しておくほうが良いです。接続が全て出るので、大量のログになってしまう。


■反省と今後
サーバ側のstone起動スクリプトはお手製だったので、/var/lock/subsys/stoneが残って起動しないことが多かった。これは次への反省点。
また、/usr/local/stone/etcにおくくらいなら、/etc/stone を掘った方が /etcだけバックアップするといいという
RPMで運用しているサイトのポリシーからずれるのでその方向の改善も必要と思った。