BJORB (びょうぶ) を使ってみる

作成日:2004.5.3

このページは 2002年の 12/512/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 による暗号化

コメント

コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp