S S L 暗号化申し込みに 必要なもの 日本ジオトラストの クイック S S L プレミアム申し込みに 必要なもの サー・パ証明書発行中請書 い第 人 ( 現在も増加中 ! ) ラクしてトクした人の数→ クイック S S L プレミアム 0 サーバ証明書を 24 時間発行 り面倒な公的書類不要 0 ご注文から導入まで全てオンラインで 0 98 % のプラウザで使用可能 0 個人の方でも導入可能 上司に決済のお時間をいたたきます 上司の印鑑をお借りくたさい 法務局まての往復時間をお調へ下さい 法務局まての往復交通費も申請して下さい 法務局に行列する時間も計算にいれて下さい 登記簿謄本申請書に記入漏れはありませんか 登記簿謄本発行手続きの時間も必要てす 印鑑証明申請書へこ記入下さい 印鑑証明書発行手続きの時間もかかります 印鑑証明書はなくさすにおもち下さい 登録印鑑もお忘れなきようお願いします 個人の方のお申し込みは、お受けしておりません 32 400 円 ~ ( 税込み ) 1 2 8 b i t S S L サーバ証明書 年額 もっとカンタンに取れればいいのに・ シオトラスト ラクするあなたは、 トルの臼し 6 s s L の設定に自信のない方、設定作業を行う時間のない方へ http://www.geotrust.co.jp/ もっと信じられるインターネットを る GeoTrust JAPAN くわしくはこちら 〒 150-8512 東京都渋谷区桜丘町 26-1 セルリアンタワー 10 階 TEL: 03-5728-1551 ( 代表 )/FAX: 03-5728-1552 お問い合わせメールアドレス :info@geot 「 ust.co. jp 日本ジオトラスト株式会社
文房具としての UNIX 図 2 ー舟勺な PXE ブートの様子 カルのハードディスクに依存せずに起動する方法です。ハ PXE ブートする ードディスクを使っていないので、いきなり電源を落とし DHCP 計算機 サーバー ても問題はありません。サーバー上にディスクレス・クラ ( 1 ) PC / AT 互換機の起動 - - ( 2 ) DHCP リクエスト イアントをサポートする仕組みを作れば、クライアントを インストールする必要もありません。さらに、インストー ( 3 ) 設定情報 ルの必要がないわけですから、追加のハードウェアさえ用 意できれば、いつでもフロントエンドを増強することがで きます。 こうして、、、自由なフロントエンド " プロジェクトは、 ・ディスクレス・プートで OS を起動し ・コンテンツは NFS で共有する という方針で進めることに決定したのです。 したとおり、 IPv4 アドレスやゲートウェイなど、ネットワ ディスクレスへの道 ークへの接続に必要な情報を自動的に取得するための仕組 前述したように、ディスクレス・プートとは、ネットワ みです。一方、 TFTP (TriviaI FiIe Transfer protocol) ーク上のサーバーから必要なイメージを読み込み、それを は、ネットワーク経由でファイルを転送するための仕組み もとに起動する仕組みです。取得したイメージをハードデ です 6 ファイル転送の方法としては FTP や HTTP が 有名はすが、 TFTP は仕組みがた 0 ん単純化されて 0 、る イスクに書き出す必要もないので、ハードディスクをもた ない引機でも OS を起動できます。もちろん、 OS も何 ことか特徴で、ルータのファームウェア・アップデートや、 もない状態から起動するため、ディスクレス・プートをお さまざまな機器の設定ファイルの読込みなどに利用されて こなうにはネットワーク・アダブタの対応が必須です。 います。 このディスクレス・プート、あまり馴染みがない仕組み 計算機の電源を入れると、 BIOS のプートシーケンスの かもしれませんが、 UNIX の世界では昔から雹甬に利用さ 設疋に従って起動の手続きが始まります。通常はハードデ れていました。そして近年、 PXE という仕組みを備えた イスクやリムーバブル・メディア (CD-ROM やフロッピ ネットワーク・アダブタの登場により、 PC/AT 互換機で ーディスクなど ) からプートするようになっていますが、 も比較的容易に実現可能になりました 5 。 PXE (Preboot れらのメディアからのプートに失敗したり、設定でネット eXecution Environment) は lntel が策定したネットワ ワーク・プートがさきに指定されていると、 ( ネットワー ーク・プートのための規格です。ちなみに、 N 十 I で TTS ク・アダブタに ) 順番がまわってきます。すると PXE プ に利用したプレードサーバーには、 NetBSD 上で wm とし ートの出番です。 て言哉される lntel PRO / 1000 MT が載っており、 PXE 1. PC/AT 互換機の電源を入れると、 BIOS による自己診 プートに対応していました。 断テスト (POST : Power On Self Test) などがおこ 一般的な PXE ブートの手順 なわれます。続いて、上記のようにプートシーケンスの 設疋に従って起動できるメディアを探します。ネットワ ーヨ殳的な PXE プートの様子を図 2 に示します。 ーク・プートの順番がまわってくると次に進みます。 関係するのは PXE プートする計算機のほかに、 DHCP 2. PXE 対応のネットワーク・アダブタが DHCP でアド サーバーと TFTP サーバーです。 DHCP は前回も説明 レスを取得しにいきます。この DHCP のリクエスト 5 PC/AT 互換機でネットワーク・プートを見するための仕組みは、 ether - には、、、 PXEClient" という文字列から始まる vendor- boot などをはじめとして、これまでさまざまなものがありました。しかし、 ネットワーク・プートが -- 難りになり始めたのは、やはり PXE カ噎場し てからのような気がします。 6 RFC1350 (http://www.ietf.org/rfc/rfc1350.txt) 連載 , 07 TFTP 山 Xd ( 4 ) TFTP リクエスト ( 5 ) 指定されたファイル ( 6 ) 取得したファイルの起動 97 UNIX MAGAZINE 2004. 11
文房具としての 図 8 ルート・ファイルシステム用のファイルをカーネルに埋め込む # mdsetimage —v netbsd /tmp/rootfs ・ img ←手順 1 で作ったカーネルのあるディレクトリで実行 連載 07 copying image /tmp/rootfs. img intO netbsd mapped netbsd got symbols from netbsd done copying image exiting もあるのです。 際には無理でした・ 。それに、大きくなったとしてもたかだか 64MB 10 いくつカカーネル・オプションで大きくすることができそうでしたが、実 す。 テムを供給するもう 1 つの方法としては、 NFS がありま さて、ハードディスクをもたない引機にファイルシス メモリティスクか NFS か ? ( 2 ) 予感、ですね。 ろいろと必要でしよう。これこそ現場でトラブル大発生の す。また、システムファイル自体の容量を減らす工夫もい せいいつばいで、 Apache などを格納するのは厳しそうで ないのです 10 。これではシステムファイルを入れるだけで 埋め込めるファイルシステムの大きさは、 12MB ほどしか さらに致命的な問題があります。じつは、カーネル内に 埋込み可能なファイルシステムが小さい たのです。 なに面倒なんか・・・・」ということをお伝えする前末もあっ こまで長々とメモリディスクの説明をしたのは、「こん になること間違いなしです。 なりません。この手順の煩雑さは、現場でトラブルの原因 順 ( もちろん、 newfs は必要ありません ) を踏まなければ そして、取り出したイメージに対し、図 7 とほば同一の手 には、 mdsetimage を -x オプション付きで実行します。 カーネル内に埋め込まれたファイルシステムを取り出す けですから当然ですね ) 。 てしまうのです ( メモリ上にあるファイルを書き換えるだ 中の言 1 噂機のファイルを書き換えても、再起動すれば消え システム上のファイルを変更しなければなりません。稼動 ァイルを変更したくなったら、カーネル内にあるファイル メモリディスクを利用した方法では、システムの設疋フ ファイルの変更にひどく手間がかかる UN 工 X MAGAZINE 2004. 11 NetBSD をはじめとする多くの UNIX 系 OS では、 NFS でルート・ファイルシステムの供給を受けることが できます。 NFS ですから、メモリディスクのときのように ファイルシステム容量の問題はありません。また、サーバ ー側からみると供給する部分はファイルシステムの一部な ので、ファイルの謝奐えも簡単です。ちょうど ( ? ) TTS のコンテンツ部分は NFS で供給することにしていたため、 ルート・ファイルシステムを含め、すべてを NFS で供給 するのは簡単そうです ( 最初からそうしとけよ ! という声 も聞こえてきそうですが ) 。 ところが、何も考えずにすべて NFS にすればいいかと いうと、そうは問屋カ啣しません。複数のフロントエンド で共有してはいけないディレクトリがあるのです。それぞ れのホストが同じファイルに対して書き込むようなものは、 共有することができません。たとえば /var/log には、各ホ ストカ呆存するログファイルがありますし、 /var/run に は、サービスを提供するプロセスの PID がされたフ ァイルが保存されています。 このようなディレクトリは、おもに / var 以下に集中して います 11 。ー引殳にこのようなディレクトリは、 NFS クライ アントごとに異なるディレクトリを供給する設定をし、衝 突を避けるような方法をとります。しかし、これを実現す るためにはクライアントごとに異なる設定が必要になりま す。 TTS の場合は、運用中にフロントエンドが増加する 可能性もあったので、これはあまり嬉しくありません。で きれは、設定を変更することなく、フロントエンドを増減で きるようにしたいものです。 ところで、 /var に生成されるファイルは必要でしよう か ? TTS におけるフロントエンドの場合、 /var に書き込 まれるファイルで重要なものはログくらいです。そのログ にしても、 syslog を利用すれは弛のサーバーで収集するこ 11 var は "variable ( 可変の ) " という未で、運用中に変更カ功日えられるフ ァイルを集めたディレクトリです。 101
文房具としての 図 1 システムの概要 連載 07 データベース用 プライベート・セグメント はできません ( アドレスもプライベート・アドレスを利用 しています ) 。なお、バックエンドからサーバー・セグメン トに延びる線は、バックエンドのメンテナンス用です。 のネットワークを通じて、外部のホストからデータベース にアクセスすることはできないようになっています。 フロントエンドがいつばい 図 1 からも分かるように、たくさんのフロントエンドが 用意されています。フロントエンドの数カ寸曽えれば、ある 程度までは負荷は軽減されます。それはいいのですが、数 カえれば管理がたいへんになります。 図 1 の構成は今年のものですが、 2003 年の N 十 I で運 用したシステムも、これとほば同じような構成でした。 OS はすべて NetBSD で、フロントエンドは現地に入ってか らインストールを始めました。 Web サーバーとして利用 者からのリクエストをさばく必要があるため、 Apache な どのアプリケーションもインストールしました。 フロントエンドの構築に必要な作業はこれだけですが、 昨年は 5 台のフロントエンドを用意したので、上記の作業 を 5 回繰り返したわけです 2 。ふだん NetBSD で生活し ているとインストール作業にも飽きていますし、黙々と 5 台ぶんのインストール作業をしていると、すべての構築が 終ったころにはもう疲労困憊です。 2 dd でコピーすればいいやん、と思う方もいるかもしれませんが、プレードサ ーノ←を利用したので、手間はどちらも同じようなものでした。 HTTPS アクセス サーバー・セグメント L2 負荷分散負荷分散装置 バックエンド フロントエン テータベース アクセス UNIX MAGAZINE 2004. 11 しかも、インストールが終ればそれでおしまいではあり ません。 web サーバーはすべて同じコンテンツをもたな ければならないので、 TTS 自体のコードも 5 台のサーバ ーにインストールする必要があります。このコードはまさ に開発途 - ヒで、現地での利用者からのリクエストに応じて どんどん改善されていきます。そしてもちろん、コードを 書き換えるたびに 5 台のサーバーにコピーして回らなけれ ばなりません。 2003 年の N 十 I はこうして過ぎ、 「もうコピーして回るのはいやや ! 来年はなんとしてでも 楽するで。しかも、ちょっとぐっとくる方法でやるんや ! 」 と固く心に誓ったのです。 自由なフロントエンド その後、案の定そんな誓いなどあっさり忘れ去っていた のですが、今年の N 十 I の開催が近づくにつれ、コピーを 繰り返す去年の自分の姿カ胡畄裏によみがえってきました。 「あかんあかん、今年はなんとかせんと、また不自由なフロ ントエンドに縛られて、コピーだらけで疲労困憊の日々や」 そこでます、何ができると楽なんだろうということをじ っくり考えてみました。 コンテンツのコピーはしたくない 今年のシステムは心機一転、 PHP53 で一から書き直した ものです。そのため、去年と同様、現地での変更や改善が 頻繁に発生することが予想されました。去年のままだと、 同じようにコンテンツのコピーが頻発してしまいます。ま た、あとで説明するように、会期中にフロントエンドカ寸曽 減する可能性もあります。このような事態にも、うまくコ ンテンツの一貫性を保てるような方法が必要です。 インストールの手間はできるだけ減らしたい 現地に入ってからのインストール作業も大変です。とく に、プレードサーバーを利用するので、あらかじめハード ディスクを用意していくことはできません。また、ハード ディスクを取り出すのもすこし面倒ですから 4 、 dd してハ ードディスク・イメージをコピーするといった方法も避け 3 N 十 I の会期カ冬った時点で RC3 でした。 4 雹甬の PC でも面倒といえは面倒なので、手間は変わらないのかもしれませ んが・・ 95
特集 図 22 青鉑勺な Tag VLAN 言窈列 ( 日立 GS4000 ) # show running—config vlan 100 untagged—port 0 / 0 ー 1 tagged—port 0 / 4 vlan 200 untagged-port 0 / 2 ー 4 tagged¯port 0 / 5 ただし、端末側からも以下に紹介するようなコマンドを実 行すれは設定できます。検疫型ネットワークにおいて、端 末側からの要求によってネットワーク接続を動的に変更す る場合、このような Tag ID の設疋だけで対処できるのは 単純で使いやすい仕組みだと思います。 BSD FreeBSD/NetBSD/OpenBSD いずれにおいても、 Tag VLAN は仮想インターフェイスとして実装されてい ます。そのため、 Tag ID と対応する物理インターフェイ スを適切に設定すれば、 Tag VLAN 接続を変更すること ができます ( 図 23 ) 。 Linux Linux でも、 Tag VLAN は仮想インターフェイスと して実装されています。図 24 に、 Tag VLAN 設疋ツー ル (vconfig) の実行例を示します。ただし、標準ではこの ツールが導入されないディストリビューションもあります ( その場合には、 RPM などで別途インストールする必要が あります ) 。 Windows lntel 系の Ethernet NIC 用の Tag VLAN 文寸応ドラ イバが、 lntel から配布されています 15 。このドライバを 使えば、 TagVLAN を仮想的なインターフェイスとして 利用できるようになります ( 図 25 ) 。 なお、この Windows 実装では、 Tag VLAN を成疋し た物理インターフェイスにおいて直接 (Tag VLAN を使 わずに ) Ethernet フレームを入出力することができなく なります。 15 http://support.intel.co ・ jp/jp/support/network/ adapter/prol()()/index. htm 48 ボスト・ファイアウォールとネットワーク・セキュリティ Tag VLAN によるネットワーク分割の課題 Tag ID を端末側、スイッチ側のどちらで設定する場合 にも、 Tag ID の端末やスイッチへの配布・更新方法カ 題になります。とくに、この Tag ID の詐称につながるよ うな攻撃への対応は重要です。 Tag VLAN によるネット ワーク分割では、基本的にこの Tag ID にもとづいてアク セス制御などのセキュリティ処理がなされるため、 Tag ID の詐称はきわめて深刻なセキュリティ上の脅威となるから です。 また、 RA (Router Advertisement) を用いて IPv6 アドレスを自動設定している場合、ネットワークを変更し ても、旧い IPv6 プレフィックスの肩効期限が切れすに残 ってしまうことがあります 16 この問題を解決するには、 ・ TagVLAN を収容するルータのリンクローカル・アド レスを Tag VLAN ごとに変える ・ DHCP によるステートフルな自動設疋をおこない、管 理者側で端末のアドレスを強制的に奪えるようにする といった対策を講じる必要があります。 これらの問題についてはさまざまな答が考えられます が、どれが最善かは導入・運用コストと得られるセキュリ ティ・レベルとのトレードオフで決まるものであり、一概 にどれがよいとは断言できません。というよりも、現状で はこうしたトレードオフの評価がもっとも重要な課題であ るといったほうがよいでしよう。 DHCP DHCP (Dynamic Host Configuration Protocol) [ 12 ] は、ネットワークに接続された端末に対してネットワ ークに関する設定を自動的に配信、設定する目的でひろく 使われているプロトコルです。 DHCP サーバーが設疋さ れているネットワーク・セグメントでは、 DHCP 機能を 有効にした端末は特別な操作なしに、サーバーから配信さ れた IP アドレスをはじめとする各種設定情報を自動的に 設定します。これにより、ユーザーはネットワーク設定を とくに意識することなく、物理的にネットワーク・セグメ ントにつなぐだけで通信に必要な設定ができる仕組みにな 16 ネットワークの変更後、旧いデフォルトルータに到達可能なかぎり、旧い IPv6 プレフィックスは寿命に達するお 0 肖えません。 UNIX MAGAZ 工 NE 2004. 11
特集 ボスト・ファイアウォールとネットワーク・セキュリティ 図 15 PANA と AAA プロトコルの組合せ PaC 認証メソッド EAP PANA 4 認証サーバー 認証メソッド EAP AAA (RADIUS/ Diameter PAA EAP ( バススルー・オペレーション ) AAA (RADIUS/ PANA Diameter ( 注 ) 下位レイヤは省略 図 16 PANA モテル PANA データバケット PAA PaC EP Secure Association P 「 0t0C0 ー SNMP または API アクセス制御 / ヾラメータ設定 (PAA → EP) PaC プレゼンス通知 ()P → PAA) インターネット ることも可能です。この場合、 PAA は PaC と認証サー ても PANA の認証手順を起動できるようになります。そ バーとのあいだで EAP メッセージを中継しますにれを、 の結果、ユーザーはアクセス・ネットワークを利用する前 、、 EAP パススルー・オペレーション " といいます ) 。この に、そのネットワークで認証が必要かどうかを事前に知る 場合、 PAA と認証サーバーとのあいだの EAP メッセー 必要がなくなります。 ジ車幻医には、 RADIUS [ 9 ] や Diameter [ 10 ] などの AAA PAA と EP は、同一の機器にも異なる機器にも実装でき (Authentication, Authorization and Accounting) プ ます。 PAA と EP が異なる機器に実装された場合、 PAA ロトコルを使用します ( 図 15 ) 。 は SNMP を用いて EP と通信します。 PANA のメッセージ交換そのものには関与しませんが、 EP がデータバケットの号化 / 認証をともなうフィル PANA と密接な関連をもつ重要な機能要素として、データ タリングをおこなう際 13 には、 PaC と EP のあいだで バケットのフィルタリングをおこなう EP (Enforcement Secure Association Protocol" と呼ばれる鍵交換プロ Point) があります [ 11 ] 。図 16 を参照しながら EP につ トコルにもとづく通信がおこなわれます。 Secure Associ- いて説明します。 ation Protocol は、データバケットの暗号化 / 認証に必要 EP とは、 PANA を用いて認証された PaC について、ノヾ な暗号鍵などのパラメータを設疋するためのプロトコルで ケット単位のアクセス制御を実行する機能要素です。 EP す。暗号化 / 認証に IPsec を利用する場合には IKE (ln- の機能をもつ機器の代表的な例が、無線 LAN アクセスポ ternet Key Exchange) を、 IEEE802.1 li を利用する イントやアクセスルータです。 EP へのアクセス制御パラ 場合は 802.11i の 4-way ハンドシェーク手順を、 Secure メータの設疋は、 PAA がおこないます。 Association Protocol として使います。 EP は、 PaC の存在を検出し、 PAA に通知する、、 PaC プレゼンス通知機能 " ももっています。これにより、 PaC 13 データバケットの暗引ヒ / 認証は、 PaC と EP のあいだでおこなわれま から PAA に対してだけでなく、 PAA から PaC に対し す。 44 UNIX MAGAZINE 2004. 11
連載 / ネットワークとセキュリティ 図 5 展開したファイルを、 veb サーバーのルート・ティレクトリに発力 $ su # cd # mv base/ /var/www/html/ # mv base/ /usr/local/www/data/ ← FreeBSD で ports から Apache をインストールした場合 ← Red Hat 系 Linux で Apache を RPM からインストールした場合 # mv base/ /usr/local/apache/htdocs ← ソースコードから Apache をインストールした場合 ィ・イベントを分析できます。 BASE のもとになってい るのは、 CERT Coordination Center の AirCERT プ ロジェクトで開発された ACID (AnaIysis Console for lntrusion Databases) で、現在のところ ACID と BASE にほとんど違いはありません。しかし、 ACID は 2003 年 1 月以降、まったくバージョンアップされていないため、今 回はバージョンアップがおこなわれている BASE を紹介 します。 BASE は PHP カ材家動する Web サーバー (Apache な ど ) で動作します。今回は、 Apache 1.3.31 、 PHP 4.3.8 、 ADODB 4.52 、 JPGraph 1.17-beta で動作を確認しま した。なお、 Apache と PHP のインストールについては BASE のインストール 省略します。 トリにファイルが展開されてしまうので注意が必要です。 ディレクトリを作成しない場合には、カレント・ディレク に作成し、そのディレクトリ内でアーカイプを展開します。 ダウンロード後、 BASE を展開するディレクトリを新た 原稿執筆時点での最新版は 0.9.7.1 です。アーカイプの ・ http://sourceforge.net/projects/secureideas/ ロードします。 ます、 BASE のアーカイプを SourceForge からダウン ADODB のインストール トリへ移動します ( 図 5 ) 。 展開したファイルは、 Web サーバーのルート・ディレク $ tar xvzf . /base-0.9.7.1. tar $ cd base $ mkdir base UN 工 X MAGAZINE 2004. 11 のインターフェイスを提供します。 ADODB のソースコ OracIe といった各種のデータベースを利用する際に共通 タベース抽象化ライプラリで、 MySQL や PostgreSQL 、 用します。 ADODB は PHP 4.0.5 以降で動作するデー BASE は、データベースへのアクセスに ADODB を利 ードは、 ・ http://adodb.sourceforge.net/ からダウンロードできます。 ADODB のインストール作業は、ダウンロードしたソー スコードを展開し、ファイルを移動するだけで完了します。 $ tar xvzf ad0db452. tgz $ su # mv adodb/ /var/www/html/base/ これは Red Hat 系 Linux の場合です。他の環境の場 合には、図 5 の例を参考に /var/www/html/base の部 分を読み替えてください。 JPGraph のインストール JPGraph は BASE の動作には必須ではありませんが、 これをインストールすることで侵入検知結果をグラフ化で きます。なお、 JPGraph を利用するには、 GD ライプラ リカ陏効化された PHP 4.3.0 以降が必要です。 JPGraph は、 ・ http://www.aditus.nu/jpgraph/jpdownload.php からアーカイプをダウンロードします。 JPGraph のインストール作業は、 ADODB と同様に ダウンロードしたファイルを移動するだけで完了です。 $ tar xvzf jpgraph—l .17—beta. tar. gz $ su # mv jpgraph¯l. 17—beta/src/ , /var/www/html/base/jpgraph これも Red Hat 系 Linux の場合の例です。さきほど と同様、環境に応じて /var/www/html/base を読み替え てください。 BASE の言 BASE を利用するためには、セキュリティ・イベントの 取得元となるデータベースなどの設定をおこなう必要があ ります。各項目の設定は、インストール先ディレクトリの 85
表 1 アクセス手段とその 不可肯域 おも加 最大 100Mbps 光ファイバー接続 FTTH 10Mbpsæ30Mbps 不呈度 CATV 接続 2Mbps—50Mbps 程度 電話回線を利用した広帯士第妾続 xDSL 最大 11Mbps 802.11b による公衆アクセス ホットスポット 才第靃舌バケットサーピス 64Kbps 前後 オペレータと使用通信方式によって利用可能な帯域カ畯わる て、 802.11b に準拠してさえいれば、海外製の機器で は、ホットスポット・サービスが大きな利益を生むとは思 も接続できる 1 。つまり、 802.11b 対応の機器を持って えなし、。 いるユーザーなら、誰でもホットスポットを使うことが たしかに、携帯電話ヨナービスと比較すれば、初期投資は できるのである、最近のラップトップ PC の多くには、 はるかに少ないだろう。しかしながら、公衆電話と同じく、 802.11b 対応ネットワーク・アダブタカ肭蔵されている。 ある程度以上の、、量 " がなければ便利なサービスと認めて したがって、これらの PC のユーザーは、ホットスポッ はもらえまい。ホットスポット・サービスが普及し始めた トの潜在的なユーザーということができる。 とはいっても、たとえば、自宅の近くにホットスポットが ・サービス提供範囲カ定されている ある人は圧倒的に少ないはずだ。その未では、まだまだ 基本的には、アクセスポイントから半径 40m 程度の範囲 身近なサービスとはいえないであろう。 にサービスを提供する。これまで、日本の無線系通イ言で 量の問題はとりあえずおいておくとして、ホットスポッ は、できるかぎり広く継ぎ目なくサービスを提供するこ トの場合は、利用者がある程度の時間、滞留できるような空 とを目標としていた。ところが、ホットスポット・サー 間が必要になる。この点では、公衆電話の場合とは異なる。 ビスは、提供或が地理的に限定されている。その他の 公衆電話では、 ( たまには長電話をする人もいるだろう 接続サービスと肩を並べたければ、必然的にアクセスポ が ) たいていは短時間で会話カ鮗る。つまり、利用者が長時 イントの数を増やさなければならないが、現状では数が 間滞留できる場所に置く必要はないわけで、ほとんどどこ 限られているようである。ビジネスの規模にしても、携 に置いても大きな問題はない。ホットスポットはこれとは 帯電話などの場合とくらべると、かなり規模が小さい印 逆で、利用者が滞留できる場所に設置しなければ意味がな 象を受ける。 い。ホットスポットでインターネットを利用したい人は、 固有のアプリケーションがない メールを受信して返事を書いたり、必要なファイルをダウ ホットスポット・サービスでなけれは利用できないアプ ンロードしたり、アップロードしたりすることが多いだろ リケーションカ甘是供されていない。これは、携帯電話の う。それには、公衆電話よりも長い時間がかかる。したが 市場展開とくらべると分かりやすい。携帯電話の場合、 って、電源があり、机があり、利用者がゆっくり坐れるよ どこでも電話を使いたいというニーズを満たすかたちで うな空間が必要になる。この点からみていくと、空港のラ サービスが展開されてきた。これ 0 対し、ホットスポッ トは、サーカ甘是供され、 0 一 ; 所 0 = 行かなけれ 0 = 利 ウンジや国際会議場のホール、コーヒーショップなどが適 している。これら以外に、ホットスポットがうまく機能し 用できない。 そうなのはどんな場所だろうか。すぐに思い浮かぶのは駅 携帯電話との対比でいえば、公衆電話をほっほっと設 の待合室やファミリー・レストランなどだが、そのさきと 置しているのと大きな違いはないように思う。どうも、 なるとなかなか思いつかない。現在の PC の利用形態を考 、、あなたの生活を一変させるサービス " という感じがし えると、屋外というのはかなり難しい。 ないのである。 米国では、一ヨ殳家庭へのプロードノヾンド接続の普及には こういった背景を考えるならば、すくなくとも現時点で まだまだ時間がかかりそうなので、手軽にアクセスできる ホットスポットの人気力皜まりつつあり、採算面で黒字化 1 802.11b オ剽鴟の規定を満たした国内の製品には、、 Wi ー F い材処 " と表記さ したところもあるようだ。しかし、日本ではプロードバン れている。 連載 /UNIX Communication N0tes 62 UNIX MAGAZINE 2004. 11
プログラミング・テクニック : 図 1 SRCS マクロに代入されているファイル群 clean—exit . c diag ・ c eval . c fix—options . c fromhost . c \ SRCS= hosts—access . c hosts—ctl . c misc . c myvsyslog ・ c options . c \ percent—m. c percent—x. c refuse . c て fC931. c shell—cmd. c \ socket . c t1i . c update . c workarounds . c libvars . c 宣言も付いていないので、これは外部変数の定義という ことになります。ライプラリを構成するほかのファイルで は、この外部変数を利用してプログラムカ書かれています。 しかし、変数自身の宣言はライプラリとしては利用しない 別のファイルのなかでおこなわれているので、 こで別に 宣言しておく必要があるわけです。 設定ファイルの読込み 次に、設疋ファイルの言ムみについて考えてみましよう。 設疋ファイルは人間カ毓みやすいように書かれており、か ならずしも計算機にとって処理しやすい形式ではありませ ん。そのため、通常は設疋ファイルの内容を読み込んで処 理しやすい形式に変換したデータ構造として保持します。 そして、設疋ファイルの内容が必要なときは、このデータ 構造にアクセスして求める情報を取得します。 通常のプログラムでは、このデータ構造をプログラムの 起動時に作成しておき、以降はつねにデータ構造のほうを 参照するのが普通です。そのため、プログラムの設疋ファ イルを変更したときは、多くの場合、プログラムを再起動し たり、設定ファイルの変更を通知する操作を実行するなど、 特別な処理が必要になります。しかし、今回作成している のはライプラリ・ファイルです。ライプラリ関数は、プロ グラムのどこから呼び出されるかが分からないため、設疋 ファイルを読み込むタイミングをなんらかの方法で制御し なければなりません。 ライプラリ関数のなかで設定ファイルを読み込む場合な ど、なんらかの初期設定が必要なときには、そのためのライ プラリ関数を用意する方法があります。たとえば、ディレ クトリ・エントリを読み出すライプラリ関数である read- dir は、利用する前に opendir ライプラリ関数を使って初 期化しなければなりません。叩 endir 関数は初期化したデ ータを参照できるような値をハンドルとして返し、以降の readdir 関数の呼出しでは、このハンドルも引数として指 定します。こうすることで、 readdir 関数の呼出しの際に UN 工 X MAGAZINE 2004.11 ハンドルを区別すれば、同時に複数のディレクトリを読み 出す場合にも問題は生じません。この方法であれば、なん らかの後処理が必要になってもそのためのライプラリ関数 を用意すれは解決できます。 この方法の問題点は、ユーザーに前処理や後処理につい て意識させてしまうことです。ューザーの目的はメインの 処理匪の例では readdir 関数 ) です。しかし、この関数を 利用するには前処理ルーチン (opendir 関数 ) の呼出しが、 処理を終了するには後処理ルーチン (closedir 関数 ) の呼 出しが必要です。これを意識させない方法としては、プロ グラムのスタートアップ・ルーチンを変更して、前処理ルー チンをかならす乎び出すようにしたり、そのなかで atexit 関数を利用して後処理ルーチンを登録することも考えられ ます。ただし、処理対象となるハンドルが必要になったり、 複数の処理対象のために複数回の処理が必要になるような 場合には、簡単には対応できません。 前処理や後処理の明示的な呼出しを避ける手段の 1 っと して、ライプラリ内で使う静的変数を用意する方法があり ます。この方法では、処理のルーチンの先頭で前処理をし ているどうかを、あらかじめ用意した静的変数を使って調 べ、していない場合にのみ処理をおこないます。 static int processed = 0 ; if (!processed) { 前処理 ( ) ; processed = 1 ; 本処理 ( ) ; このような処理をライプラリのインターフェイス関数に 組み込んでおけば、ライプラリのユーザーが意識しなくて も前処理を一度だけ実行することができます。このときの 条件をネ礬隹にしたり、どの引数について前処理をしたのか を保持できるようにすれば、異なる複数の引数を用いた呼 出しを区別しながら、前処理を必要な回数だけ実行するこ とも可能になります。 もう 1 つの手段は、前処理という考え方そのものをやめ てしまう方法です。 こまでの処理カ倒だったのは、前 89
連載 192 ワークステーションのおと 坂下秀 図 1 ネットワ ーク構成 ( 1 ) SSL VPN 先日、勤務先で Juniper Networks の Netscreen Se- cure Access 3000 ( 以下、 SA3000 ) 1 を使う機会がありま した。これは、いま流行りの SSL VPN を実現するため の装置です。ます、 SSL VPN について簡単に説明してか ら、設疋や使ってみた感想を書くことにしましよう。 SSL VPN とは SSL VPN は、そういう名前の規格があるわけではなく、 SSL を用いて実現した VPN 製品全般を指す言葉です。 これだけではよく分からないと思うので、もうすこし具 体的に説明しましよう。ます、すべての製品で実現されて いるのは、、、 HTTPS で、インターネットから組織内の Web サーバーへのアクセス " という機能です。ここで重要 図 2 ネットワー ク構成 ( 2 ) なのは、糸騰設内の Web サーバーが HTTPS に対応してい なくてもよいという点です。通常の HTTP でアクセスで きる Web サーバーはそのままで、組織外からアクセスし たときには、 SSL VPN 装置が自動的に HTTPS に変換 してくれるのです。 ネットワーク構成としては図 1 のようになります。 ネットワーク・インターフェイスが 2 つある SSL VPN 装置では、図 2 のような構成をとれるでしよう。 一言でいえば HTTP/HTTPS 変換箱で、装置を設置 して認証情報を設定し ( 装置によりますが、ローカルに認 証情報を設定したり、 RADIUS や NIS 、 LDAP で組織 内の認証サーバーを参照することもできます ) 、ネットワ ークを接続するだけです。単純ですが、たいへん便利です ( ただし、実装はけっこう大変です。たとえば、組織内の Web サーバーから送られてくる、 HTTP での URL 参照 (http:// ・・・・・ ) をすべて https に書き換える必要があり、 1 http://www.juniper ・ CO ・ jp/products/ssl/ この Secure Access 3000 は、マクニカネットワークスから借用したも それなりの CPU パワーが必要です ) 。 のです。定方法などの問合せについても、巡曲こ対応していただきました。 SSL VPN 装置で扱えるのは HTTP/HTTPS だ 誌面を借りてお礼を申し上げます。 インターネット HTTPS Web ブラウザから HTTPS でアクセス HTTPS ファイアウォー丿レ (HTTPS アクセスを SSL VPN 装置に転送 ) SSL VPNk 置 HTTP S HTTP 組織内の Web サーバー HTTPS インターネット Web ブラウザから HTTPS でアクセス HTTPS 外側の ファイアウォール 内側の ファイアウォール SSL VPN 装置 HTTP 組織内の Web サーバー 139 UN 工 X MAGAZ 工 NE 2004. 11