'03.1.20 ('03.6.16更新)
暗号化トンネルツールです。SSHトンネリングの弱点を色々取り去ったようなものです。UDPが通るのでFTPのトンネルも比較的簡単ですし (専用ツール付属)、シェルとしての機能が無いのがかえって安心です。
Windowsは95から対応しています。MacはOS Xにソースからコンパイルしてインストールです。Release 2.4.0 (02.5.9) からはOS Xに対応して「make OS=macosx」で入ります。(OS X 10.2.3で確認)
(自己責任で行ってください。暗号化されてるかどうかの確認も忘れずに)
本家の「Zebedee: Download」から以下のファイルをダウンロードします。(バージョンはその時によりますね)
すべて同じ (作業用) ディレクトリに入れます。
解凍します。
% tar zxvf zebedee-2.4.1.tar.gz % tar zxvf blowfish-0.9.5a.tar.gz % tar zxvf zlib-1.1.4.tar.gz % tar zxvf bzip2-1.0.1.tar.gz
zebedee以外を先にmakeします。インストールの必要はありません。
% cd blowfish-0.9.5a % make % cd ../zlib-1.1.4 % ./configure % make % cd ../bzip2-1.0.1 % make
「OS=macosx」のオプションを付けてmakeしインストールします。
% cd ../zebedee-2.4.1 % make OS=macosx % sudo make install OS=macosx
インストール先とファイル:
mkdir -p /usr/bin /usr/man/man1 /usr/lib/zebedee install zebedee /usr/bin install -m 0755 ftpgw.tcl /usr/bin install zebedee.1 /usr/man/man1 install ftpgw.tcl.1 /usr/man/man1 install server.zbd vncviewer.zbd vncserver.zbd server.key server.id client1.key client2.key clients.id /usr/lib/zebedee install README.txt LICENCE.txt GPL2.txt CHANGES.txt zebedee.html ftpgw.tcl.html zebedee.ja_JP.html zebedee.iss /usr/lib/zebedee
繋ぐ2つのマシンにそれぞれインストールしたあとで、リモート側をサーバモードで起動。たとえばリダイレクトは80だけ許可。(デフォルトはすべてのポートを許可)
% zebedee -s -r 80
ローカル側でクライアントを起動。たとえば、リモート (192.168.10.1) の80番ポートへ、ローカルの8080番ポート経由で接続。
% zebedee 8080:192.168.10.1:80
上記で「localhost (127.0.0.1)」のポート「8080」にアクセスすると「192.168.10.1」のポート「80」に繋がるようになります。
賢明な読者ならお気付きでしょうが、ここまで認証は必要ありません。つまり、暗号化されているけど、Zebedeeを持ってれば誰でも参加できる状態です。その先のアプリケーションで認証してもいいのですが、Zebedeeにも認証機能があります。
秘密鍵を作り、その指紋 (フィンガープリント(ハッシュ値)) を相手に送って認証とします。双方向認証もできますが、まずはサーバでクライアント認証をしてみましょう。
% zebedee -p > client.key % zebedee -P -f client.key > client.id
client.key (秘密鍵) の内容 (例)。ランダムに作られます。
privatekey "0db74e3c46e5db368505666cbac27dbe07fd07ea"
client.id (指紋) の内容 (例)。後ろはクライアント名。
f811c5c66f5fbc312a14fd76fccd909142265c8f Macintosh.local.
client.idをサーバに渡して登録してもらいます。ここに書いてある鍵をそのまま使わないように。
server.zbdという設定ファイルを作ります。その内容。
checkidfile './clients.id' # 絶対パスの方がいいかも
clients.idの内容は、クライアントから受け取ったclient.idの内容を1行ずつ並べたもの。複数登録だからclients.idね。
サーバ
% zebedee -s -f ./server.zbd
クライアント
% zebedee -f ./client.key 8080:192.168.10.1:80
server.zbdは、鍵に限らず様々な設定を行うファイルです。クライアントでも直接秘密鍵ファイルを指定せずに、設定ファイルを使うこともできます。使うとしたら下記のように指定します。
include './client.key'
サーバ認証も仕組みは同じです。双方向なら互いに相手の「指紋」を持ち合います。
# server.zbd include './server.key' checkidfile './clients.id'
# client.zbd include './client.key' checkidfile './server.id'
プロセスを止めればいいんですが、下記が簡単かな。
% killall zebedee
安全度を高めるためには、多くの項目を指定する必要があります。全部コマンドラインで指定するより設定ファイルで指定する方が楽ですね。さらに高度な設定もできますよ。
サーバが192.168.10.1でクライアントが192.168.10.2、ポートが8080の場合。ファイル名はserver.zbdとclient.zbd。
# serverとして動かす server true # TCP/IPとUDP/IP両方有効にする ipmode both # 追加の設定ファイル。ここではサーバ側のキーの書いてあるファイル include './server.key' # 接続を許可する前にチェックするクライアントの指紋を書いてあるファイル checkidfile './clients.id' # サーバがリダイレクトするポートを制限 redirect "8080" # ターゲットホストを指定する。このサーバより先は暗号化されないが、 # 他のサーバを指定して接続する事もできる target 192.168.10.1:8080 # 接続を許可するクライアントを制限 checkaddress 192.168.10.2 # 接続を許可するネットワークを制限 listenip 192.168.10.1
# 追加の設定ファイル。ここではクライアント側のキーの書いてあるファイル include './client.key' # 接続を許可する前にチェックするサーバの指紋を書いてあるファイル checkidfile './server.id' # 接続サーバ (必須) serverhost 192.168.10.1 #トンネルに接続を許すIPアドレスを制限。1つのみ # 同じクライアント上なら127.0.0.1。localsource trueとしてもいい listenip 127.0.0.1 # トンネル接続先 (サーバ) のIPアドレスを制限 checkaddress 192.168.10.1 # クライアントが接続を待つポート番号のリスト # クライアントのポート:ターゲットホスト:ターゲットのポート tunnel 8080:192.168.10.1:8080
% zebedee -f <パス>/server.zbd
% zebedee -f <パス>/client.zbd