とあるサーバへの接続(pop, telnet, ftp)がセキュアではないのでずっと不安なのだが、ルート権限がないので sshd も動かせない。 以前 sshd を一般ユーザで動かそうとしたのだが、その時は失敗。
今回 Zebedee を知ったので試してみることにした。Zebedee はフリーのセキュアなトンネルプログラム。 設定無しで動く/Windows上でも動く/通信の圧縮あり/特許問題なし/GPLあたりが特長。
Debian GNU/Linux ではまだパッケージ化されていないようなのでソースからビルド。 インストールに必要なライブラリも一応一緒に作ることにする(Zebedee の Makefile が Zebedeeアーカイブをを展開先の親ディレクトリに各ライブララリパッケージを展開してある事を前提としているので、その方が楽)。
Zebedee のサイトからソースパッケージと必要なライブラリ(zebedee-2.2.1.tar.gz, blowfish-0.9.5a.tar.gz, zlib-1.1.3.tar.gz, bzip2-1.0.1.tar.gz を作業ディレクトリにとってくる。
ビルドする環境は Debian GNU/Linux、インストール先を /usr/localzebedee-2.2.1 とする。
$tar zxvf blowfish-0.9.5a.tar.gz $cd blowfish-0.9.5a $make optimize $cd .. $tar zxvf zlib-1.1.3.tar.gz $cd zlib-1.1.3 $./configure $make $cd .. $tar zxvf bzip2-1.0.1.tar.gz $cd bzip2-1.0.1 $make $cd .. $tar zxvf zebedee-2.2.1.tar.gz $cd zebedee-2.2.1 $make OS=linux $make install OS=linux ROOTDIR=/usr/local/zebedee-2.2.1 $cd doc_jp $make $make install ROOTDIR=/usr/local/zebedee-2.2.1
でインストール終了。ローカルでテストしてみる。
zebedee -s でサーバを起動。 telnet サーバをたちあげていないので smtp にトンネリングしてみる。 zebedee localhost:smtp でクライアントを起動。
zebedee(4621/1024): Listening on local port 3401
と表示されたので telnet localhost 3401 で接続してみる。 成功。
ということで次は接続先のサーバ(FreeBSD)にインストール。 zebedee の make で OS=freebsd にするのと、ROOTDIRを $HOME/local/zebedee-2.2.1 にする以外は同じ。
で今度はローカルからFreeBSDサーバへ接続してみる。 FreeBSD 側で zebedee -s。 失敗。
zebedee(50819/5152): ERROR: can't resolve host or address 'localhost'
あちゃ。localhost でひけないか。 zebedee -s 実際のサーバ名 で起動する。
クライアント側から telnet で接続してみる。 zebedee 実際のサーバ名:telnet でクライアントを起動。
zebedee(8807/1024): Listening on local port 2324
と出たので telnet <i>実際のサーバ名</i> 2324 で telnet 接続。 成功。
やほ。成功。 問題は Zebedee サーバが落ちたときに telnet で入って起動しなおさなければならない事。 ま、しょうがないかなぁ。 cron まわして落ちていたら再起動するようにするかな……
次は pop の設定。 fetchmail で zebedee を利用するようにする。 fetchmail-with-zebedee.conf に
defaults no mimedecode pass8bits poll popサーバ名 protocol pop3 via localhost user ユーザ名 password パスワード fetchall
と書いておき、
$zebedee -e "fetchmail -f fetchmail-with-zebedee.conf --port %d" popサーバ名:pop3
を実行。%d がトンネルのローカルポートに置換されて fetchmail が実行されるのでこれでトンネルを開いて pop する事ができる。 もちろん、ローカルポート番号を指定して Zebedee クライアントを起動しておいて、fetchmail の設定ファイルにそのポート番号を指定しておいても可能。
とりあえずこれである程度安心。 接続が横取りされているかチェックするには Identity Checking をしなければならない(し Zebedee はそれが可能だ)が、面倒になってくるのでそこまではいいにする。
記事「Unison で展示会機器のセットアップ」に、
wtnabe 2004-06-10 15:51:09 rsync もまともな認証とは呼べないような気がしますが。。。同じことをするなら tcpwrapper を使うって形になるんでしょうけど、Zebedee などで認証を掛けるともっと融通が利いてなおかつセキュアなんじゃないでしょうか。
という貴重なコメントをいただく。
Zebedee 最近使ってなかったな。ホスティングサーバ(FreeBSD)がSSH接続を提供してくれていなかった時は、Linux BOX からZebedee 経由で telnet したり、mirror したりしていた。
ちなみに今回の用途では、通信路の暗号化はあまり重視していない(社内ネットワークで、対象ファイルはもともと皆が閲覧できるものだし、端末の前にも座れるから)。
というのが問題。
c:ドライブ全体(だけでなく全てのドライブ)をパスワード無しで「読み書き可能なWindowsファイル共有」しているような感じであり、気持ち悪い。
平文でパスワードが流れることはないし、Unison でもこれぐらいの認証ができれば今回の用途では十分という感じ。
Windows 同士だと結局一方は Unison を Socket メソッドで起動しなければならない。 そのポートへは認証有のZebedeeトンネルで接続するとして、外部からは直接アクセスできないようにしなければならないので面倒。
Zebedee 自体はナイスなプログラムではあるのだが、Unison と組み合わせには使えないかな。 普段使いには Unison + SSH だし。
本家に Windows 版もあるのか。 インストーラの形になっているがインストールされる zebedee.exe は単体でも動く。 Unison との連携は別にしても、入れておいて損はないのでこれもUSBメモリにいれておこう。
Unison + Zebedee がらみで、自分が使っている Windows XP の ICF を試してみる。
「ローカルエリア接続のプロパティ」で「インターネット接続ファイアウォール」をチェック。
このままだとファイル共有できないので(そのホストへだけでなく、他のホストの共有ディレクトリへのアクセスも駄目だった)同「設定...」からサービスを追加。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。