トップ 最新

ただのにっき

2002-10-15(火) [長年日記]

Zebedee

トンネリング実験第二弾はZebedee

stoneはSSLに化けてhttpsの上に乗っかることができたので、職場のproxyを乗り越えるのに使ったが、ZebedeeはSSLを使っているわけではない(?)ので、この手のごまかし用途には向かない気がする(のだけれど、実のところはどうだろう?)。

そこで、職場内のLinuxホストにWindowsクライアントからtelnetで乗り込むところをトンネル化することにした。

このLinuxホストは、telnet接続をlocalhostからしか認めていない。つまりトンネリング前提の設定なのだが、今まではsshを使ったトンネリングを設定していた。このsshを使った方式の難点は、(たとえssh-agentを使うにしても)必ず一度はパスフレーズを入力しなければならない点である。Zebedeeでここを簡略化しよう。

インストール方法は省略。このへんを参考にした。利用するライブラリが決め打ちなので、素直に従った。Windows版はバイナリ持ってきて終わり。

単にトンネリングするだけなら簡単すぎなので、ちゃんと特定クライアントからのアクセスだけを許可するようにしないとね。まずはクライアントで秘密鍵(client.key)とそのfinger printを生成。Cygwin上でzshを使っているので区別がつかないが、Windowsである。

client% zebedee -p > client.key
client% zebedee -P -f client.key
ce49ea463b5a438ce260c07197cb0434e738a008 client

表示されたfinger printは、server上の/etc/zebedee/server.idにでも入れておこう。続いてサーバの設定と起動。

server% cat /etc/zebedee/server.conf
server true
redirect telnet
checkidfile '/etc/zebedee/server.id'
 
server% zebedee -f /etc/zebedee/server.conf

あとは、クライアント側を起動して、telnetでつないでみる。

client% zebedee -f client.key 23:server:23
client% telnet localhost 23
 
Kondara MNU/Linux 2000 (Sushi)
Kernel 2.2.16-5k on an i686
login:

「-f client.key」を指定しないと接続できないことも確認したから、これでOKだろう。サーバ側のlisten portは1024より大きな数字なので一般ユーザでも実行できるけど、いちおうzebedeeというユーザを作ってその権限で動くようにしておいた。

うーん、確かに簡単だ。外部とのトンネルにも使ってみたいが……。

tDiary: 本日のハンティング

Masaki's irresiponsible daysを捕獲。

Rava

わははは、すげー。pure RubyのJavaVMだって〜。

こういうの見ると、感動しちゃうなー。この上でJRuby動かすとか、夢は広がるよねっ(広がりません)。

Zebedee(2)

「ごまかし用途には向かないかも」と書いたけど、よく考えてみるとSSLを使っている場合、proxy管理者がふと疑問に思ってそのサイトにHTTPSでアクセスしたら、その先がSSHにトンネルされてるなんてことはモロわかりなのだ。

% w3m -dump_head https://server/
SSH-1.99-OpenSSH_3.4p1
Protocol mismatch.

てね。

ということは、下手な文字列を返してこない、しかも公開暗号鍵を使って見知らぬホストとの通信はいっさい行わない、Zebedeeを使った方が安心なんじゃねーの?

だとすると、こないだの図にある両端のstoneはZebedeeに置き換えた方がいいということになる。うーん、奥が深い。