実践で学ぶ、一歩進んだサーバ構築・運用術

第 6 回 stone (後編)


stone 利用の実例

GCD *12 で, 実際に stone がどのように使われているかを紹介します。 GCD のゲートウエイ(asao.gcd.org)では, stone の設定ファイル「/etc/rc.d/stone」を図 15 のように記述しておき, 図 16 のシェル・スクリプト*13 で stone を呼び出しています。


1 #define LOCALS 192.168.1.0/255.255.255.0 2 3 #if HOST_asao_gcd_org 4 -l -dd 5 -f 2 6 -z key=/usr/local/ssl/private/www.pem 7 -z cert=/usr/local/ssl/certs/www.pem 8 -o 65534 -g 120 9 -a /var/log/stone.log 10 -t /var/root 11 12 $INNER:uucp $OUTER:1540/ssl -- 13 localhost:http $OUTER:443/ssl -- 14 $OUTER:telnet $OUTER:10023/ssl -- 15 $INNER:smtp $OUTER:465/ssl mx.klab.org -- 16 mx.klab.org:465/ssl localhost:10025 -- 17 $OUTER:pop/apop $INNER:pop LOCALS -- 18 #endif
図 15 GCD のゲートウエイにおける stone の設定ファイル 「/etc/rc.d/stone 」


#!/bin/sh
INNER="asaogt.gcd.org"
OUTER="asaogw.gcd.org"
export INNER OUTER
/usr/local/sbin/stone -C /etc/rc.d/stone &

図 16 stone を呼び出すためのシェル・スクリプトの例

図 15 の設定ファイル中, 「$OUTER 」など「$」で始まる語は環境変数の参照です。 「$OUTER 」は外向けのグローバル・アドレス(asaogw.gcd.org), 「$INNER 」は内部 LAN 向けのプライベート・アドレス(asaogt.gcd.org)です。

設定ファイルは stone で読み込まれる前に C プリプロセッサで処理されるので, C 言語のソース・プログラムと同様に「#define」でマクロを設定できます。 そして stone が実行されたマシンのホスト名が「asao.gcd.org」のときは, 「#define HOST_asao_gcd_org 1 」が自動的に設定されるため, 「#if HOST_asao_gcd_org 」〜「#endif 」部分が有効になります。

設定ファイルの中の 8 行目の文は, stone を実行するユーザー ID とグループ ID を指定しています。 グループ ID の 120 番は sslkey で, 前述したように秘密かぎを読めるのは root と sslkey グループだけですから, このように設定しています。

10 行目は, stone を犠牲パーティションで実行するための指定です。 stone はパケットの受け付け動作に入る前に, chroot /var/root を行います。 もし万一, stone にセキュリティ・ホールがあったとしても, 侵入者の自由になるのは, /var/root 以下だけに限定できます。

12 行目以降は, 中継の設定です。 前述したように UUCP over SSL のための設定を行っています。

13 行目は, Web サーバーを SSL 対応にするための設定です。

これで, Web ブラウザで https://www.gcd.org/ にアクセスすると, stone が SSL 通信を復号化し, localhost のポート 80 番に中継します。

あらかじめ Web ブラウザに(自前ででっち上げた) 認証局の証明書をインストールしておくと良いでしょう。 図 17 のように, OpenSSL の x509 コマンドを実行することにより, DER 形式の証明書「cacert.der」を作成し, Web ブラウザでインポートします。


openssl x509 -outform DER -out cacert.der < /usr/local/ssl/CA/cacert.pem
図 17 認証局の証明書「cacert.der」を作成する

14 行目は SSL に対応した telnet クライアントで接続するための設定です。

15 行目と 16 行目は, MTA 間で SMTP 通信を暗号化するための設定です。 双方の MTA は相手の SMTP ポートに接続する代わりに, stone の受けポートに接続するように設定してあります。 この設定により, klab.org と gcd.org の間では外部に情報が漏れることなく, メールを送受信できるようになります。

17 行目は, GCD の内部向けに POP サービスを提供するための設定です。 asao.gcd.org に APOP サーバーはありますが, POP サーバーはありません。 その代わり内部 LAN 上の POP クライアントからのアクセスを, stone が APOP に変換して中継しています。

*12
筆者が運営する任意団体です。 個人で引いた OCN エコノミーの費用の一部を賄うために, 多岐に渡るサービスを提供しています。 本連載では, この GCD でのサーバー構築, 運用法を例に挙げています。
*13
説明のため, 実際に使用しているシェル・スクリプトより簡略化しています。

(ライターから)


本稿は日経Linux 2000 年 9 月号に掲載された、 実践で学ぶ、一歩進んだサーバ構築・運用術, 第 6 回「stone (後編)」を日経BP 社の許可を得て転載したものです。

Copyright(C)2000 by 仙石浩明 <sengoku@gcd.org>
無断転載を禁じます

| home | up |

sengoku@gcd.org