GCD *12 で, 実際に stone がどのように使われているかを紹介します。 GCD のゲートウエイ(asao.gcd.org)では, stone の設定ファイル「/etc/rc.d/stone」を図 15 のように記述しておき, 図 16 のシェル・スクリプト*13 で stone を呼び出しています。
|
図 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 に変換して中継しています。
(ライターから)
本稿は日経Linux 2000 年 9 月号に掲載された、 実践で学ぶ、一歩進んだサーバ構築・運用術, 第 6 回「stone (後編)」を日経BP 社の許可を得て転載したものです。
Copyright(C)2000 by 仙石浩明 <sengoku@gcd.org>
無断転載を禁じます