stunnelを使ってsynergyを暗号化して安全に使う

複数のマシンでキーボード・マウス・クリップボードが共有でき、すごく便利なsynergyですが、通信は暗号化されていないため、職場などではパスワードなどの入力が通常経路を流れるのが気になります。そこで暗号化に対応していない通信経路をまるごと暗号化するstunnelを利用してみました。

今回は、下図のようなWindowsをサーバにしMacOSXをクライアントとしてつなぐ構成で説明します。つまりWindowsのキーボード・マウスでMacを操作します。逆の場合や両方共同じOSであってもこの可能です。

クライアント機のsynergyがローカルに存在するstunnelの24800ポートに接続し、stunnelからサーバ側stunnelの25800ポートへSSL通信を行い、サーバ機のsynergyへつなぐという流れになります。単純にstunnelがsynergyの通信を暗号化して中継してくれるというだけです。

synergyはインストールされ動作している前提で話をすすめます。 Windowsは通常のSynergy(1.3.6)、MacはSynergyKM(1.0b7)を利用しています。ポート番号などはデフォルト(24800)だと仮定しています。変えている場合は適時読み替えてください。

stunnelのインストール

Windows

Windowsは公式サイトでバイナリファイルが公開されているのそれをダウンロード後、インストールします。

stunnel公式サイトから2011年02月6日現在最新のバージョンであるstunnel-4.35-installer.exeをダウンロードし、インストールします。

MacOS

MacOSはソースコードをコンパイルするか、homebrewやmacportsパッケージ管理ソフトを使います。 今回はhomebrewで行いました。

$ brew install stunnel

証明書の作成

標準で証明書が存在するので必ず作成する必要はありませんが、セキュリティを考慮すると作成するほうが望ましいです。証明書作成には、OpenSSLが必要です。

Windowsの場合は、OpenSSLを入れる必要があります。stunnel公式サイトのここからopenssl.zipをダウンロードして解凍して下さい。

Macでは標準で含まれているので、別途インストールする必要はありません。

証明書を作成する前に、作成用の設定ファイルが必要です。 公式サイトからstunnel-4.35.tar.gzファイルをダウンロード、解凍後してstunnel.cnfを取り出しください。あとは必要ありません。

以下のコマンドを実行することで、証明書(stunnel.pem)が作成できます。 いくつか質問されますが、適当に答えて問題ありません。

openssl req -new -x509 -days 365 -nodes -config stunnel.cnf -out stunnel.pem -keyout stunnel.pem

作成されたstunnel.pemをこの次の項で説明する設定ファイルと同じ場所へ移動してください。

stunnelの設定

stunnel.confを編集します。 Windowsではスタートメニュのstunnelからedit stunnel.confを選ぶとメモ帳が立ち上がります。 MacOSでhomebrewの場合は/usr/local/etc/stunnel/内に存在しているのでemacsなどで編集します。

stunnelサーバ側の設定

stunnel.conf

cert = stunnel.pem
sslVersion = SSLv3
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
[synergy]
accept = 25800
connect = 24800

stunnelクライアント側の設定

stunnel.conf

cert = /usr/local/etc/stunnel/stunnel.pem
sslVersion = SSLv3
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client = yes
[synergy]
accept = 24800
connect = 192.168.1.5:25800

11行目のconnectはサーバ機のIPアドレスとポート番号です。環境に合わせて変更してください。

synergyの設定

今まで正常に動作している場合は、synergyサーバ側は設定を変える必要がありません。 クライアント側は、今まで設定していたマシン名やIPアドレスをlocalhostあるいは127.0.0.1に変更してください。

動作確認

windowsでは、スタートメニュ>stunnel>run stunnelで起動します。タスクバーにアイコンが出てくると起動が住んでいます。

Macでは、ターミナル上で起動します。

$ stunnel

netstatの結果がLISTENしていれば起動しています。

$ netstat -an | grep 24800

最後にsynergyをサーバ側→クライアント側の順で立ち上げ、動作していれば問題なく暗号化されています。

仕上げ

stunnelを自動起動にします。

Windowsでは、スタートメニュー>stunnel>install serviceを選択します。サービスとしてインストールされ、次回Windows起動時には自動的に立ち上がります。

Macでは以下のスクリプトをlanchdに組み込むことで、自動起動にします。

stunnel.plistを ~/Library/LaunchAgents/ (ユーザ>ライブラリ>LaunchAgents)に移動します。 再起動することで、起動時にstunnelが起動するようになります。

おまけ

Mac上でstunnelを終了せたい場合は、USR2のシグナルを送ると終了できます。

$ ps aux | grep stunnel $ kill -USR2 <pid>

“stunnelを使ってsynergyを暗号化して安全に使う” への 2 件のフィードバック

  1. stunnelサーバ側の設定は,
    accept = 25800
    connect = 24800
    が正ですよね?

  2. > rkyymmt さん

    はい、それが正しいです。
    すみません、修正しました。ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。