このページは 2002年の 12/5、 12/12 の日記を まとめて作成。
はじめに
SSH に代わる汎用 secure proxy をとして
BJORB がある。
この文書では Linux (VineLinux 2.5) で BJORB をインストール & 設定する方法に付いて述べる。
(最後の SOCKS5 の設定方法は管理人の備忘録なのです。)
1. BJORB インストール
BJORB は 0.5.7a が最新のようだ。
ソースコード (bjorb-0.5.7a.tar.gz) を展開すると
bjorb-0.5.7a というディレクトリができるので、
以下の手順を踏めば OK だった。
% cd bjorb-0.5.7a/src % ./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var --with-ssltop=/usr % make % su # make certificate # make install-<platform名> # make install
<platform名> には準備されたプラットフォーム名が入る。
しかし環境によっては、
ソースコード上の問題でコンパイルエラーが発生したり、
インストーラ箇所がおかしかったりするので、
目視と手作業による修正が必要である。
まず、
当方の Vine Linux 2.5 + gcc version 2.95.3 (20010315) では
Config.cc コンパイル中にエラーが発生する。
これを以下のように修正する
diff Config.cc.orig Config.cc.modifed 336c336 < csoc = ::accept(soc_accept, (SOCKADDR *)&sa_client, (int *)&addr_len); --- > csoc = ::accept(soc_accept, (SOCKADDR *)&sa_client, (socklen_t*)&addr_len);
また configure の各種指定が 設定ファイル等に正しく反映されないようだ。 以下に従ってソース等を修正する必要がある。
ファイル 註釈 bjorb 本体 configureで指定した sbindirは無視され、 prefix/sbinに bjorb は移動させられる。 デフォルトは /usr/local/sbin/ の下。
これを修正するには Makefile 中の sbindir の指定を変更する。
設定ファイル(bjorb.conf) configureで指定した sysconfdirは無視され、 prefix/etcに bjorb は移動させられる。 デフォルトは /usr/local/etc の下。
変更するためには、 コンパイル前に common.h 中の CONFIG_FILE_SEARCH_PATH を書き変える必要がある。 また、 インストールによって設定サンプル(bjorb.conf.sample) がコピーされる 位置を合わせるには、 Makefile 中の etcdir を合わせる必要がある。
SSL 認証書 (bjorb.pem) make certificate時に 設定ファイルと同じ位置にできる。
設定ファイルによって変更可能。
とりあえず以上でインストールで終り。
2. BJORB の設定
まずローカルホストからリモートホストへの telnet 通信を暗号化してみる。
ローカルホストのポート 23 番を待ち受けポートとし
(ローカルに telnet サーバーは立てない)、
そのポートへの接続は
リモートホストの 9023番ポートへ転送される。
この際、ローカルホスト ― リモートホスト間の通信は SSLによって暗号化される。
リモートホストは 9023番で受けた SSL 通信を復号して、
自身の telnet サーバ(リモートホストの 23 番で待機)へ
接続することにする。
| クライアント側の設定 | サーバー側の設定 | |
|---|---|---|
# runsocks bjorb -f client.conf |
# bjorb -f server.conf |
|
log_level 1
access_log /var/log/bjorb.log
error_log /var/log/bjorb-err.log
do_fork true
entry "MyClientSetteing" {
accept 23
connect remote-host:9023 with SSL
}
|
log_level 1
access_log /var/log/bjorb.log
error_log /var/log/bjorb-err.log
do_fork true
CA_cert_file /etc/bjorb.pem
CA_cert_path /etc/CA
max_connection 100
entry "MyServerSetteing" {
# service_type "SSL Telnet" # (ここはコメントアウト)
accept 9023 with SSL
connect 127.0.0.1:23
}
|
これでローカルホストの 23 番ポートは、 リモートホストの telnet サーバーとつながり、 途中の通信も暗号化されるはずなのである。
BJORB を SSL Telnet サーバーとして使いたい場合には、 service_type に "SSL Telnet" を指定するようだが、 ここでは次に汎用のプロトコルを通すので無指定にしておく。
3. SOCKS5 の設定
ローカルホスト側が LAN の内側にあり
外部と SOCKS5 で繋がっているとする。
この SOCKS5 の中を BJORB のチャンネルを通すには、
SOCKS5 の runsocks コマンドを用いればよい。
runsocks は、これを使って起動した子プロセスの socket 通信を
socks 経由の通信に置き換えることができるコマンドである。
bjorb コマンドが /usr/loccal/sbin に置かれている場合、 ローカル側の bjorb を runsocks 上で立ち上げればよい。
> runsocks /usr/local/sbin/bjorb >/dev/null 2>&1 &
ホスト毎に通常の socket 通信を行うか socks 経由で通信を行うかは、
/etc/libsocks5.conf で指定可能。
ローカルホストが 10.0.0.0/8 のネットワーク内にあり、
この中の端末とは通常の socket 経由でのやりとりを行い、
それ以外の IP では SOCKS5 サーバー socks.hoge.moge.jp を
経由させるには以下のようになる。
noproxy - 10. - - socks5 - - - - socks.hoge.moge.jp
参考
yamamoto 氏のページ POP,IMAP の SSL による暗号化