外部に借りているVPSを、zabbixで監視したいけど、平文でやり取りするのは不安・・・
そんなとき、stunnelを使ってみませんか。
自分もどうしようかと悩んでいた時、@BlueSkyDetector氏の「そういえばZabbixの通信暗号化ってStunnelを使えいいじゃん。あとで試そう。」ってつぶやきを見つけて、挑戦してみました。
しかもstunnelって、実はcentosを最小インストールしても入ってくる身近な存在だったのです。
やりたいことをまとめると、
1 zabbixサーバ-zabbixエージェント間の通信を暗号化したい。
2 第三者がzabbixエージェントに接続できないようにしたい。
さて構成ですが、こんな感じです。
紺色の矢印が、平文でながれるところです。
さて方法ですが、まず以下の証明書を用意してください。
1 サーバの秘密鍵
2 サーバ証明書
3 サーバ証明書に署名したオレオレCAの証明書
このうち 3 の証明書が、第三者を締め出す肝になります。
以下、証明書は、/etc/stunnel 配下に配置、設定ファイルは /etc/stunnel.conf とします。
【zabbixエージェント側の作業】
zabbixサーバからの接続を受け付けるので、stunnelはサーバモード(デフォルト動作)で動作させます。
1 証明書の配置
上記1~3の証明書を、配置します。
2 CA証明書の名前をハッシュ化
CA証明書の指定の仕方は二通りあって、CApathでディレクトリを指定するか、CAfileでファイル名を直接指定します。
CApathを使う場合、配下のCA証明書の名前はハッシュ化されていないといけないので、以下のコマンドを実行してください。
#c_rehash /etc/stunnel
ちなみにc_rehashコマンドは、CentOSだと、openssl-perl パッケージに入っています。
3 設定ファイルの記述
[/etc/stunnel.conf]
pid = /var/run/stunnel.pid
cert = /etc/stunnel/server.crt
key = /etc/stunnel/server.key
[zabbix]
accept = 10058
connect = 10050
verify = 2
CApath = /etc/stunnel
;CAfile = /etc/stunnel/cacert.pem
acceptで待ち受けポート、connectで接続先サーバを指定しています。
これだと、すべてのローカルアドレス:10050 で待ち受け、localhost:10050 に転送することになります。
また、verifyでクライアント認証を有効にしています。
4 プログラムの起動
# stunnel /etc/stunnel.conf
【zabbixサーバ側の作業】
zabbixサーバからエージェントに対して接続にいくので、stunnelはクライアントモードで動作させます。
1 証明書の配置
上記1~2の証明書を、配置します。
面倒なので、同じ証明書を使っちゃいます。
2 3 設定ファイルの記述
[/etc/stunnel.conf]
pid = /var/run/stunnel.pid
key = /etc/stunnel/sakura.shinobi.jp.key
cert = /etc/stunnel/sakura.shinobi.jp.crt
[zabbix_client]
client = yes
accept = 127.0.0.1:10060
connect = zabbix-agent.hogehoge.com:10055
3 プログラムの起動
# stunnel /etc/stunnel.conf
これで、zabbixサーバのlocalhost:10060 に接続すると、zabbixエージェントから応答が返ってきます。
また、openssl s_clientコマンドで、直接zabbixエージェントのstunnelに接続しようとすると、怒られますので、クライアント認証も機能しているようです。
なお通信経路の暗号化だけであれば、zabbixサーバ側のstunnelにkey、certで証明書を指定する必要はありません。
これでVPSにいたずらされることもなくなって、めでたしめでたし
そんなとき、stunnelを使ってみませんか。
自分もどうしようかと悩んでいた時、
しかもstunnelって、実はcentosを最小インストールしても入ってくる身近な存在だったのです。
やりたいことをまとめると、
1 zabbixサーバ-zabbixエージェント間の通信を暗号化したい。
2 第三者がzabbixエージェントに接続できないようにしたい。
さて構成ですが、こんな感じです。
紺色の矢印が、平文でながれるところです。
さて方法ですが、まず以下の証明書を用意してください。
1 サーバの秘密鍵
2 サーバ証明書
3 サーバ証明書に署名したオレオレCAの証明書
このうち 3 の証明書が、第三者を締め出す肝になります。
以下、証明書は、/etc/stunnel 配下に配置、設定ファイルは /etc/stunnel.conf とします。
【zabbixエージェント側の作業】
zabbixサーバからの接続を受け付けるので、stunnelはサーバモード(デフォルト動作)で動作させます。
1 証明書の配置
上記1~3の証明書を、配置します。
2 CA証明書の名前をハッシュ化
CA証明書の指定の仕方は二通りあって、CApathでディレクトリを指定するか、CAfileでファイル名を直接指定します。
CApathを使う場合、配下のCA証明書の名前はハッシュ化されていないといけないので、以下のコマンドを実行してください。
#c_rehash /etc/stunnel
ちなみにc_rehashコマンドは、CentOSだと、openssl-perl パッケージに入っています。
3 設定ファイルの記述
[/etc/stunnel.conf]
pid = /var/run/stunnel.pid
cert = /etc/stunnel/server.crt
key = /etc/stunnel/server.key
[zabbix]
accept = 10058
connect = 10050
verify = 2
CApath = /etc/stunnel
;CAfile = /etc/stunnel/cacert.pem
acceptで待ち受けポート、connectで接続先サーバを指定しています。
これだと、すべてのローカルアドレス:10050 で待ち受け、localhost:10050 に転送することになります。
また、verifyでクライアント認証を有効にしています。
4 プログラムの起動
# stunnel /etc/stunnel.conf
【zabbixサーバ側の作業】
zabbixサーバからエージェントに対して接続にいくので、stunnelはクライアントモードで動作させます。
1 証明書の配置
上記1~2の証明書を、配置します。
面倒なので、同じ証明書を使っちゃいます。
2 3 設定ファイルの記述
[/etc/stunnel.conf]
pid = /var/run/stunnel.pid
key = /etc/stunnel/sakura.shinobi.jp.key
cert = /etc/stunnel/sakura.shinobi.jp.crt
[zabbix_client]
client = yes
accept = 127.0.0.1:10060
connect = zabbix-agent.hogehoge.com:10055
3 プログラムの起動
# stunnel /etc/stunnel.conf
これで、zabbixサーバのlocalhost:10060 に接続すると、zabbixエージェントから応答が返ってきます。
また、openssl s_clientコマンドで、直接zabbixエージェントのstunnelに接続しようとすると、怒られますので、クライアント認証も機能しているようです。
なお通信経路の暗号化だけであれば、zabbixサーバ側のstunnelにkey、certで証明書を指定する必要はありません。
これでVPSにいたずらされることもなくなって、めでたしめでたし
PR
ブログ内検索
カテゴリー
最新記事
(11/08)
(11/07)
(12/27)
(12/07)
(09/28)
最新トラックバック
プロフィール
HN:
アフロ
性別:
非公開
リコメンド