ZEBEDEE(1) User Contributed Perl Documentation ZEBEDEE(1)
NAME
Zebedee --- シンプルでフリーでセキュアなトンネルプログラム
書式
Server:
zebedee -s [-dDtu] [-f file] [-k keybits] [-n name] [-o logfile]
[-r ports] [-v level] [-x config] [-z level] [targethost]
Client:
zebedee [-dDmtu] [-e command] [-f file] [-k keybits] [-n name] [-o
log] [-v level] [-x config] [-z level] [[clientports:]server-
host[:targetport]]
Key generation:
zebedee -p [-f file]
zebedee -P [-p] [-f file]
Hash generation:
zebedee -h [file ...]
zebedee -H string ...
Windows Service:
zebedee [-n name] -S [install[=file] | remove | run]
DESCRIPTION
Zebedeeは2つのシステム間で、暗号化され、圧縮されたTCP/IPまたはUDPの"ト
ンネル"を確立する単純なプログラムである。これは、低帯域のネットワーク上
でのパフォーマンスを圧縮により向上するだけでなく、 telnet, ftp や X な
どの TCP ベースのトラフィックを盗聴から防御することも可能にする。また、
暗号化の有無にかかわらずデータ圧縮を使用することで、遅いネットワークで
良好なパフォーマンスを得ることも可能である。
Zebedee の主な目的は:
· UNIX と Windows 95/98/NT の双方にてクライアントとサーバーの機能を提
供する。
· ほんの少しの設定か全くの設定無しで簡単にインストール、使用、保守が
できる。
· 少しの付加データと、少ないプロトコルのオーバヘッドにて、圧縮により
多大なトラフィックの低減を行う。
· 特許化されていないか、または特許の有効期限が切れているアルゴリズム
のみを用いる。
· GNU 一般公有使用許諾書(GPL)のもとで商用、非商用を問わず完全にフリー
に使用・配布ができる ("CREDITS AND LEGALITIES" を見よ)。
もちろん、Zebedee は初めてのあるいは唯一の利用可能なセキュアなトンネル
プログラムではない。高機能という面では ssh や SSL などとは比べ物にもな
らないが、もし、素早く、単純で、完全にフリーなものを求めているなら、こ
れはピッタリのツールだろう。
この文書は Zebedee リリース 2.0.0 の機能について記している.
名前の由来は?(What’s in a name?)
あなたが疑問を持とうが持つまいが、Zebedee は次の 3つの主要なコンポーネ
ントから命名された。
· Zlib による圧縮
· Blowfish による暗号化
· Diffie-Hellman による認証
これでわかったよね?
基本的な使い方(Basic Usage)
ローカルマシンとリモートホストを安全に接続するには、まずリモートホスト
の方で、Zebedee をサーバーモードで起動する必要がある。一番簡単な方法は
、-s オプションを使うことだ。
zebedee -s
うまくいけば(いくはず!)Zebedeeは端末(windowsではコンソールウインドウ)
から切り離されてバックグラウンドで走る。そして、クライアントからの接続
を待つ。
次にクライアントマシンでZebedeeをクライアントモードで起動する。この場合
は、リモートホストのホスト名とトンネルすべきサービス名かポート番号 (こ
こではこれをターゲットポートと呼ぶことにする)を指定する。例えば、リモー
トホストの名前が"remhost"で安全なtelnetセッションを張りたいとしたら、こ
うなる。
zebedee remhost:telnet
実際には、ポートのデフォルトがtelnetなのでこのケースでは次のように省略
してもよい。
zebedee remhost
このコマンドを実行すると、トンネルの入口になる(ローカル側の)ポートの番
号が表示される。 Zebedeeは端末から切り離されてバックグラウンドで走り、
このローカル側のポートに接続されるのを待つ。例えば、1234と表示されたら
、
telnet localhost 1234
とすれば、"remhost"に安全なトンネル経由で接続される。
デフォルトでは、Zebedeeはプロセスを終了させるまで接続を待ち続けて、必要
があれば同時発生する複数のコネクションを処理する。
時には、Zebedeeを起動し、その後すぐにそのポートに接続するコマンドを起動
したいこともあるだろう。これを一発でやるには次のようにする。
zebedee -e "telnet localhost %d" remhost
文字列中の"%d"がローカルポート番号と置き換えられる。従って、 Zebedeeは
ポート番号を表示しない(する必要がない)。このようにコマンドを指定した場
合には、そのコマンドが接続を終了すると同時に、ローカル側のZebedeeクライ
アントも終了する。
クライアントが使用するローカルポート番号を指定したい(する必要がある)こ
ともあるだろう。 (保護したい通信を行なう)コマンドが、特定のポートに接続
しようとする場合だ。この場合は、Zebedeeを次のように起動することで、ロー
カルポートを指定することもできる。
zebedee clientport:hostname:targetport
例えば、次のコマンド:
zebedee 8000:webhost:80
は、クライアントの8000番ポート経由で接続する、 webhostへの全てのHTTP接
続を保護する。詳細はEXAMPLES参照のこと。
また、Zebedee クライアントは同一ホスト内の複数のターゲットポートに対し
て、複数のトンネルを(同時並行的に)扱うこともできる。この場合は、ローカ
ルとリモートのポートの指定はポート番号のリストになる。例えば
zebedee 9001,9002,9003:somehost:daytime,telnet,ftp
これは、9001番のクライアントポートへの通信を、リモートのターゲットシス
テムのdaytimeポートへとトンネルする。同様に、9002番はtelnetポートへ
、9003番はftpポートへトンネルする。
詳細は clientportと targetportを参照のこと。
UDPトンネリング(UDP Tunnelling)
Zebedeeはもともとは TCP/IP のトラフィックだけを扱うように設計されたが、
バージョン2.0.0からはコネクションレスのUDPのデータも扱えるようになった
。この機能を有効にするにはZebedeeを -u オプション付きで起動する (または
、udpmode キーワードを使用する)。例えばサーバ側で
zebedee -s -u
クライアント側で
zebedee -u 10000:somehost:echo
を実行する。なお、ひとつのクライアントとサーバは、TCPかUDPのどちらかを
扱い、両方同時に扱うことはできない。両方のタイプをトンネルするには、 2
つの独立したインスタンスを起動する。 TCPモードとUDPモードのサーバは違う
ポートを使うので、両者を同じシステムで起動することは安全である。
UDPモードでもZebedeeのクライアントとサーバ間のトンネルはTCP/IPで接続す
る。この接続は無通信が一定時間続くとタイムアウトする。タイムアウトして
からさらにデータが来るとトンネルの再接続を行う必要があるので、アプリケ
ーションの特性によっては UDPモードのパフォーマンスがよくないように見え
ることもある。また、扱えるUDPダイアグラムのサイズにも制限があることにも
注意すること。
詳細は、maxbufsize、 udpmode、 udptimeout を参照のこと。
言葉の定義(Some Terminology)
通常は、Zebedeeを使用する場合、関係するシステムは2つである。片方でクラ
イアントを起動して、ローカルポートでそれと通信する。反対側ではサーバを
起動して、そのシステムで動作しているサービスと会話する。しかしながら、
次のように最大4つのシステム(マシン)が関係するケースもありえる。
[ソース] <===> [クライアント] <=====> [サーバ] <===> [ターゲット]
| | |
+- 安全でない | + 安全でない
接続 | 接続
+- 安全なトンネル
Zebedeeのクライアントは「クライアント」システムで、サーバは「サーバ」シ
ステムでそれぞれ動作している。トンネル設定の契機となる最初の接続は「ソ
ース」マシンから発生する。「ソース」と「クライアント」は違うシステムで
あってもかまわないが、通常は同一のシステムである。サーバは最後に「ター
ゲット」システムと通信する。ターゲットも普通はソースと同じマシンになる
が、違うマシンであっても全く問題はない。
ほとんどの場合、「ソース」と「クライアント」、「サーバ」と「ターゲット
」の違いを気にする必要はない。しかし、この用語の区別が以下に述べるキー
ワードに多く反映している。キーワードの説明を読む時には、このことを頭に
入れておいたほうがいいだろう。
Zebedeeのトンネルに関係するこの4つシステムの問題と別に、安全に接続する
ために、いくつかの全く違うタイプの「キー(key)」が使われる。クライアント
とサーバはprivate key(秘密鍵)という値を必要とする (自分で生成する場合も
ある)。このキーからは、public values が計算され交換され、それによ
りshared secret key が導き出される (この時にDiffie-Hellman key agree-
ment mechanism が使用される)。このキーからは、接続のたびにユニーク
なsession keyが導き出され、最終的にこのキーで暗号化が行なわれる。
設定ファイル(Configuration File)
Zebedee の動作をコントロールするには、設定ファイルを使うのがおそらく一
番よい。設定ファイルを指定するにはコマンドラインオプションで -fを使う。
ファイルは(-f)オプションの位置で処理される。従って、それ以降のコマンド
ラインオプションでファイルの内容を上書きすることができる。
行の形式は以下のとおり。
key value # optional comment
keyはひとつの単語であり大文字小文字は無視される。valueは単語か文字列か
どちらかである。文字列はダブルクォート("こんな風に")かシングルクォート
(’こんな風に’)でくくられる。ダブルクォート " の中にシングルクォート ’
があってもよいし("here’s an example")、その逆も言える。 value では大文
字小文字の違いは区別される。
空白行と""#""ではじまる行(その前に空白があっても同じ)は無視される。長い
文字列は ""\""で次の行に継続することもできる。この文字は除去され、次の
行がこの行に接続される。 1行の長さは継続行も含め 1024 文字に制限されて
いることに注意。行の接続はコメントの認識を含めすべての処理に先だって行
われる。そのため以下の例
server false
# This comment continues on the next line \
server true
では、serverの値は falseになる。
キーワードとその意味は以下に述べる。ほとんどのキーワードは対応するコマ
ンドラインオプションがあるが、なかには対応するオプションがないものもあ
る。対応するコマンドラインオプションがあるものについてはそれも併記して
ある。逆に、コマンドラインオプションの中には設定ファイル内のキーワード
に対応するものがないものもある。それらはこのセクションの最後に述べる。
キーワードが真偽値(boolean)と書かれていたら、その値は"true" または
"false"でなければならない。
キーワードの中にはポートのリストを指定するものがある。この場合は、ポー
ト名(サービス名)、ポート番号、番号の範囲をコンマか空白で区切ったものを
指定する。例えば、""telnet, ftp 5900-5903""は
""23,21,5900,5901,5902,5903""と等しい。
また、クライアントだけに指定するキーワードもあるし、サーバだけに指定す
るキーワードもある。ひとつの Zebedee プログラムはサーバかクライアントか
どちらかひとつの機能を実行し、その時の用途と違う用途向けのオプションは
無視する。エラーメッセージも表示しない。サーバになるかクライアントにな
るかは、 server キーワードで決まる。
server (コマンドラインでは -s)
これは、クライアントになるかサーバになるかを決める真偽値のキーワー
ドである。これが指定されなかった場合は、クライアントとして動作する
。コマンドラインオプションの -s オプションはこの値をtrueにするのと
等しい。
クライアント専用キーワード(Client-Only Keywords)
以下のキーワードはクライアントだけに適用される。
command (コマンドラインでは -e)
クライアントとして動作している時に意味を持つ。これは、トンネルへ接
続した後に起動されるコマンドを示す。この値が "%d" という文字列を含
んでいたら、実行時にローカルポート番号と置き変えられる (clientport
参照)。この処理はsprintf関数を使用して行なうので、 ""%""によるエス
ケープ処理が適用される (すなわち、""%"" を 1 文字生成するためには
""%%"" を使う)。さらに、"%d" を二つ以上指定したり "%d" 以外のフォー
マット指定子を指定すると、おそらくプログラムはクラッシュするだろう
。
コマンドが接続を閉じたら、Zebedeeも終了する。このキーワードおよびオ
プションを使用すると、暗黙のうちにマルチユースモードがOFFになる
(multiuse参照)。 Zebedee クライアントが複数の接続を扱う場合
(multiuse)やポートのリストが clientportで指定された場合は、コマンド
の自動起動は使用することができない。
clientport
これはZebedee クライアントがローカル接続のためにlistenすべき、ひと
つのポート番号かポート番号のリストである。
もしクライアントがトンネルするのが単独のリモートポートならば、これ
は省略できる。その場合はポートは自動的に割り当てられて、端末にポー
ト番号を示すメッセージが表示される。
ポート番号のリストを指定する時は、リモートポートがコマンドラインで
指定されたのであれ、 targetport キーワードで指定されたのであれ、ポ
ートの数は正確にリモートポートの数と一致しなければならない。
2.0.0より前のバージョンでは、同じ意味でlocalportというキーワードが
使用されていた。後方互換性のために、このキーワードは現バージョンで
も認識される。
localsource
この値がtrueだと、クライアントはローカルマシンで発生した接続だけを
受けつける。別の言葉で言うと、「ソース」と「クライアント」が同一の
システムである必要がある。
この値はデフォルトはfalseであり、どのマシンがソースとなっても接続を
受けつける。
multiuse (コマンドラインでは -m)
この値がtrueだと(デフォルトではそうなっているが)、 Zebedeeのクライ
アントは複数の接続要求(同時並行的に発生してもよい)を扱い、要求ひと
つひとつに対して、新しいトンネルを設置する。値がfalseだと、クライア
ントはシングルユースモードで動作し、最初の接続が閉じられた直後に終
了する。
コマンドラインの-mオプションはこれをtrueに設定するのと等しい。現在
のバージョンのZebedeeはこれがデフォルトだが (だから、このオプション
を設定する必要はないが)、後方互換性のために残されている。
クライアントが複数のポートを待ち受ける場合は、たとえこれがfalseに設
定されていても、自動的に マルチユースモードになる。 (clientport 参
照)
serverhost
これはトンネルを接続すべきリモートホストの名前である。ホストの名称
にはデフォルトはないので、設定ファイルかコマンドラインのどちらかで
、必ずこれを指定しなければならない。
2.0.0より前のバージョンでは、同じ意味でremotehostというキーワードが
使用されていた。後方互換性のために、このキーワードは現バージョンで
も認識される。
targetport
ここに指定したポート番号(リストも可)でターゲットホストに接続するよ
うに、 ZebedeeクライアントがZebedeeサーバに要求する。これが指定され
ない時のデフォルトは"telnet" (ポート番号 23)である。
ポート番号のリストを指定する時は、ローカルポートがコマンドラインで
指定されたのであれ、 clientport キーワードで指定されたのであれ、ポ
ートの数は正確にローカルポートの数と一致しなければならない。
2.0.0より前のバージョンでは、同じ意味でremoteportというキーワードが
使用されていた。後方互換性のために、このキーワードは現バージョンで
も認識される。
サーバ専用キーワード(Server-Only Keywords)
以下のキーワードはサーバとして動作する時に適用する。
redirect (コマンドラインでは -r)
このキーワードはサーバがリダイレクトするポートのリストである。 (例
""telnet,ftp, 5900-5910"") もし redirect キーワードが指定されない場
合は、どのポートへのトンネル接続要求も受け付けられる。この方
法(redirectを指定しないこと)はテスト中には便利だが、セキュリティー
面でのリスクがあるので、もし可能ならば(このキーワードで)明示的に許
可するポートを指定すべきである。
このキーワード(または-rオプション)は複数指定されてもよい。この場合
は、そのうちどれかのポートに指定されていればリダイレクトが許可され
る。
targethost
デフォルトではZebedee サーバは全てのトンネルをローカルマシンのポー
トにリダイレクトする。もし、このキーワードが指定されると、全ての接
続はその名称のホストへとリダイレクトされる。トンネルを安全なネット
ワークの中にまで延長するのは無駄であるが、この機能を使用すると、そ
のオーバーヘッドを省くことができて便利である。また ftp のトラフィッ
クをトンネルする時にも使える。 (詳細はEXAMPLES参照)
Zebedeeがサーバモードで動作する時は、通信をリダイレクトすべきホスト
の名称は、コマンドラインの最後の付加的なパラメータとして指定するこ
ともできる。
2.0.0より前のバージョンでは、同じ意味でredirecthostというキーワード
が使用されていた。後方互換性のために、このキーワードは現バージョン
でも認識される。
圧縮と暗号化関連のキーワード(Compression and Encryption Keywords)
以下のキーワードは、トンネル内を流れるデータの圧縮と暗号化を制御する。
これらは、クライアントとサーバどちらでも使用される。
compression (コマンドラインでは -z)
Zebedee は圧縮方式として zlib をサポートする。そして、もしコンパイ
ル時に有効になっていればbzip2もサポートする。このキーワードで圧縮の
方式と圧縮レベルを指定する。この値の形式は type:level である。type
は ""zlib"" と ""bzip2""のどちらか、level は0から9の整数である。プ
レフィックスなしで整数だけの場合は、zlibが選択される。
level は使用可能な最大の圧縮レベルを設定する (9が最大で0が圧縮なし)
。実際に使用される圧縮レベルは、クライアントの値とサーバの値の最小
値である。この目的では、(0以外の)bzip2レベルはいかなるzlibレベルの
値より上であるとみなされる。従って、サーバとクライアントのいずれか
がbzip2レベルをサポートしていなければ、プロトコルはzlibを選択する。
デフォルトの圧縮レベルは""zlib:6""である。
bzip2圧縮の動作方式とバッファーサイズのために、 bzip2は連続的なデー
タのストリームが流れる場合にだけ使う意味がある。通常のtelnetセッシ
ョンのような、小さな転送ではzlibの方が性能がよい。どちらがあなたに
とってよく働くかは、実験してみないとわからないだろう。加えて、バッ
ファーサイズが小さいので、bzip2の1より上からは得るものがない。
Zebedeeはこれより上の値はこの値に変更する。
verbosity levelを2以上にすれば、接続が終了した時に基本的な統計値が
プリントアウトされるので、どれだけ圧縮が有効だったか正確に知ること
ができる。例えば、
zebedee(232/210): read 166 bytes (265 expanded) in 3 messages
zebedee(232/210): wrote 20969 bytes (30499 expanded) in 247 messages
generator
これは、Diffie-Hellmanキー交換の"generator"で、16進数の文字列で指定
する。デフォルトは"2"である。なんのことかわからなければ、下手にいじ
らない方がいいだろう。
keygencommand
このキーワードが指定されると、この値(コマンド文字列)が秘密鍵を生成
するために使用される。そのコマンドは標準出力に1行の16進数を出力しな
くてはならない。この行は少くとも10桁の16進数であること。
keygenlevel
これは0と2の間の整数で、Zebedeeで使用する秘密鍵生成の強度を決定する
。デフォルトは2(最強)である。接続時のパフォーマンスが耐えがたい場合
以外には、一般的にはこれを変更しないほうがよい。
簡単に言って、UNXI系のシステムではレベル2のキー生成のメカニズムは、
可能であれば "/dev/random" を使用する。しかしながら、あまりにも多く
の要求を連続的にこのデバイスに対して行うと、カーネルが必要な"エント
ロピー"をかき集める間、プロセスがブロックされる可能性がある(それが
数秒になることもある)。 "/dev/random"が使用できない場合やレベルが1
にセットされた場合は、 "/proc"ファイルシステムの現在の内容が(もしあ
れば)使用される。レベル0では現在のプロセスにある情報だけが使用され
る。
Windows上のシステムでは、現在のところ、キー生成強度のレベルごとの違
いはなく、このキーワードは実際には無視される。
keylength (コマンドラインでは -k)
これは、Blowfish暗号化のキーのビット長の最大値の整数である。この値
は4から576の間の4の倍数でなければならない。使用されるキー長はクライ
アントの値とサーバの値の最小値になる。 (minkeylength参照)
デフォルトは128である。特別なケースとして、この値が0に設定されると
、キーのネゴシエーションと暗号化は無効にされる。
keylifetime
このパラメータの値が0以外に設定されると、これ以降の接続において、ク
ライアントはセッションキーの導出のために、以前設定されたshared
secret keyを再利用するように要求する。つまりZebedeeのクライアントと
サーバは、最初の接続においてのみキー交換の対話を全て行なう。それ以
降の接続では、キーの有効期限が切れるまでは、同じsecret keyが再利用
され、このキーからsession keyが導出される。キーの有効期限が切れると
、自動的に新しいキーの交換が行なわれる。
そして、このキーワードが、shared secret keyが有効な期間を指定する。
これは、既に接続された接続には影響しないで、新しい接続だけに影響す
る。
このキーワードの値の単位は秒であり、65535(約18時間)以下でなければな
らない。デフォルトは3600秒(1時間)である。このキーワードの値を0に設
定すると、キーの再利用は行なわれなくなり、接続の度に、完全なshared
keyの交換手続きが行なわれる。つまり、クライアントもサーバも毎回秘密
鍵を新しく生成するとみなす。ただし、この方法はパフォーマンスに多大
な影響があるので、偏執狂的に高度な安全性を必要とする場合以外には勧
められない。
minkeylength
これは、クライアントまたはサーバで許容される最小のキー長を指定する
。クライアントがサーバのレベルより小さい値を要求すると、サーバはこ
こで指定した最小値を返答する。サーバがクライアントの最小値より下の
レベルを返答すると、クライアントは接続を終了する。
デフォルトは0である。
modulus
このキーワードの値は、Diffie-Hellmanキー交換の剰余値を表す16進数の
文字列である。これが何かわかる人で数学オタクの人以外はいじっちゃだ
め。
デフォルトの値は下記の1024ビットの素数である。
f488fd584e49dbcd 20b49de49107366b 336c380d451d0f7c 88b31c7c5b2d8ef6
f3c923c043f0a55b 188d8ebb558cb85d 38d334fd7c175743 a31d186cde33212c
b52aff3ce1b12940 18118d7c84a70a72 d686c40319c80729 7aca950cd9969fab
d00a509b0246d308 3d66a45d419f9c7c bd894b221926baab a25ec355e92f78c7
これは Peter Gutman の CryptLib の中の testdh.h というファイルから
とられた。そこには、この値が "generated by Colin Plumb for SKIP"だ
とコメントがある。それから "these values were chosen as representa-
tive well-known public values to allay fears of possible trapdoors
in self-generated values. The generation method and actual values
can be checked against the SKIP standards document." だとさ。
privatekey
デフォルトでは、Zebedeeはセッションごとに新しい秘密鍵を生成する。し
かし、もしあなたが毎回同じキーを使いたい場合は、 16進数の文字列とし
てこれを指定すればいい。もし公開鍵暗号による認証(identitychecking)
を使用したい場合は、必ずこれを設定しなくてはいけない。キーが少くと
も10桁は必要なことに注意すること。
様々なキーワード(Miscellaneous Keywords)
以下のキーワードはクライアントにもサーバにも等しく適用される。
checkidfile
これは、接続を許可する前にチェックするアイデンティティを複数記述し
たファイルの名称である。これについてはidentity checkingで詳しく述べ
る。このファイルはひとつしか指定できない。もし複数出現したら、最後
の値が使用される。
もし、keylengthが0であることに (クライアントとサーバが)同意した場合
は、アイデンティティのチェックは行なわれない。
debug (コマンドラインでは -D)
これはZebedeeが "debug" モードで動作するかを指定する真偽値である。
"debug" モードではサーバは (multiuseモードのクライアント)は一度に一
つの接続しか受け付けない。そして、別プロセスや別スレッドを生成する
ことなく "inline" で動作する。これはデバッガ上でプログラムを動かす
時に便利である。デフォルトはfalseである。コマンドラインオプションの
-D はこれを true に設定するのと同じである。
注:この設定は、UDPモードでは正しく動作しないので、試さないほうがい
い。
detached (コマンドラインでは -d)
これはプロセスが制御端末から自分自身を切離してバックグラウントで
(UNIX用語ではデーモンとして)動作するかどうか指定する真偽値である。
これはクライアントでもサーバでも有効であり、デフォルトは true であ
る。コマンドラインオプションの-dはこれを false に設定するのと同じで
ある。
注:Windowsのコマンドプロンプトではこれがうまく動作しないこともある
ようだ。その徴候は、コンソールウインドウへの出力が止まり割込み
のsignalが無視されるが、コンソールのプロンプトがZebedeeが終了するま
で表示されないことだ。これを回避するには、以下のように "start" コマ
ンドを使用すればよい。
DOS> start zebedee -f server.zbd
これはZebedeeを新しいコンソールセッションで起動し、そこから切り離す
。切り離す前に一瞬だけチラリとそのコンソールが見えるが、それが消え
ても Zebedeeはバックグラウンドで動作している。
include
これは別の設定ファイルの名前を指定する。そのファイルはこのファイル
の残りを処理する前、この時点で処理される。例えば、秘密鍵をもっとき
っちりガードしたファイルに分離して保存した場合に、そのファイルを取
り込むために使用される。 includeは5レベルの深さまでに限定される(最
初のファイルをレベル1として)。これはうっかり無限ループを作らないた
めである。
maxbufsize
これは、 Zebedee がアプリケーションからデータを読むために使用するバ
ッファの長さ(バイト単位)を指定する。実際に使用されるバッファの長さ
はサーバの値とクライアントの値の最小値になる。
デフォルトでは、Zebedeeはトンネルの両端でサーバプログラム、クライア
ントプログラムから8192バイト単位で読み出す。例えば、すごく対話的な
アプリケーションがあって、大きなデータ転送を待つためにひどいレスポ
ンスだったりした時など、これを小さくしたいこともあるだろう。バッフ
ァサイズは1バイトまで縮めることができるが、おかしな動きをデバッグし
ようとしているのか時間を無駄にしたいのでなければ、これはお勧めでき
ない。逆に、大量のデータの転送があって、圧縮をめいっぱい効かせたい
場合は、16383バイトまで大きくしてもよい。注:maxbufsize は Zebedee
が使用するメモリ量には関係ない。一度に読みこむデータのかたまりのサ
イズだけに影響する。
UDPモードでは、バッファサイズは扱えるデータグラムの最大長にも影響す
る。現在のバッファサイズより大きなデータグラムは分断され、それを受
信するアプリケーションが落ちることになりがちだ。 16383バイト以上の
データグラムは扱うことができない。
message
verbosity level が1ならば、設定ファイルのこの部分を処理した時に、こ
のメッセージがログに記録される。
name (コマンドラインでは -n)
これは、実行ファイルのファイル名の代わりに、メッセージの中で使われ
るプログラム名称になる。 Windows環境では、インストールあるいは削除
されるサービスの名前としても用いられる。
logfile (command-line -o)
これはメッセージが出力されるファイルの名前である。もし省略されると
メッセージは標準エラーに出力される。
2つの特殊なファイル名も正しい名前として認識される。もし、名称がNULL
だと、全てのメッセージ出力は止められる。 SYSLOGだと、メッセージはホ
ストのシステムログに出力される。 Windowsシステムでは、アプリケーシ
ョンイベントログを意味する。他のシステムでは、メッセージはsyslog サ
ービスに出力される。
serverport
これは、Zebedee サーバが接続を待ち受けるポートである。デフォルト
はTCPモードでは11965 (0x2EBD)、UDPモードでは11230(0x2BDE)である。サ
ーバでこれを指定すると、サーバはこのポートでlistenする。クライアン
トでこれを指定すると、クライアントはサーバのこの番号のポートに接続
することになる。
timestamplog (コマンドラインでは -t)
これは、ログメッセージにタイムスタンプを含めるかどうかを示す真偽値
である。コマンドラインオプションの -t はこれをtrueに設定するのと同
じである。
udpmode (コマンドラインでは -u)
デフォルトではZebedeeは、コネクションベースのTCP/IPの通信を扱う。も
し、このキーワードが指定されると、かわりにコネクションレスのUDP/IP
の通信を扱う。
この場合でも、Zebedeeのクライアントとサーバ間のトンネルはTCP/IP接続
を使用する。 UDPの宛先ごとに別々の接続が使用される。 UDPはコネクシ
ョンレスなので、通信が完了したことを簡単に知ることはできない。この
理由で、Zebedeeの接続は一定の時間通信が無い場合にタイムアウトする必
要がある。この時間はudptimeoutの値で制御される。
すでにタイムアウトしてしまったトンネルに向けたデータが到着した場合
、接続を再確立する必要がある。このために、アプリケーションの特性に
よっては、 UDPモードのパフォーマンスがよくないように見えることもあ
る。 keylifetimeの値を変更して、接続のセットアップの時間を最小にす
れば、パフォーマンスを向上させることができる。 udptimeout の値を変
更することも同様に役に立つ。
コマンドラインオプションの-uは、この値をtrueに設定するのと同じであ
る。
udptimeout
デフォルトでは、UDPモードのトンネルは、300秒通信が無いと閉じられる
。このキーワードでその時間を変更できる(単位は秒)。この値は65535より
大きくなってはいけない。これを0にすると一切通信が行なわれない(そう
いう設定もできるけど…)。
verbosity (コマンドラインでは -v)
これは、ログするメッセージのレベルを示す整数値である。 0だとエラー
メッセージだけ、 5にするとメッセージトラフィックの非常に細かいディ
テールまで含める。デフォルトは1であり、通常はそれが最も使いやすい。
メッセージは stderr に出力される(コマンドラインオプションの-oか
logfile キーワードでリダイレクトされない限り) 一般的なメッセージは
こんな感じである:
zebedee(54/119): Listening on local port 1172
カッコの中の数字はメッセージを出力したプロセスとスレッドのIDを表し
ている。全てのエラーメッセージはレベル0でもログが取られ、以下の様に
、先頭が "ERROR" という単語から始まる。
zebedee(54/119): ERROR: failed to connect to localhost:11965
メッセージはログが取られたレベルに従ってインデントされる。
その他のオプション(Other Options)
設定ファイルに対応するものを持たないコマンドオプションがいくつかあるの
で、それについてここで説明する。
-p このオプションで Zebedee は秘密鍵の値を標準出力に出力する。この出力
は設定ファイルでそのまま使用できる形式である。例えば、
privatekey "c480bd48f707c69dec54c9e7b6e22dd04cac659e"
の様な形である。
-P このオプションで Zebedee はidentity checking で使用できるパブリック
アイデンティティを生成する。結果は標準出力に書かれる。例えば、
ef8153a0e392df005f67321ca2f0ace5bb8c5a1f myhostname
の様な形である。
このオプションは秘密鍵を含む設定と共に指定するか、 -p と共に用いて
秘密鍵と公開鍵を両方同時に生成しなくてはいけない。
-h このオプションは以降の引数をファイル名とみなす。そして、それぞれの
ファイルは8192バイトのかたまりとして読みこまれ、 SHAハッシュが計算
される。引数がない場合や引数が""-""であった場合は標準入力のハッシュ
が計算される。例えば、
$ zebedee -h /etc/passwd
bb1e734aeffd2111417761f5938dea3b53759598 /etc/passwd
$ zebedee -h < /etc/passwd
bb1e734aeffd2111417761f5938dea3b53759598 -
の様な形である。
-H こちらは-hと似ているが、引数が文字列として扱われ、その文字列のSHAハ
ッシュが計算され表示される。
$ zebedee -H hello world
ac62a630ca850b4ea07eda664eaecf9480843152 hello
86bf25ecb8a40b40b885c097c683b6e236fc8085 world
-S (Windows only)
Windowsシステムでは Zebedee をサービス(ブート時に自動的に起動され独
立して動くプロセス)としてインストールすることもできる。
Zebedeeはinstallパラメータと設定ファイルの名前を指定することでサー
ビスとしてインストールされる。例えば、
zebedee -Sinstall=c:\zebedee\service.zbd
の様な形である。
常に、設定ファイルのフルパスを指定しなければならない。このファイル
はスタートアップ時に読みこまれ、サービスが動作するために必要なパラ
メータを全て含んでいなければならない。
デフォルトでは、インストールされるサービスの名前はプログラムファイ
ルの名前から取られる。従って通常はZebedeeになる。しかし、-nオプショ
ンを使用して変更することもできる。
zebedee -n "Zebedee Client Service" -Sinstall=c:\zebedee\clientsvc.zbd
一旦、サービスがインストールされると、次のシステム再起動から自動的
に起動される。もしくは(Windows NTの場合)サービスコントロールパネル
で手動起動することもできる。
サービスを削除するにはまずサービスを終了してから、-Sオプションと
remove パラメータを使う。そして、もし必要ならば-nオプションでサービ
スの名称を指定する。例えば、
zebedee -n "Zebedee Client Service" -Sremove
の様な形である。
-Sのパラメータは他に run がある。これは内部で Zebedee のサービスス
タートアップコードを起動するために使うもので、ユーザが直接使用して
はならない。
-x コマンドラインで指定できない設定ファイルのパラメータを指定するため
に、このオプションを使用することもできる。これに文字列の引数をつけ
ると、それがあたかも設定ファイルの1行であるかのように処理される。コ
メントは認識されるが、"\"の継続行は使用できない。例えば、
zebedee -x " server true # It’s a server!"
というまわりくどいやりかたでも次のコマンド
zebedee -s
と同じ効果を得ることができる。
Identity Checking
Zebedee はデフォルトでは、2点間に暗号化チャネルを生成するに過ぎない。ご
承知の通り、データは "on the wire (通信線上)" での盗聴からは守られるが
、あなたが想定している相手に接続されているか否かは保証されない。これは
、"man-in-the-middle (第三者による横取り)" アタックに対しては無防備であ
る。もし、あなたがデータの圧縮と、盗聴から守ることを第一に心配している
なら、あなたはこの条件に満足するだろう。しかし、あなたの通信が第三者に
横取りされていないことに対する保証を求めるなら、 Zebedee はそれを行うた
めの便宜を提供する。
もし、同一の素数と原始根と秘密鍵が用いられるなら、それらは Diffie-Hell-
man の鍵交換プロトコルのために、常に同じ公開鍵を生成するだろう。もし、
あなたが(設定ファイルのprivatekeyキーワードにて設定された) 固定された秘
密鍵を用いるなら、 Zebedee は素数と原始根と秘密鍵の値の全てをハッシュし
て "fingerprint (指紋)" を生成することができる。これは、-P オプションに
より行われる。例えば、server.key ファイルが次の値
privatekey "1e34d6769502bae1087c18d2e8c8776e4a17ddaf"
であるとき、
次のコマンド
$ zebedee -P -f server.key > server.id
を実行すると、
このような出力
135f04050961d37553731250d5c6f7495f088b32 myhostname
が得られる。
この最初の16進数が "fingerprint (指紋)" である。行中の他の文字列は、こ
のアイデンティティの所有者を表すコメントである。デフォルトでは、これは
アイデンティティが生成されたマシンのホスト名である。
設定ファイルにおいて checkidfile キーワードが設定された場合、その値は
"fingerprint (指紋)" 行を記述したファイルのファイル名である。 もし、接
続先のアイデンティティがファイル中のいかなる値とも一致しない場合、接続
は切断される。
その他のセキュリティ関連の注記(Notes on Other Security Issues)
Message Integrity
プロトコルのオーバーヘッドを可能な限り小さくするために、 Zebedee は
伝送されたデータの正しさに対する確認は何も行っていない。そのため、
アタッカーは途中でデータパケットを改変することができる。しかし、暗
号の使用はデータを任意に変換することを極めて困難にしているのではな
いか (例えば、""ls -l""を""rm -f""に書き換えられるかい?) 。しかし
、Zebedee はランダムなデータが送られたことによる影響からアプリケー
ションを守ることは行わない。
Replay and Insertion Attacks
多くのネットワークシステムにおいて有り得る攻撃の一つはデータのキャ
プチャリングであり、良く知られた効果を及ぼす (例えば、管理者の tel-
net セッションにはある種の"危険な"操作が伴い、その操作を後に繰り返
されたらどうなるか)。これを行うには、暗号化されたデータストリームを
改変する必要は無いが、サーバに送られた同じネットワークパケットは、
同じレスポンスを引き出すだろう。
Zebedee が "anonymous" モードで動作しているとき、セッション毎に異な
る鍵が生成されるため、このようなアタックが成功する危険は非常に小さ
い。しかし、identity checkingの機能が使われているときには鍵は固定さ
れているので、再生は実際に可能性がある。 Zebedeeは、一つ一つの接続
毎にユニークなセッションキーを生成することで、この問題に対処してい
る。この方法では、接続のセットアップの最後に、チャレンジ-レスポンス
の交換が行なわれ、相手側のシステムがshared secret keyを保持しており
、以前に記録されたデータをオウム返ししているわけではないことが、確
認される。
加えて、Zebedee は Blowfish 暗号法を "cipher feedback" モードで用い
ており、データのあらゆる部分の複号は、それ以前の全てのデータパケッ
トの複号が成功しているかどうかに依存する。チャレンジ・レスポンスは
データストリームの "salts" を交換するので、トンネル化されたプロトコ
ルに "known plain-text" アタック(辞書攻撃)を加えるのはより困難にな
る。
Key Generation
良くない鍵の使用は、最強の暗号化メカニズムをも汚すことができる。鍵
を生成するとき、Zebedee は可能な限り推測が困難なデータをかき集めて
、それを SHA ハッシュアルゴリズムにより "ステア (かき混ぜる)" する
。
Windowsの場合、アタッカーが既にシステムにアクセスしていれば、取得可
能なあらゆるデータは予測することができる。しかし既に言及したように
、ほとんどの用途においてこれは許容できるだろう。興味があるならば、
プログラム中のコメントに詳細が説明されているので、参照されたい。
もし、鍵の生成メカニズムに不満があるなら、設定ファイル中のkeygen-
command オプションを用いて、外部の鍵生成プログラムを呼べば良い。組
み込まれている性能を改善する提案は大歓迎だ!
トラブルシューティング(TROUBLESHOOTING)
Zebedee は「箱から出してすぐそのまま」動くべきだが、あなたはトラブルに
あうかもしれない。ほとんどのトラブルは接続の確立時に起こる (接続さえう
まくいけば、データ転送はスムーズにいくことが多い)。 (接続の)セットアッ
プの手順に何が起こっているか簡単に見るには-vオプションを使えばよい。-d
-D もいっしょに使って、Zebedeeを端末から終了できるようにして、一度に一
つの接続しか処理しないようにしたほうがいいかもしれない。だから、こんな
感じになるだろう。
zebedee -dD -v 3 -s
ロギングレベルを3に設定することで、接続のセットアップの主なやりとりを見
ることができる。問題がその後に起きてると確信が持てるならば、レベルを4
か5にすれば、 (接続時だけでなく)実際の通信で何がやりとりされているかも
見ることができる。
EXAMPLES
Zebedee のパッケージには、たくさんのサンプルの設定ファイルが含まれてい
る。ここでは、それらの使用法と Zebedee を特定のいくつかのプロトコルで使
用する具体的な方法を述べる。
サーバ設定の例(Example Server Configuration)
Zebedeeのパッケージに含まれる server.zbd という設定ファイルがある。これ
にはよく使われるほとんどのオプションの設定例がある。
#
# Sample Zebedee server configuration file
#
# This shows the use of many, but not all, of the configuration file
# options available for use by a server.
#
verbosity 2 # Slightly more than basic messages
server true # Yes, it’s a server!
detached true # Run detached from terminal
udpmode false # Are we operating in UDP mode?
# Uncomment the following line to log messages to a file
#
# logfile ’./server.log’
#
# Or to log to the system logging facility uncomment this:
#
# logfile SYSLOG
# Uncomment the following line if you want to use a fixed private
# key stored in a static file. The file should contain a line of
# the form "privatekey hexadecimal-key-string"
#
# include ’./server.key’
keygenlevel 2 # Generate maximum strength private keys
# To validate the identity of clients uncomment the following
# line:
#
# checkidfile ’./clients.id’
# Set up allowed redirection ports.
# These should be pretty safe -- but it’s not a good idea
# to open up all ports.
redirect "telnet ftp" # Basic services
redirect 5900-5999 # VNC traffic
redirect 6000-6010 # X Window System
redirect "daytime chargen" # Ports useful for testing
targethost localhost # Redirection is to the local machine
compression zlib:9 # Allow maximum zlib compression
keylength 256 # Allow keys up to 256 bits
keylifetime 36000 # Shared keys last 10 hours
maxbufsize 16383 # Allow maximum possible buffer size
認証の機能をテストするためには、 checkidfileの行をコメントアウトし、パ
ッケージに含まれるclient1.keyかclient2.keyというファイルをクライアント
側で使用すればよい。
VNCの使用例(Use with VNC)
Zebedeeを作った理由の一つとして、ダイアルアップでVNCを使うということが
ある。 VNCは「リモートフレームバッファコンセプト」を使い、リモートディ
スプレイを提供するフリーのシステムである。 Windowsのデスクトップを離れ
た所に表示することもできるし、 "Xvnc"サーバを使って X のデスクトップを
VNCクライアントマシンから操作することもできるし、 Javaを使えるブラウザ
ーの中から操作することもできる。詳しく
はhttp://www.uk.research.att.com/vnc/を参照のこと。
提供されるサーバの設定例であるserver.zbd は 5900-5999 ポートをリダイレ
クトしてVNCセッションをトンネリングする。このファイルはUNIXでもWindows
でも使用できるが、 Windowsで使うためには、レジストリの"AllowLoopback"フ
ラグをセットする必要があるので注意。以下の断片を(先頭のスペースを取り除
いてから)ファイルに保存して regedit に読ませれば、そのトリックを実行す
る。
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3]
"AllowLoopback"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3\Default]
この内容は Zebedee パッケージの中の vncloopback.reg にも含まれている。
このレジストリを設定すれば、コマンドラインで与えられたホストにトンネリ
ングされたVNC ビューワを vncviewer.zbd で起動することができる。デフォル
トでは、サーバの(WinVNCのデフォルトである)5900ポートにトンネルするが、
コマンドラインで指定して上書きすることもできる。以下に vncviewer.zbd の
内容を示す。
#
# Zebedee configuration file to start up a tunnelled VNC session
#
# Usage: zebedee -f vncviewer.zbd remote-host[:vnc-port]
#
verbosity 1 # Basic messages only
server false # It’s a client
detached true # Detach from terminal
message "Starting VNC viewer on localhost:99"
# On Windows systems you might use the following:
command ’"c:\Program Files\ORL\VNC\vncviewer.exe" localhost:99’
# On UNIX systems you might use the following:
# command ’vncviewer localhost:99’
targetport 5900 # Remote VNC server on port 5900 unless overridden
# by a value specified on the command-line
clientport 5999 # Local connection on 5999 -- i.e. localhost:99
compression 6 # Request normal Zlib compression
以下のようにこのファイルを使用すると、
zebedee -f vncviewer.zbd somehost:5901
somehostの5901番ポートのVNCサーバにトンネルしたVNCビューワを起動する。
ビューワはローカルホストの5999番ポートに接続する。
VNCはJavaのビューワもサポートしている。もしサーバがポート59xxで動作して
いたら、ビューワを58xxからダウンロードすることができる。しかしながら、
どうもJavaビューワはクライアントへのメインのVNCポート番号で通信している
ようだ。そのため、Javaビューワでこれをトンネルするには、ローカルとリモ
ートで同じポート番号を使う必要がある。そのため、例えば、5901番のポート
を使っているVNCサーバへのトラフィックをトンネルするには、次のようにする
。
zebedee 5801,5901:remotehost:5801,5901
もしローカルマシンでも5901番ポートを使ったVNCサーバが動いていると、これ
はうまくいかない。しかし、ポートが衝突しないように両者を調整することは
可能である。
もうひとつだけ言っておくことがある。 VNCをデータ圧縮とともに使おうとし
ているなら、 VNCのprotocol encodingに関して実験したほうがよい。私は
、"raw" encoding が圧縮の効果が高く、遅い回線上ではよりよいパフォーマン
スを示すことを発見した。しかし、あなたの場合は違う結果となるかもしれな
い。
X Window Systemの使用例(Use with the X Window System)
X Window Systemは6000番以上のポートを使う。
xlocal というローカルマシンのポート6000でX サーバが動作しているとする。
これは通常、xlocal:0 というディスプレイで使われているポートである。そし
て、xremoteという(リモート)マシンから、ローカルのディスプレイに安全な
xterm のセッションを送り返したいものとする。これを行なうには、以下のコ
マンドを xlocal で実行する。
zebedee -r 6000 -s
そして、xremote では
zebedee 6001:xlocal:6000
を実行する。
このことは、xremote上で、環境変数のDISPLAYが"localhost:1"に設定されてい
れば、 Xのトラフィックはxlocalに到着することを意味する。そのため、例え
ばxtermを安全にxremoteから送ろうとするなら、 xremote上で次のコマンドを
実行する必要がある。
xterm -display localhost:1
これが正しく動作するためには、 xremoteのXサーバのアクセスコントロールリ
ストにlocalhostのエントリーを追加しなくてはならない。これを行うには次の
コマンドを実行する。
xhost +localhost
HTTPの通信を安全にする(Securing HTTP traffic)
Zebedeeクライアントを"multi-use"モードで動作させることで、全てのWebサー
バへの通信を安全にすることができる。もし、Webサーバが webhost のポー
ト80で動作しており、そのサーバマシンで Zebedee サーバも動作しているとし
たら、次のコマンドがローカルマシンの8000番ポート経由のトンネルを設定す
る。
zebedee 8000:webhost:80
will set up a tunnel via port 8000 on the client host. Now any URLs
that previously were addressed via webhost, for example:
http://webhost/private/index.html
は、この状態では次のURLで安全にアクセスできる。
http://localhost:8000/private/index.html
""localhost:8000""をあなたのプロキシーとして設定することで、全てのHTTP
のトラフィックを安全なトンネル経由にすることもできる。しかし、注意すべ
きことは、HTTPのプロキシー設定以外にこの設定をしてはいけない。 Secure
HTTPを含む他のプロトコルは他の方法でリダイレクトする必要がある。ほとん
どのブラウザは違うドメインに違うプロキシーを割りあてる設定も可能である
。そのため、必要なものだけ選んでガードすることもできる。これを行なう方
法についてはブラウザのマニュアルを参照されたし。
FTPの通信を安全にする(Securing FTP traffic)
以下の手段で、 Zebedeeを使い多くのFTPサーバへのFTPコントロールコネクシ
ョン (ユーザ名とパスワードが送られるコネクション)を守ることができる。さ
らに、Zebedeeパッケージに含まれる ftpgw.tcl スクリプトによって、パッシ
ブモードのデータコネクションさえも守ることができる。
FTPサーバを扱う最も単純な方法は、以下のように Zebedee を起動することだ
。
zebedee -s -r ftp ftpserverhost
FTPサーバと同じマシンで Zebedee を動作させていても、コマンドラインで明
示的にホスト名を指定する必要がある(または redirecthostキーワードを使用)
。それを localhostとして参照してはいけない。クライアントシステムでは
Zebedeeを次のように起動して、ポート10000番経由のマルチユーストンネルを
構築する。
zebedee 10000:ftpserverhost:ftp
FTPサーバに接続するには、次のようなコマンドを使用する。
ftp clienthost 10000
くどいようだが、localhost でなくローカルクライアントのホスト名を使うこ
と。もし、windowsの標準FTPクライアントのように、あなたのFTPクライアント
がコマンドラインでポートを指定できない時は、プログラムの中で(FTPセッシ
ョンの中で) ""open clienthost 10000"" というコマンドを使うことができる
。もし、クライアントマシンでFTPサーバが立ち上がっていなければ、 Zebedee
をこのように起動してもよい。
zebedee ftp:ftpserverhost:ftp
これだとFTPクライアントプログラムは次のように起動できる。
ftp clienthost
FTPのコントロールコネクションとデータコネクションが同じ所から来ているか
どうかチェックするFTPサーバがあるが、そういうサーバに対しては上記の手法
はうまくいかない。wu-ftpd のようなメジャーなFTPサーバはこの点について厳
しくチェックを入れる(セキュリティ面からは望ましいことだが…)。もし、サ
ーバへの接続は明らかにうまくいくのに、ファイルのリストや読み出しで失敗
したりハングアップするなら、そのサーバがここを厳しくチェックするタイプ
だった、ということだ。
この問題を克服するのを助けるために、ftpgw.tcl というFTPゲートウェイのス
クリプトが Zebedee パッケージには含まれている。このプログラムはフリーに
入手可能であるTclスクリプティング言語 (http://www.scriptics.com参照)で
書かれていて、 FTPのリクエストを中継して再送信し、サーバからZebedee の
存在を隠す。これは Zebedee サーバと同じマシンで走らせる必要がある。 FTP
サーバも同じマシンで動いているなら、単にこう起動すればよい。
tclsh ftpgw.tcl
これでゲートウェイはポート2121で待ち受ける。明らかに、実際の使用ではこ
れをバックグラウンドで起動したいだろう。それから、Zebedeeサーバを
zebedee -s -r 2121
として起動する。
このケースではローカルホスト名を指定する必要はない (したければしてもか
まわないが)。クライアント側ではこうする。
zebedee 2121:ftpserverhost:2121
それからこうする。
ftp clienthost 2121
こちらでは、この場合でもクライアントホスト名を使う。
この設定では、FTPのコントロールコネクションはトンネルされるが、データコ
ネクションには一切影響を与えない。もし、あなたのFTPクライアントがパッシ
ブモードをサポートしていれば、 ftpgw.tcl でデータチャンネルも安全にする
ことができる。 Netscape Navigator や Windows用のWS_FTPなどはそれをサポ
ートしている。
パッシブモードのデータコネクションを安全にするためには、まずデータコネ
クションに使うポート番号の範囲を選ばなくてはいけない。この例では。30000
から30100番を使うものとする。まず、ftpgw.tcl を 起動する時に、このポー
ト範囲を指定するために、 -pオプションを使用する。
tclsh ftpgw.tcl -p 30000-30100
Zebedeeサーバはこのように起動する。
zebedee -s -r 2121,30000-30100
クライアントはこうだ。
zebedee 2121,30000-30100:ftpserverhost:2121,30000-30100
Netscapeを使ってコントロールコネクションとデータコネクションを両方安全
にアクセスするには、このようなURLを入力する。
ftp://username@clienthost:2121/
ここでusernameはFTPサーバでのユーザ名である。
CREDITS AND LEGALITIES
The following information can also be found in the file LICENCE.txt in
the Zebedee distribution.
Copyright (c) 1999, 2000 by Neil Winton. All Rights Reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
A copy of the GNU General Public License can be found in the file
GPL2.txt.
You may obtain the latest copy of Zebedee, including full source code
from http://www.winton.org.uk/zebedee/ and other enquiries about
Zebedee can be e-mailed to the author at zebedee@winton.org.uk
Zebedee would not have been possible without the use of a large amount
of freely-available software to do all the really hard stuff. I
gratefully acknowledge the contributions made by the authors of the
following software packages.
Zebedee uses the "Blowfish" encryption algorithm devised by Bruce
Schneier. For more information on Blowfish see http://www.counter-
pane.com/blowfish.html . The implementation used is by Eric Young and
is covered by the following copyright:
Copyright (C) 1995-1997 Eric Young (eay@mincom.oz.au)
All rights reserved.
This package is an Blowfish implementation written
by Eric Young (eay@mincom.oz.au).
This library is free for commercial and non-commercial use as long as
the following conditions are aheared to. The following conditions
apply to all code found in this distribution.
Copyright remains Eric Young’s, and as such any Copyright notices in
the code are not to be removed.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by Eric Young (eay@mincom.oz.au)
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ‘‘AS IS’’ AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
The license and distribution terms for any publically available version or
derivative of this code cannot be changed. i.e. this code cannot simply be
copied and put under another distrubution license
[including the GNU Public License.]
The reason behind this being stated in this direct manner is past
experience in code simply being copied and the attribution removed
from it and then being distributed as part of other packages. This
implementation was a non-trivial and unpaid effort.
Zebedee uses the zlib compression library by Jean-loup Gailly and Mark
Adler. It is covered by the following copyright notice:
(C) 1995-1998 Jean-loup Gailly and Mark Adler
This software is provided ’as-is’, without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
Zebedee may use the bzip2 compression library by Julian Seward which is
covered by the following licence:
This program, "bzip2" and associated library "libbzip2", are
copyright (C) 1996-1999 Julian R Seward. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ‘‘AS IS’’ AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Julian Seward, Cambridge, UK.
jseward@acm.org
bzip2/libbzip2 version 0.9.5 of 24 May 1999
By default Zebedee is built using an aribtrary precision integer arith-
metic library derived from the sources to "mirrordir-0.10.49" which in
turn derived this from the Python sources. The copyright is as follows:
huge-number.c: arbitrary precision integer library from Python sources
This has nothing to do with cryptography.
Copyright (C) 1998 Paul Sheer
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
This file was taken from the Python source for ‘long’ type
integers. I have changed it to compile independently of the
Python source, and added the optimisation that GNU C can
use 31 bit digits instead of Python’s 15 bit. You can download
the original from www.python.org. This file bears little
resemblance to the original though - paul
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
The Netherlands.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Stichting Mathematisch
Centrum or CWI or Corporation for National Research Initiatives or
CNRI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
While CWI is the initial source for this software, a modified version
is made available by the Corporation for National Research Initiatives
(CNRI) at the Internet address ftp://ftp.python.org.
STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
Zebedee uses the Secure Hash Algorith (SHA) the code for which was
derived from Uwe Hollerbach’s SHA module for perl. The code contains
the following statement:
NIST Secure Hash Algorithm
heavily modified by Uwe Hollerbach
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa