(57)【要約】【課題】従来のＶＰＮの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステム、ネットワーク接続装置及びリバースプロキシ装置を提供する。【解決手段】ポートフォワード形成装置がコントロールセッションを通じて認証を実行した後、端末がリバースプロキシサーバの先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、ポートフォワード形成装置はポートフォワーディングを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。更に、接続の際には挙動制限部が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。【選択図】図１
2011223278.tif 000002
【特許請求の範囲】
【請求項１】
インターネットに接続される端末と、
前記端末の内部に設けられ、前記端末の動作に制限を加える挙動制限部と、
前記端末の内部に設けられるか、又は前記端末と前記インターネットとの間に設けられ、前記端末の特定の接続要求に対してポートフォワーディングを行うポートフォワード形成装置と、
プライベートネットワークと前記インターネットとの境界に配置され、前記ポートフォワード形成装置によって転送されるパケットを対応するリバースプロキシを稼働させて転送するリバースプロキシサーバと、
前記プライベートネットワーク上に配置され、前記リバースプロキシサーバで稼働する前記リバースプロキシで前記端末と接続されるサーバと
よりなるネットワークシステム。
【請求項２】
前記ポートフォワード形成装置は、各装置を一意に識別可能な機器特定ＩＤを内包し、前記リバースプロキシサーバに接続する際、前記機器特定ＩＤを用いて端末認証を行い、前記端末認証が成功すると前記リバースプロキシサーバと制御情報を送受信するためのコントロールセッションを形成する、請求項１記載のネットワークシステム。
【請求項３】
前記挙動制限部は、前記ポートフォワード形成装置が前記端末認証を完遂した後に前記ポートフォワード形成装置を通じて前記リバースプロキシサーバとユーザ認証を遂行する画面を前記端末に形成する、請求項２記載のネットワークシステム。
【請求項４】
前記ポートフォワード形成装置は、前記端末認証を完遂した後に更に前記端末を使用するユーザを認証するユーザ認証を行い、前記ユーザ認証が成功すると前記挙動制限部が前記端末の動作に制限を加えるための情報である制限情報を前記リバースプロキシサーバから受信する、請求項２記載のネットワークシステム。
【請求項５】
前記端末は更に、
ストレージと、
前記ストレージにファイル及びディレクトリを形成するファイルシステムと、
アプリケーションプログラムの起動及び終了を制御するプロセス制御部と
を備え、
前記挙動制限部は、前記ポートフォワード形成装置が受信した前記制限情報を受けて、前記端末のファイルシステムに対して前記ファイル及び／又はディレクトリの複写、移動、削除及び／又は名称変更を監視すると共に、前記端末のプロセス制御部に対して特定のプロセスの起動及び／又は自己プロセス隠蔽行為を監視する、
請求項４記載のネットワークシステム。
【請求項６】
プライベートネットワーク上に配置される第一のサーバと、
前記プライベートネットワーク上に配置される第二のサーバと、
インターネットに接続され、前記第一のサーバ及び前記第二のサーバに接続する端末と、
前記端末の内部に設けられ、前記端末の動作に制限を加える挙動制限部と、
前記端末の内部に設けられるか、又は前記端末と前記インターネットとの間に設けられ、前記端末が前記第一のサーバに接続要求を発すると第一のポートフォワーディングを形成し、前記端末が前記第二のサーバに接続要求を発すると前記第一のポートフォワーディングとは異なる経路の第二のポートフォワーディングを形成するポートフォワード形成装置と、
前記プライベートネットワークと前記インターネットとの境界に配置され、前記ポートフォワード形成装置と制御情報を送受信するためのコントロールセッションを形成し、前記ポートフォワード形成装置によって転送されるパケットに応じて、前記ポートフォワード形成装置が形成した前記第一のポートフォワーディングに対応する第一のリバースプロキシを稼働すると共に、前記ポートフォワード形成装置が形成した前記第二のポートフォワーディングに対応する第二のリバースプロキシを稼働するリバースプロキシサーバと
よりなるネットワークシステム。
【請求項７】
前記ポートフォワード形成装置は、各装置を一意に識別可能な機器特定ＩＤを内包し、前記リバースプロキシサーバに接続する際、前記機器特定ＩＤを用いて端末認証を行い、前記端末認証が成功すると前記リバースプロキシサーバと前記コントロールセッションを形成する、請求項６記載のネットワークシステム。
【請求項８】
前記挙動制限部は、前記ポートフォワード形成装置が前記端末認証を完遂した後に前記ポートフォワード形成装置を通じて前記リバースプロキシサーバとユーザ認証を遂行する画面を前記端末に形成する、請求項７記載のネットワークシステム。
【請求項９】
前記ポートフォワード形成装置は、前記端末認証を完遂した後に更に前記端末を使用するユーザを認証するユーザ認証を行い、前記ユーザ認証が成功すると前記挙動制限部が前記端末の動作に制限を加えるための情報である制限情報を前記リバースプロキシサーバから受信する、請求項７記載のネットワークシステム。
【請求項１０】
前記端末は更に、
ストレージと、
前記ストレージにファイル及びディレクトリを形成するファイルシステムと、
アプリケーションプログラムの起動及び終了を制御するプロセス制御部と
を備え、
前記挙動制限部は、前記ポートフォワード形成装置が受信した前記制限情報を受けて、前記端末のファイルシステムに対して前記ファイル及び／又はディレクトリの複写、移動、削除及び／又は名称変更を監視すると共に、前記端末のプロセス制御部に対して特定のプロセスの起動及び／又は自己プロセス隠蔽行為を監視する、
請求項９記載のネットワークシステム。
【請求項１１】
インターネットに接続される第一のＮＩＣと、
インターネットの先に存在するプライベートネットワーク上に配置されるサーバに対して、端末がポートフォワーディングを用いた接続を行うために用いられる第二のＮＩＣと、
前記第一のＮＩＣを通じて送受信されるパケットの通過を制限するパケットフィルタと、
前記端末が前記サーバに接続するためのリバースプロキシを形成するリバースプロキシサーバに接続するための前記ポートフォワーディングを、前記第二のＮＩＣに設定するポートフォワード設定部と
よりなるポートフォワード形成装置。
【請求項１２】
更に、
各装置を一意に識別可能な機器特定ＩＤと、
前記リバースプロキシサーバに接続する際、前記機器特定ＩＤを用いて端末認証を行う認証制御部と、
前記端末認証が成功すると前記リバースプロキシサーバと制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と
を備える、請求項１１記載のポートフォワード形成装置。
【請求項１３】
前記認証制御部は、前記端末認証を完遂した後に更に前記端末を使用するユーザを認証するユーザ認証を行い、前記ユーザ認証が成功すると、前記端末の内部に設けられて前記端末の動作に制限を加える挙動制限部が前記端末の動作に制限を加えるための情報である制限情報を前記リバースプロキシサーバから受信する、請求項１２記載のポートフォワード形成装置。
【請求項１４】
インターネットに接続される第一のＮＩＣと、
端末が接続しようとするサーバが存在するプライベートネットワークに接続される第二のＮＩＣと、
前記端末に対して認証を行う認証部と、
前記認証を完遂した前記端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、
前記端末が前記サーバに接続するために前記第一のＮＩＣと前記第二のＮＩＣを接続するリバースプロキシを起動して前記端末とデータセッションを形成するデータセッション管理部と
よりなるリバースプロキシサーバ。
【請求項１５】
前記認証部は、前記端末が備える、各装置を一意に識別可能な機器特定ＩＤが格納されている端末テーブルを用いて前記端末の認証を行った後、前記端末のユーザを認証するユーザテーブルを用いて前記ユーザの認証を行う、請求項１４記載のリバースプロキシサーバ。
【請求項１６】
更に、
前記ユーザを一意に識別可能なユーザＩＤが格納されるユーザＩＤフィールドと、
前記サーバに接続するプロトコルを示すプロトコルフィールドと、
前記サーバが提供する情報資源を特定する文字列が格納されるリバースプロキシ用リソース文字列フィールドと、
前記端末で稼働するアプリケーションプログラムが接続相手の情報資源を特定する文字列が格納される端末用リソース文字列フィールドと、
前記端末と前記サーバを接続するリバースプロキシのプログラム名が格納されるリバースプロキシプログラム名フィールドと
を具備するサーバテーブルを有し、
前記コントロールセッション管理部は、前記コントロールセッションを通じて前記端末の接続要求を受信すると、前記サーバテーブルの内容に基づいて前記データセッション管理部に前記リバースプロキシ用リソース文字列フィールドの内容及び前記リバースプロキシプログラム名フィールドの内容を渡し、
前記データセッション管理部は前記リバースプロキシ用リソース文字列フィールドの内容及び前記リバースプロキシプログラム名フィールドの内容に基づいて前記リバースプロキシを起動する、
請求項１５記載のリバースプロキシサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステム、ポートフォワード形成装置及びリバースプロキシサーバに関する。
より詳細には、従来の仮想プライベートネットワーク（Virtual Private Network：以下「ＶＰＮ」）の問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規な仮想プライベートネットワークシステムと、これに使用するポートフォワード形成装置、そしてリバースプロキシサーバに関する。
【背景技術】
【０００２】
今日、インターネットから端を発するＩＰネットワークは、我々の社会生活及び企業活動に必要不可欠な存在である。企業には社屋内にＬＡＮが張られており、このＬＡＮには企業の機密情報等も含まれるファイルサーバ等のサーバも接続されている。従業員はＬＡＮに接続されたパソコン等の端末を用いて、サーバが提供する情報資源を利用して業務を遂行する。一般的に、企業のＬＡＮは機密情報を含むサーバ等を守るため、ＬＡＮのインターネットとの接続点にはファイアウォールが設けられている。こうして、ＬＡＮは悪意ある第三者がインターネットから容易に企業のＬＡＮ内に侵入できないように構成されている。
【０００３】
従業員が外出先でもノートパソコン等の端末を用いて企業内ＬＡＮに接続して業務を遂行したい場合、このファイアウォールが邪魔になる。インターネットからファイアウォールを越えて企業のＬＡＮに安全に接続するための技術として、ＶＰＮが用いられている。
ＶＰＮはその接続形態によって様々な種類があるが、大別すると二通りの技術に分類できる。
一つは、ＬＡＮの外に存在する端末にＬＡＮのサブネットに属するＩＰアドレスを付与する手法である。
もう一つは、ポートフォワーディング又は静的ＮＡＴ（Network Address Translation）と呼ばれる手法である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２７２７７１号公報
【非特許文献】
【０００５】
【非特許文献１】「PacketiX VPN 入門 - PacketiX VPN の特徴」ソフトイーサ株式会社［２０１０年３月２５日検索］、インターネット＜URL:http://www.softether.co.jp/jp/vpn2/introduction/about_vpn.aspx＞
【非特許文献２】「特集 ： ブロードバンド・ルータ徹底攻略ガイド」アイティメディア株式会社［２０１０年３月２５日検索］、インターネット＜URL:http://www.atmarkit.co.jp/fpc/special/bbrouter_desc/portforward_dmz.html＞
【非特許文献３】「インターネットごしにsshでサーバ管理をしてみよう  −＠IT」アイティメディア株式会社［２０１０年３月２５日検索］、インターネット＜URL:http://www.atmarkit.co.jp/fnetwork/rensai/tcp27/01.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
先ず、前者の、ＬＡＮの外に存在する端末にＬＡＮのサブネットに属するＩＰアドレスを付与する手法について説明する。これは非特許文献１に開示される技術である。
殆どの企業内ＬＡＮはＩＰｖ４のプライベートアドレスを用いている。そこで、ＬＡＮの外、つまりインターネットに接続されている端末にも企業内ＬＡＮのサブネットに属するプライベートアドレスを付与する。しかし、端末に備えられているネットワークインターフェースカード（Network Interface Card：以下「ＮＩＣ」）には、既にインターネットサービスプロバイダ（Internet Service Provider：以下「ＩＳＰ」）によってグローバルＩＰアドレスが付与されている。そこで、仮想的なＮＩＣをソフトウェアで実現し、これに企業内ＬＡＮのサブネットに属するＩＰアドレスを付与する。そして、この仮想ＮＩＣに対する通信は暗号化してファイアウォールを通過させる。
【０００７】
この手法の問題点は、当該端末はＬＡＮのサブネットに属していながらファイアウォールで守られていない、インターネットに直に接続している、という点である。つまり、セキュリティ面で非常に問題がある。当該端末は、コンピュータウィルスやワーム、またＤｏＳと呼ばれるサービス不能攻撃等の脅威に晒される。また、情報漏洩の可能性も高い。
更に、ＩＳＰが付与するＩＰアドレスがプライベートアドレスである場合、ＩＳＰが付与するＩＰアドレスと、ＶＰＮが付与するＩＰアドレスが衝突する可能性がある。現在でもケーブルテレビ系列のＩＳＰやネットカフェ等の公衆インターネット接続拠点では、端末にプライベートアドレスを付与している。またこれに留まらず、今後ＩＰｖ４アドレスの枯渇に伴って普及が予測される「キャリアグレードＮＡＴ」（http://itpro.nikkeibp.co.jp/article/COLUMN/20080625/309452/）が広く実施されると、ＩＰアドレスの衝突の可能性は飛躍的に高まることが予想できる。
【０００８】
次に、後者のポートフォワーディング又は静的ＮＡＴと呼ばれる手法について説明する。これは非特許文献２及び非特許文献３に開示される技術である。
例えば、ある家庭に１９２．１６８．０．０／２４というプライベートネットワークが構築されているとする。この家庭内ＬＡＮ内にｗｅｂサーバを構築し、ブロードバンドルータを介してインターネットに公開したい場合、ブロードバンドルータに「ポートフォワード設定」或は「静的ＮＡＴ設定」と呼ばれる、特定のポート番号のパケットをＬＡＮ内の特定のマシン（サーバ）に振り向ける設定を施す。
【０００９】
今、ブロードバンドルータには家庭内ＬＡＮのＩＰアドレスとしてデフォルトゲートウェイの「１９２．１６８．１０．１」が付与されていると共に、ＩＳＰによって付与された動的グローバルＩＰアドレスが「２０３．１７８．８３．１９４」であったとする。ブロードバンドルータには、この「２０３．１７８．８３．１９４」のポート８０番に来るパケットを、家庭内ＬＡＮの別のＩＰアドレス「１９２．１６８．１０．２」が付与されているマシンのポート８０番へ転送する設定を施す。ブロードバンドルータは、パケットの送信先ＩＰアドレスを、「２０３．１７８．８３．１９４」から「１９２．１６８．１０．２」に書き換えて、当該サーバに転送する。こうして、ＬＡＮ内のサーバは外部（インターネット）に対してｗｅｂサーバとしてサービスを提供することが可能になる。これが、非特許文献２に開示されている技術である。なお、パケットに対して書き換える対象は、ＩＰアドレスだけでなく、ポート番号も書き換えることができる。
このような静的ＮＡＴと呼ばれる技術は、Ｌｉｎｕｘ（登録商標）等のＰＯＳＩＸ系ＯＳのカーネルの機能（ドライバ）として実装されていることが多い。
【００１０】
ブロードバンドルータは単にインターネットから来るパケットをＬＡＮ内に振り向けることしかしないので、セキュリティ面に問題がある。そこで、通信経路の暗号化と認証を伴ってセキュリティの向上を図った手法が、ＯｐｅｎＳＳＨ（http://www.openssh.com/ja/）等のアプリケーションである。これは非特許文献３に開示されている。
しかし、ＯｐｅｎＳＳＨは、接続するユーザ毎に公開鍵を生成して配布する手間が生じると共に、クライアントである端末にＳＳＨクライアントと公開鍵をインストールする必要がある。また、ＯｐｅｎＳＳＨのような技術は潜在的なセキュリティのリスクを完全に払拭できてはいない。つまり、ＯｐｅｎＳＳＨ自身のセキュリティ面の脆弱性の大小に依存する。そして、ＯｐｅｎＳＳＨのサーバであるｓｓｈｄは、既定値ではポート２２番を開放するので、ポート２２番に対するＤｏＳ攻撃等のリスクも存在する。更に、ＯｐｅｎＳＳＨはクライアントである端末自体のセキュリティについては何もしないので、別途端末のセキュリティ面を考慮して対策を施す必要がある。
【００１１】
以上に述べたＶＰＮの手法は、いずれも「インターネットからＬＡＮ内のサーバに繋げる」という目的にのみ特化して構築されている。また、その接続の技術も設定項目が多く面倒であったり、接続不能になる可能性が払拭できない等、完全ではない。そして、セキュリティ面の対策は別途考慮して対策を施さなければならない。
【００１２】
本発明はかかる課題を解決し、上述した従来のＶＰＮの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステム、ポートフォワード形成装置及びリバースプロキシサーバを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明のネットワークシステムは、インターネットに接続される端末と、端末の内部に設けられ、端末の動作に制限を加える挙動制限部と、端末の内部に設けられるか、又は端末とインターネットとの間に設けられ、端末の特定の接続要求に対してポートフォワーディングを行うポートフォワード形成装置と、プライベートネットワークとインターネットとの境界に配置され、ポートフォワード形成装置によって転送されるパケットを対応するリバースプロキシを稼働させて転送するリバースプロキシサーバと、プライベートネットワーク上に配置され、リバースプロキシサーバで稼働するリバースプロキシで端末と接続されるサーバとよりなる。
【００１４】
また、上記課題を解決するために、本発明のネットワークシステムは、プライベートネットワーク上に配置される第一のサーバと、プライベートネットワーク上に配置される第二のサーバと、インターネットに接続され、第一のサーバ及び第二のサーバに接続する端末と、端末の内部に設けられ、端末の動作に制限を加える挙動制限部と、端末の内部に設けられるか、又は端末とインターネットとの間に設けられ、端末が第一のサーバに接続要求を発すると第一のポートフォワーディングを形成し、端末が第二のサーバに接続要求を発すると第一のポートフォワーディングとは異なる経路の第二のポートフォワーディングを形成するポートフォワード形成装置と、プライベートネットワークとインターネットとの境界に配置され、ポートフォワード形成装置と制御情報を送受信するためのコントロールセッションを形成し、ポートフォワード形成装置によって転送されるパケットに応じて、ポートフォワード形成装置が形成した第一のポートフォワーディングに対応する第一のリバースプロキシを稼働すると共に、ポートフォワード形成装置が形成した第二のポートフォワーディングに対応する第二のリバースプロキシを稼働するリバースプロキシサーバとよりなる。
【００１５】
ポートフォワード形成装置がコントロールセッションを通じて認証を実行した後、端末がリバースプロキシサーバの先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、ポートフォワード形成装置はポートフォワーディングを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。更に、接続の際には挙動制限部が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
【発明の効果】
【００１６】
本発明により、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステム、ポートフォワード形成装置及びリバースプロキシサーバを提供できる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態のネットワークシステムの概略図である。
【図２】第一端末に注目したネットワークシステムの概略図である。
【図３】第二端末に注目したネットワークシステムの概略図である。
【図４】ＩＮＩ−ＢＯＸの外観斜視図である。
【図５】ＩＮＩ−ＢＯＸのハードウェア構成を示すブロック図である。
【図６】ＩＮＩ−ＢＯＸの機能ブロック図である。
【図７】ソフトＩＮＩの機能ブロック図である。
【図８】ＲＴＡの機能ブロック図である。
【図９】ＮＣの機能ブロック図である。
【図１０】端末がインターネットに接続して、認証を完遂する迄の動作の流れを示すタイムチャートである。
【図１１】端末がインターネットに接続して、認証を完遂する迄の動作の流れを示すタイムチャートである。
【図１２】端末からアプリケーションを起動して、ＬＡＮ内のサーバに接続する動作の流れを示すタイムチャートである。
【図１３】サーバテーブルと、仮想資源テーブルと、ユーザ資源テーブルの概略図である。
【発明を実施するための形態】
【００１８】
［実施形態の概要］
本実施形態の概略を説明する。
本発明は、インターネットを通じてＬＡＮ内のサーバに安全に接続する仕組みを提供する。一例としては、従業員が、外出先或は自宅からインターネットを通じて、企業内ＬＡＮに接続されているサーバに安全に接続するための仕組みである。この仕組みを実現するために、以下の装置及びプログラムを新たに設ける。これより説明する三種類の装置及びプログラムは、全て従来のネットワーク技術には同等の機能を提供する装置等が存在しないので、発明者及び出願人が独自に名称を付している。
【００１９】
・ネットワークセンタ（Network Center：以下「ＮＣ」と略）
リバースプロキシサーバとも呼べるＮＣは、ＬＡＮとインターネットとの間に設けられ、必要に応じてリバースプロキシを起動し、インターネットに接続される端末とＬＡＮ内のサーバを接続する。一見すると、ＮＣはリバースプロキシサーバが稼働するゲートウェイであるように見えるが、端末の認証を通じて、端末から接続要求があった時だけリバースプロキシのプロセスを起動する。したがって、ＮＣは通常のサーバとは異なり、不必要にポートを開けないので、セキュリティ面で有利である。
【００２０】
・インテリジェントネットワークインターフェース（Intelligent Network Interface：以下「ＩＮＩ」と略）
ポートフォワード形成装置とも呼べるＩＮＩは、自身がＮＣに接続できる資格を有する装置であることを示す機器特定ＩＤを内包しており、ＮＣに対して端末認証（個体認証）とユーザ認証（個人認証）の二重の認証を実行する。先ず、端末認証が完遂すると、ＩＮＩはＮＣと制御用の通信路を形成する。これをコントロールセッションと呼ぶ。コントロールセッションが形成されると、ＩＮＩは次にユーザ認証を実行する。ユーザ認証が完遂すると、ＩＮＩは端末に対してユーザが接続可能なサーバに関する情報（仮想資源テーブル）及び様々な制御を行うための情報（制限情報）よりなる制御設定情報をＮＣから受信する。
ユーザが端末を操作して当該サーバに接続する要求を発すると、ＩＮＩはコントロールセッションを通じてＮＣに対してサーバへの接続要求を送信する。そして、ＮＣによって要求が認められると、ＮＣと当該サーバのための暗号化された通信路（データセッション）を形成すると共に、パケットフィルタとポートフォワーディングの設定を行う。
【００２１】
パケットフィルタは、端末の動作をサーバとの接続にのみ制限し、不用意にインターネット上の任意のサーバに接続する等の事故発生要因を排除するために設定する。ＮＣから送信される制限情報には、送受信を禁止される（又は送受信を許可される）ＩＰアドレスの範囲が列挙され、この制限情報に従ってパケットフィルタは設定される。
ポートフォワーディングによって、リバースプロキシであるＮＣを介して送受信するサーバとのパケットは、端末のローカル側に位置するＮＩＣに対するパケットとして、相手側を示すアドレスが、また必要に応じてポート番号も書き換えられる。端末はあたかもローカルのＮＩＣと通信しているような状態で、ＬＡＮ内のサーバと通信することができる。
【００２２】
ＩＮＩは、端末に接続されるハードウェアとして構成されるもの（以下「ＩＮＩ−ＢＯＸ」）と、端末内にインストールされるソフトウェアとして構成されるもの（以下「ソフトＩＮＩ」）と、二通りの形態がある。いずれも、提供する機能は同じである。違いは、ＩＮＩ−ＢＯＸは内蔵するローカル側ＮＩＣにポートフォワーディングをする一方、ソフトＩＮＩはネットワークＯＳが標準で内蔵するループバック仮想ＮＩＣにポートフォワーディングをする、という点である。
ＩＮＩは、発明者が過去に発明して出願した特許文献１に開示される技術を基に、更に機能の整理と改良を施した装置及びプログラムである。
これ以降、単に「ＩＮＩ」と記す場合は、ＩＮＩ−ＢＯＸとソフトＩＮＩの両者を指す単語であると定義する。
【００２３】
・リアルタイムエージェント（RealTime Agent：以下「ＲＴＡ」と略）
端末がインターネットに接続された状態で、更にＩＮＩとＮＣを通じてＬＡＮ内のサーバに接続すると、様々なセキュリティ面の懸念が生じる。そこで、端末の動作を強力に制限するために、端末にはこのＲＴＡをインストールしておく。
挙動制限部とも呼べるＲＴＡはＩＮＩと通信を行い、ユーザ認証のためのユーザインターフェースを提供すると共に、ＩＮＩとＮＣとの通信が成立すると、ＯＳの幾つかのアプリケーションプログラムインターフェース（Application Program Interface：以下「ＡＰＩ」）をフックする。
ＮＣから送信され、ＩＮＩを通じて与えられる制限情報には、実行を禁止される（又は実行を許可される）アプリケーションプログラムや、閲覧、編集、移動又は削除を禁止されるファイル等が列挙されている。ＲＴＡはこの制限情報に従ってフックしたＡＰＩを監視し、端末の挙動を強力に制限する。
【００２４】
また、ＲＴＡはシェルとしての機能も提供する。ユーザ認証が正常に終了すると、ＲＴＡは端末の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ（コマンドライン）を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバのサーバ名がアプリケーションの引数として指定されている。ＲＴＡの子プロセスとしてアプリケーションが起動されるので、ＲＴＡはアプリケーションの挙動を容易に把握できる。
【００２５】
ＲＴＡはウィルスチェッカやマルウェア等のＡＰＩフックの技術を応用している。ＲＴＡはＮＣの制御下にあるので、フックしたＡＰＩで異常な挙動を検出したら、直ちに実行を停止してＮＣに報告することもできる。この技術を高度に応用すると、未知のウィルスに対しても防御が可能になるので、昨今問題になっている「ゼロデイ攻撃」（プログラムのセキュリティホールが発表され、当該プログラムのセキュリティホールを修正するパッチが提供されるよりも以前の時点で、悪意ある者によって実際に当該セキュリティホールを突いた攻撃が行われたり、当該セキュリティホールを悪用する不正プログラムが出現すること）にも対応が可能になる。また、端末に誤ってウィルスが混入してしまっても、一旦ＲＴＡが起動してＮＣと接続されると、ＡＰＩフックの結果から不審な挙動が直ちに判明するので、ＮＣは当該端末の接続を強制切断する等の緊急措置を瞬時に実行することができる。
【００２６】
以上、三つの装置及びプログラムで、インターネット上に存在する端末は、ＩＮＩによるポートフォワーディングとＮＣによるリバースプロキシを通じてＬＡＮ内のサーバに接続することができる。その際、端末の挙動はＲＴＡによってサーバに対する通信のみ許可され、それ以外の挙動は大幅に制限される。
この接続形態では、ポートフォワーディングとリバースプロキシのそれぞれにおいて、パケットに付されるＩＰアドレスは二回書き換えられる。その結果、端末は非特許文献１に開示されるような、ＬＡＮ内のＩＰアドレスを付与されるような状態にはならず、非特許文献３に開示されるポートフォワーディングの接続形態に近い状態になる。
【００２７】
［全体構成］
図１は、本実施形態のネットワークシステムの概略図である。
ある企業の図示しない社屋内にはＬＡＮ１０２が敷設され、ＬＡＮ１０２には第一サーバ１０３、第二サーバ１０４、第一端末１０５及び第二端末１０６が接続されている。また、ＬＡＮ１０２とインターネット１０７との間にはファイアウォールを兼用するＮＣ１０８が接続されている。
第一端末１０５及び第二端末１０６はノートパソコンであり、従業員が外出先或は自宅に持ち出すことが可能である。
今、図示しない従業員Ａが第一端末１０５を社屋から持ち出し、図示しない自宅で作業を継続しようとする。従業員Ａは第一端末１０５にＩＮＩ−ＢＯＸ１０９を接続して、ＩＮＩ−ＢＯＸ１０９を第一ＩＳＰ１１０が提供する図示しないモデムに接続する。すると、第一端末１０５はＩＮＩ−ＢＯＸ１０９と第一ＩＳＰ１１０を通じてインターネット１０７に接続される。ＩＮＩ−ＢＯＸ１０９はインターネット１０７に接続されると、直ちにＮＣ１０８に対して端末認証を試みる。但し、端末認証が正常に終了しても、ユーザ認証が行われない限り、第一端末１０５は通常の状態と同様にインターネット接続及びインターネット１０７上の所望のｗｅｂサーバ等の接続は可能であり、また逆にＮＣ１０８を通じたＬＡＮ１０２内の第一サーバ１０３又は第二サーバ１０４との接続はできない。
【００２８】
従業員Ａは第一端末１０５を操作してユーザ認証を実行すると、第一端末１０５にインストールされたＲＴＡ１１１とＩＮＩ−ＢＯＸ１０９の作用によって、第一端末１０５はＮＣ１０８と接続される。そして、第一端末１０５はこの時点でそれまでは実行できていたインターネット１０７上の所望のｗｅｂサーバ等の接続ができなくなる。次に、従業員ＡはＲＴＡ１１１によって表示される、第一サーバ１０３に接続するためのアイコンをクリックすると、アイコンに埋め込まれているコマンド名のアプリケーションが起動し、アプリケーションからＩＮＩ−ＢＯＸ１０９を通じてＮＣ１０８に第一サーバ１０３に対する接続要求が送信される。ＮＣ１０８はＩＮＩ−ＢＯＸ１０９から接続要求を受信すると、第一サーバ１０３を第一端末１０５に接続するためのリバースプロキシを起動し、ＮＣ１０８とＩＮＩ−ＢＯＸ１０９との間にデータセッションを形成する。一方、ＩＮＩ−ＢＯＸ１０９はポートフォワーディングを設定して、第一端末１０５から第一サーバ１０３に接続するための通信路を形成する。こうして、従業員Ａは第一端末１０５を操作して第一サーバ１０３に接続し、所望の作業を継続することが可能になる。
【００２９】
次に、従業員Ｂが第二端末１０６を社屋から持ち出し、外出先からインターネット接続を用いて作業を継続しようとする。従業員Ｂは第二端末１０６を第二ＩＳＰ１１２が提供するインターネット接続サービスに接続する。すると、第二端末１０６は第二ＩＳＰ１１２を通じてインターネット１０７に接続される。第二端末１０６にインストールされているソフトＩＮＩ１１３は、第二端末１０６がインターネット１０７に接続されると、直ちにＮＣ１０８に対して端末認証を試みる。但し、端末認証が正常に終了しても、ユーザ認証が行われない限り、第二端末１０６は通常の状態と同様にインターネット接続及びインターネット１０７上の所望のｗｅｂサーバ等の接続は可能であり、また逆にＮＣ１０８を通じたＬＡＮ１０２内の第一サーバ１０３又は第二サーバ１０４との接続はできない。
【００３０】
従業員Ｂは第二端末１０６を操作してユーザ認証を実行すると、第二端末１０６にインストールされたＲＴＡ１１１とソフトＩＮＩ１１３の作用によって、第二端末１０６はＮＣ１０８と接続される。そして、第二端末１０６はこの時点でそれまでは実行できていたインターネット１０７上の所望のｗｅｂサーバ等の接続ができなくなる。次に、従業員ＢはＲＴＡ１１１によって表示される、第二サーバ１０４に接続するためのアイコンをクリックすると、アイコンに埋め込まれているコマンド名のアプリケーションが起動し、アプリケーションからソフトＩＮＩ１１３を通じてＮＣ１０８に第二サーバ１０４に対する接続要求が送信される。ＮＣ１０８はソフトＩＮＩ１１３から接続要求を受信すると、第二サーバ１０４を第二端末１０６に接続するためのリバースプロキシを起動し、ＮＣ１０８とソフトＩＮＩ１１３との間にデータセッションを形成する。一方、ソフトＩＮＩ１１３はポートフォワーディングを設定して、第二端末１０６から第二サーバ１０４に接続するための通信路を形成する。こうして、従業員Ｂは第二端末１０６を操作して第二サーバ１０４に接続し、所望の作業を継続することが可能になる。
【００３１】
第一端末１０５はＩＮＩ−ＢＯＸ１０９を介してインターネット１０７に接続した。一方、第二端末１０６はソフトＩＮＩ１１３がインストールされているので、ＯＳ内に構成されているネットワークシステムが直にインターネット１０７に接続した。何れの場合においてもＬＡＮ１０２内の第一サーバ１０３及び第二サーバ１０４に接続することが可能になる。
【００３２】
図２は第一端末１０５に注目したネットワークシステムの概略図である。紙面の都合上、図２及び後述する図３ではＮＣ１０８が接続されるインターネット１０７の表記は省略している。
第一端末１０５にはＯＳ２０１がインストールされており、ＯＳ２０１の一部であるシェル２０２を通じて第三アプリケーション２０３等のアプリケーションプログラムが実行される。第一端末１０５にはこの他にＲＴＡ１１１がインストールされており、所定の操作によって実行される。
ＯＳ２０１は一般的なマルチタスクのネットワークＯＳであり、一例としてはＷｉｎｄｏｗｓ（登録商標）である。これ以降、第一端末１０５及び第二端末１０６にはＷｉｎｄｏｗｓ（登録商標）がインストールされていることを前提として説明するが、ＯＳ２０１はＷｉｎｄｏｗｓ（登録商標）に限定されず、例えばＬｉｎｕｘ（登録商標）等のＰＯＳＩＸ系ＯＳであってもよい。
ＯＳ２０１は第一端末１０５のハードウェアである、ハードディスク等のストレージ２０４、キーボード及びマウス等の操作部２０５、液晶ディスプレイ等の表示部２０６、そして内蔵ＵＳＢインターフェース２０７とのデータの入出力を掌握し、アプリケーションがこれらのハードウェアを容易に利用できるためのＡＰＩを提供する。
【００３３】
ＲＴＡ１１１は、ＩＮＩ−ＢＯＸ１０９がユーザ認証を完遂すると、ＯＳ２０１の幾つかのＡＰＩをフックして、第一端末１０５全体の挙動を大幅に制限する。また、異常を検出したらその際の発生状況等をＩＮＩ−ＢＯＸ１０９を通じてＮＣ１０８に報告する。
【００３４】
更に、ＲＴＡ１１１はシェル２０２としての機能も提供する。ユーザが第一サーバ１０３に接続するために、ＲＴＡ１１１がユーザ提供するユーザインターフェースが、専用シェル２０８である。ユーザ認証が正常に終了すると、ＲＴＡ１１１の専用シェル２０８は端末の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ（コマンドライン）を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバのサーバ名がアプリケーションの引数として指定されている。このようにして、ＲＴＡ１１１の子プロセスとして起動されたアプリケーションプログラムが、図２の第一アプリケーション２０９及び第二アプリケーション２１０である。ＲＴＡ１１１の子プロセスとしてアプリケーションが起動されるので、ＲＴＡ１１１はアプリケーションの挙動を容易に把握できる。
【００３５】
図２では、専用シェル２０８から起動された第一アプリケーション２０９及び第二アプリケーション２１０が表示されている。一方、第一端末１０５がユーザ認証を完了するまでに既に実行されているＯＳ２０１のシェル２０２と第三アプリケーション２０３が、別途起動された状態である。これらはＲＴＡ１１１の専用シェル２０８の子プロセスとして起動されたアプリケーションではないので、ＲＴＡ１１１のＡＰＩフック機能でその挙動が大幅に制限される。また、実行を禁じられているアプリケーション、「ファイルを開く」動作が禁じられているファイルに対するアプリケーションの起動はＲＴＡ１１１によって阻害され、実行できなくなる。
【００３６】
第一端末１０５の内蔵ＵＳＢインターフェース２０７には、ＩＮＩ−ＢＯＸ１０９が接続されている。ＩＮＩ−ＢＯＸ１０９には後述するＤＨＣＰクライアントが内蔵されており、第一ＩＳＰ１１０と接続されることでインターネット接続ができるようになる。第一ＩＳＰ１１０はインターネット接続環境をエンドユーザに提供する事業者であるが、説明の都合上、インターネット接続のために動的グローバルＩＰアドレスを提供するＤＨＣＰサーバとインターネット１０７とのゲートウェイであると仮定する。
【００３７】
ＩＮＩ−ＢＯＸ１０９が第一ＩＳＰ１１０を通じてインターネット１０７に接続されると、ＮＣ１０８とも接続できるようになる。ＩＮＩ−ＢＯＸ１０９はインターネット１０７と接続されることを認識すると、直ちにＮＣ１０８に対して端末認証を試みる。ＮＣ１０８は後述する端末テーブルを内蔵し、端末テーブルにはＩＮＩ−ＢＯＸ１０９に内包されている機器特定ＩＤが列挙されている。ＮＣ１０８は、端末認証を要求してきたＩＮＩ−ＢＯＸ１０９或はソフトＩＮＩ１１３が、ＮＣ１０８がサーバと接続することを許可する端末であることを、端末テーブル内に当該ＩＮＩ−ＢＯＸ１０９或はソフトＩＮＩ１１３の機器特定ＩＤが存在することで認識し、正常に認証したことを相手に通知する。
【００３８】
ＩＮＩ−ＢＯＸ１０９が端末認証に成功すると、ＩＮＩ−ＢＯＸ１０９は内蔵ＵＳＢインターフェース２０７を通じてＲＴＡ１１１に端末認証の成功を報告する。この時、ＲＴＡ１１１は内蔵ＵＳＢインターフェース２０７上に構築されるＩＰネットワークを通じて、ＩＮＩ−ＢＯＸ１０９と所定の制御情報等の送受信を行う。ＲＴＡ１１１は端末認証の成功を受けて表示部２０６にユーザ認証のための入力画面を表示し、ユーザによる操作部２０５の操作を受け入れる。
【００３９】
図３は第二端末１０６に注目したネットワークシステムの概略図である。
第二端末１０６の、第一端末１０５との相違点は、第二端末１０６にはＩＮＩ−ＢＯＸ１０９の代わりにソフトＩＮＩ１１３がインストールされており、ＯＳ２０１とＲＴＡ１１１との間に介在している点と、第二端末１０６は第二ＩＳＰ１１２と内蔵ＮＩＣ３０１で接続される点である。したがって、第一端末１０５では第一ＩＳＰ１１０がＩＮＩ−ＢＯＸ１０９に動的グローバルＩＰアドレスを付与していたが、第二端末１０６では第二ＩＳＰ１１２が第二端末１０６が内蔵する内蔵ＮＩＣ３０１に直接動的グローバルＩＰアドレスを付与することとなる。ソフトＩＮＩ１１３は第二端末１０６内にインストールされているので、第一端末１０５とＩＮＩ−ＢＯＸ１０９の場合のように、ＩＰネットワーク経由で所定の制御情報の送受信を行わずとも、メッセージパッシング、共有メモリ或は名前付きパイプ等、一般的なプロセス間通信の仕組みが利用可能である。
【００４０】
［ＩＮＩ−ＢＯＸ１０９］
図４（ａ）及び（ｂ）は、ＩＮＩ−ＢＯＸ１０９の外観斜視図である。
図４（ａ）はＩＮＩ−ＢＯＸ１０９を斜め正面から見た外観斜視図である。ＩＮＩ−ＢＯＸ１０９の前面にはＵＳＢ−Ａコネクタ４０２が二つ設けられている。このＵＳＢ−Ａコネクタ４０２には、図示しない個人認証情報生成装置が接続される。
図４（ｂ）はＩＮＩ−ＢＯＸ１０９を斜め裏面から見た外観斜視図である。ＩＮＩ−ＢＯＸ１０９の裏面にはＵＳＢ−Ｂコネクタ４０３が一つと、ネットワークコネクタ４０４が一つ設けられている。ＵＳＢ−Ｂコネクタ４０３は、図示しないＵＳＢ−Ｂケーブルを通じて端末が接続される。ネットワークコネクタ４０４はＬＡＮケーブルが接続され、その先には第一ＩＳＰ１１０が提供する図示しないモデムが接続される。
【００４１】
図５はＩＮＩ−ＢＯＸ１０９のハードウェア構成を示すブロック図である。
マイクロコンピュータよりなるＩＮＩ−ＢＯＸ１０９は、ＣＰＵ５０２、ＲＡＭ５０３、ＲＯＭを兼用する不揮発性ストレージとしてのフラッシュメモリ５０４、第一ＵＳＢインターフェース５０５、第二ＵＳＢインターフェース５０６、そして第一ＮＩＣ５０７が、バス５０８に接続されている。
フラッシュメモリ５０４にはＯＳのカーネルやライブラリ、そして管理用コマンド等の主要部分が格納されている。ＯＳは例えばＬｉｎｕｘ（登録商標）である。
ＩＮＩ−ＢＯＸ１０９はパソコンである第一端末１０５からＵＳＢケーブルを通じて電源供給を受ける。つまり、ＩＮＩ−ＢＯＸ１０９はバスパワードデバイスである。
図６にて後述する、図５に記されていない第二ＮＩＣは、フラッシュメモリ５０４内に格納されているＯＳ及びアプリケーションプログラムによって仮想的に作成される。
【００４２】
図６はＩＮＩ−ＢＯＸ１０９の機能ブロック図である。
ＩＮＩ−ＢＯＸ１０９は、二つのネットワークインターフェースを具備する。
第一ＮＩＣ５０７は、図５で図示したようにハードウェアとして構成されるＮＩＣであり、第一ＩＳＰ１１０を経由してインターネット１０７に接続される。
第二ＮＩＣ６０１は、図５では図示されていないが、フラッシュメモリ５０４内に格納されているＯＳ及びアプリケーションプログラムによって仮想的に作成される。第一端末１０５から見ると、第二ＮＩＣ６０１はＵＳＢ接続される外付けＮＩＣとして認識される。つまり、第二ＮＩＣ６０１は第一端末１０５のネットワークシステムが構成するサブネットに含まれ、第一端末１０５から直接的にアクセスが可能なデバイスである。
【００４３】
ＩＮＩ−ＢＯＸ１０９の第一ＮＩＣ５０７が第一ＩＳＰ１１０に接続されると、ＤＨＣＰクライアント６０２は、第一ＮＩＣ５０７を通じて第一ＩＳＰ１１０の図示しないＤＨＣＰサーバから、ＩＰアドレス、ネットマスク、デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、第一ＮＩＣ５０７がネットワークに接続できるように第一ＮＩＣ５０７を設定する。
【００４４】
次に、アドレス重複回避部６０３は、ＤＨＣＰクライアント６０２が取得したネットワーク構成情報を参照して、第二ＮＩＣ６０１に付与しようとするＩＰアドレスが第一ＮＩＣ５０７のサブネットに属する場合には、第二ＮＩＣ６０１が第一ＮＩＣ５０７とは異なるサブネットのネットワークに属するようにするために、ＤＨＣＰサーバ６０４の起動パラメータを調整する。具体的には、第一ＮＩＣ５０７にグローバルＩＰアドレスが付与される場合は、第二ＮＩＣ６０１には既定値として、ネットワークアドレス１９２．１６８．０．０／２４に属するＩＰアドレスである１９２．１６８．０．１を付与するが、もしも第一ＮＩＣ５０７のネットワークアドレスが１９２．１６８．０．０／２４であった場合は、１９２．１６８．１．０／２４のＩＰアドレスである１９２．１６８．１．１を付与する。
【００４５】
ＩＮＩ−ＢＯＸ１０９の第一ＮＩＣ５０７が第一ＩＳＰ１１０に接続されて、第二ＮＩＣ６０１にもプライベートＩＰアドレスが付与された状態では、ポートフォワード設定部６０５は一般的な動的ＮＡＴを構成する。これにより、第一ＮＩＣ５０７と第二ＮＩＣ６０１との間は支障なくインターネット接続が成立する。なお、この時点では、暗号化通信処理部６０６は第二ＮＩＣ６０１と第一ＮＩＣ５０７との間を流れるパケットの暗号化処理及び復号化処理は行わない。
【００４６】
一方、認証制御部６０７は、第一ＮＩＣ５０７と第二ＮＩＣ６０１との間でインターネット接続が完遂したことを知ると、直ちにＮＣ１０８に対して端末認証を試みる。端末認証に用いる機器特定ＩＤ６０８は、コントロールセッション管理部６０９を通じて制御される暗号化通信処理部６０６によって暗号化されて、ＮＣ１０８に送信される。ＮＣ１０８から暗号化通信処理部６０６を通じて端末認証の成功の通知を受けると、認証制御部６０７は第一端末１０５のＲＴＡ１１１に対して、端末認証の成功を通知する。この時点で、ＩＮＩ−ＢＯＸ１０９とＮＣ１０８との間にはコントロールセッションが形成される。
【００４７】
認証制御部６０７は、ＲＴＡ１１１から第二ＮＩＣ６０１を通じて、又は第二ＵＳＢインターフェース５０６に接続された外部個人認証機器からユーザ認証の情報を受信すると、この情報を暗号化通信処理部６０６を通じて再びＮＣ１０８に送信し、ユーザ認証を試みる。ユーザ認証の情報は、様々である。ＲＴＡ１１１から受け取る場合は、一般的なユーザＩＤとパスワードである。第二ＵＳＢインターフェース５０６から受け取る場合は、第二ＵＳＢインターフェース５０６には指紋認証機器やＩＣカードリーダ等の、個人認証を実現する機器が接続されて、それら機器から個人認証に用いる情報が得られる。更に、ＲＴＡ１１１からユーザＩＤとパスワードを受け取り、ＩＣカードリーダから認証データを受け取り、これらをまとめてＮＣ１０８に送信する場合もある。以下、これらの端末を使用するユーザを認証するための情報を個人認証情報と総括して呼ぶ。
【００４８】
個人認証情報は、コントロールセッション管理部６０９を通じて制御される暗号化通信処理部６０６によって暗号化されて、ＮＣ１０８に送信される。ＮＣ１０８から暗号化通信処理部６０６を通じて個人認証の成功の通知を受けると、認証制御部６０７はこの通知をＲＴＡ１１１へ転送する。そして、ＲＴＡ１１１から個人認証が正常終了した旨の通知を受けると、認証制御部６０７はコントロールセッション管理部６０９に個人認証の成功を通知する。そして、ＩＮＩ−ＢＯＸ１０９全体の制御をコントロールセッション管理部６０９に委ねる。
【００４９】
コントロールセッション管理部６０９は、認証制御部６０７から制御の移譲の通知を受けると、ＮＣ１０８に対し、コントロールセッションを通じて第一端末１０５を現在使用しているユーザに係る制御設定情報６１０の送信を依頼する。ＮＣ１０８は制御設定情報６１０の送信依頼を受けて、個人認証を行ったユーザに対応する制御設定情報６１０を、後述するユーザテーブルとサーバテーブルから作成して、ＩＮＩ−ＢＯＸ１０９に送信する。コントロールセッション管理部６０９は、ＮＣ１０８から制御設定情報６１０を受信すると、これをＲＡＭ５０３内に格納する。
【００５０】
次に、コントロールセッション管理部６０９は、ＮＣ１０８から受信した制御設定情報６１０の一部である制限情報に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部６１１を制御する。パケットフィルタ設定部６１１は、コントロールセッション管理部６０９から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
【００５１】
次にコントロールセッション管理部６０９は、ＮＣ１０８から受信した制御設定情報６１０を第一端末１０５のＲＴＡ１１１に送信する。ＲＴＡ１１１は、制御設定情報６１０の一部である制限情報に記述されているＡＰＩフックの設定情報を読み出して、ＡＰＩのフックを設定する。また、アイコンを設けて、ユーザがアクセスを許可されているサーバにアクセスするためのリンク情報をアイコンに埋め込む。図１の場合、第一端末１０５のユーザは第一サーバ１０３に対するアクセスが許可されているので、第一サーバ１０３にアクセスするためのアプリケーションと、第一サーバ１０３にアクセスするためのリンク情報が、アイコンとしてＲＴＡ１１１のＧＵＩ画面内に設けられる。
【００５２】
リンク情報の形態は、プロトコルによって異なる。ＨＴＴＰであればＵＲＬ（Uniform Resource Locator）であり、ＣＩＦＳ（Common Internet File System：Ｗｉｎｄｏｗｓ（登録商標）のファイル共有サービスのプロトコル（ＳＭＢ：Server Message Block）が拡張されたプロトコル）であれば、サーバ名或はサーバのＩＰアドレスにファイルのフルパス名を追加した形式の文字列であり、ＲＤＰ（Remote Desktop Protocol）であれば、サーバ名或はサーバのＩＰアドレスだけである。
【００５３】
ユーザが、ＲＴＡ１１１が設けたアイコンをマウス等のポインティングデバイスでクリックすると、アイコンにアプリケーションプログラム名として埋め込まれているアプリケーションがＲＴＡ１１１の専用シェル２０８を通じて起動され、アプリケーションは起動パラメータとして記述されているリンク情報にしたがって、アクセス要求を示すパケットを発生する。このパケットをＩＮＩ−ＢＯＸ１０９が受信すると、コントロールセッション管理部６０９はＮＣ１０８に当該パケットに対応するサーバとの接続を要求する。ＮＣ１０８はユーザが要求したサーバに対応するリバースプロキシを起動する。一方、コントロールセッション管理部６０９はポートフォワード設定部６０５を制御して、当該パケットがＮＣ１０８のリバースプロキシを通じてサーバに届くように、ポートフォワーディングの設定を行わせる。
こうして第一端末１０５は、ＩＮＩ−ＢＯＸ１０９とＮＣ１０８を介して、第一サーバ１０３に接続することができる。
【００５４】
［ソフトＩＮＩ］
図７は、ソフトＩＮＩ１１３の機能ブロック図である。
ソフトＩＮＩ１１３は、二つのネットワークインターフェースを具備する。
内蔵ＮＩＣ３０１は、第二端末１０６にハードウェアとして内蔵されるＮＩＣであり、第二ＩＳＰ１１２を経由してインターネット１０７に接続される。
ループバック仮想ＮＩＣ７０１は、第二端末１０６にインストールされている、ＩＰｖ４プロトコルのネットワークＯＳには標準として備わっている、周知のループバックインターフェースである。仮に端末にＮＩＣが装備されていなくても、ＯＳ２０１がＩＰｖ４プロトコルをサポートする限り、必ず１２７．０．０．１というＩＰアドレスが付与されているループバックインターフェースがＯＳ２０１内に構成される。特別な設定を施していない限り、ループバックインターフェース宛に送信したパケットは、端末自身のパケット受信対象に送付される。つまり、「loop back」、送信したパケットが輪を描くように出発点、つまり端末自身に戻る。
【００５５】
ＩＮＩ−ＢＯＸ１０９の場合は、第一ＮＩＣ５０７は第一端末１０５から直接的にアクセスが可能なデバイスでは無かった。しかし、ソフトＩＮＩ１１３の場合、内蔵ＮＩＣ３０１もループバック仮想ＮＩＣ７０１も、第二端末１０６のＯＳ２０１及びアプリケーションから等しくアクセスが可能なデバイスである。
【００５６】
ソフトＩＮＩ１１３の内蔵ＮＩＣ３０１が第二ＩＳＰ１１２に接続されると、ＯＳ２０１が内蔵するＤＨＣＰクライアント７０２は、内蔵ＮＩＣ３０１を通じて第二ＩＳＰ１１２の図示しないＤＨＣＰサーバから、ＩＰアドレス、ネットマスク、デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、内蔵ＮＩＣ３０１がネットワークに接続できるように内蔵ＮＩＣ３０１を設定する。
【００５７】
ＩＮＩ−ＢＯＸ１０９の場合は、この手順の次に、第一ＮＩＣ５０７と第二ＮＩＣ６０１のサブネットが重複しないための処理が必要だったが、ループバック仮想ＮＩＣ７０１は、グローバル或はプライベートのＩＰアドレスが付与される内蔵ＮＩＣ３０１とは必ずネットワークセグメントが重複しないので、アドレス重複回避部６０３を設ける必要はない。また、ループバックアドレスは固定であるので、ＤＨＣＰサーバ６０４も不要である。
【００５８】
ソフトＩＮＩ１１３の内蔵ＮＩＣ３０１が第二ＩＳＰ１１２に接続された状態では、ポートフォワード設定部７０５は何もしない。また、パケットフィルタ設定部７０６も何もしない。これにより、ＯＳ２０１及びアプリケーションは内蔵ＮＩＣ３０１を通じて支障なくインターネット接続ができる。なお、この時点では、暗号化通信処理部６０６はループバック仮想ＮＩＣ７０１と内蔵ＮＩＣ３０１との間を流れるパケットの暗号化処理及び復号化処理は行わない。
【００５９】
一方、認証制御部６０７は、内蔵ＮＩＣ３０１のインターネット接続が完遂したことを知ると、直ちにＮＣ１０８に対して端末認証を試みる。端末認証に用いる機器特定ＩＤ６０８は、コントロールセッション管理部６０９を通じて制御される暗号化通信処理部６０６によって暗号化されて、ＮＣ１０８に送信される。ＮＣ１０８から暗号化通信処理部６０６を通じて端末認証の成功の通知を受けると、認証制御部６０７は第二端末１０６のＲＴＡ１１１に対して、端末認証の成功を通知する。この時点で、ソフトＩＮＩ１１３とＮＣ１０８との間にはコントロールセッションが形成される。
【００６０】
認証制御部６０７は、ＲＴＡ１１１から、又は内蔵ＵＳＢインターフェース２０７に接続された外部個人認証機器から個人認証情報を受信すると、この情報を暗号化通信処理部６０６を通じて再びＮＣ１０８に送信し、ユーザ認証を試みる。
【００６１】
個人認証情報は、コントロールセッション管理部６０９を通じて制御される暗号化通信処理部６０６によって暗号化されて、ＮＣ１０８に送信される。ＮＣ１０８から暗号化通信処理部６０６を通じて個人認証の成功の通知を受けると、認証制御部６０７はこの通知をＲＴＡ１１１へ転送する。そして、ＲＴＡ１１１から個人認証が正常終了した旨の通知を受けると、認証制御部６０７はコントロールセッション管理部６０９に個人認証の成功を通知する。そして、ソフトＩＮＩ１１３全体の制御をコントロールセッション管理部６０９に委ねる。
【００６２】
コントロールセッション管理部６０９は、認証制御部６０７から制御の移譲の通知を受けると、ＮＣ１０８に対し、コントロールセッションを通じて第二端末１０６を現在使用しているユーザに係る制御設定情報６１０の送信を依頼する。ＮＣ１０８は制御設定情報６１０の送信依頼を受けて、個人認証を行ったユーザに対応する制御設定情報６１０を、後述するユーザテーブル及びサーバテーブルから作成して、ソフトＩＮＩ１１３に送信する。コントロールセッション管理部６０９は、ＮＣ１０８から制御設定情報６１０を受信すると、これを図示しないＲＡＭ５０３内に格納する。
【００６３】
次に、コントロールセッション管理部６０９は、ＮＣ１０８から受信した制御設定情報６１０の一部である制限情報に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部７０６を制御する。パケットフィルタ設定部７０６は、コントロールセッション管理部６０９から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
【００６４】
ＩＮＩ−ＢＯＸ１０９の場合、この次には、コントロールセッション管理部６０９が制御設定情報６１０を第二端末１０６のＲＴＡ１１１に送信する手順を踏むが、ソフトＩＮＩ１１３の場合、ソフトＩＮＩ１１３とＲＴＡ１１１が第二端末１０６内に共存しているので、ＮＣ１０８から受信した制御設定情報６１０は直ちにＲＴＡ１１１も参照可能である。したがって、ソフトＩＮＩ１１３が制御設定情報６１０を第二端末１０６のＲＴＡ１１１に送信する手順は、本質的に生じ得ない。
【００６５】
ＲＴＡ１１１は、図示しないＲＡＭ５０３に保存されている制御設定情報６１０の一部である制限情報に記述されているＡＰＩフックの設定情報を読み出して、ＡＰＩのフックを設定する。また、アイコンを設けて、ユーザがアクセスを許可されているサーバにアクセスするためのリンク情報をアイコンに埋め込む。図１の場合、第二端末１０６のユーザは第二サーバ１０４に対するアクセスが許可されているので、第二サーバ１０４にアクセスするためのアプリケーションと、第二サーバ１０４にアクセスするためのリンク情報が、アイコンとしてＲＴＡ１１１のＧＵＩ画面内に設けられる。
【００６６】
ユーザが、ＲＴＡ１１１が設けたアイコンをマウス等のポインティングデバイスでクリックすると、アイコンにアプリケーションプログラム名として埋め込まれているアプリケーションがＲＴＡ１１１の専用シェル２０８を通じて起動され、アプリケーションは起動パラメータとして記述されているリンク情報にしたがって、アクセス要求を示すパケットを発生する。このパケットの宛先ＩＰアドレスはループバック仮想ＮＩＣ７０１のそれか、ループバック仮想ＮＩＣ７０１が属するサブネット（１２７．０．０．０／８）の範囲内のＩＰアドレスである。このパケットをソフトＩＮＩ１１３のコントロールセッション管理部６０９が受信すると、コントロールセッション管理部６０９はＮＣ１０８に当該パケットに対応するサーバとの接続を要求する。ＮＣ１０８はユーザが要求したサーバに対応するリバースプロキシを起動する。一方、コントロールセッション管理部６０９はポートフォワード設定部７０５を制御して、当該パケットがＮＣ１０８のリバースプロキシを通じてサーバに届くように、ポートフォワーディングの設定を行わせる。すると、アプリケーションがループバック仮想ＮＩＣ７０１或はループバック仮想ＮＩＣ７０１が属するサブネット内の特定ポートと送受信するパケットは、ポートフォワード設定部７０５を通じてＮＣ１０８へ送受信される。
こうして第二端末１０６は、ソフトＩＮＩ１１３とＮＣ１０８を介して、第二サーバ１０４に接続することができる。
【００６７】
以上、ＩＮＩ−ＢＯＸ１０９とソフトＩＮＩ１１３を説明した。
これまでの説明で明らかなように、ＩＮＩはＮＣ１０８の指示、具体的にはＮＣ１０８が作成する制御設定情報６１０の一部である制限情報に基づいて、端末で稼働するＯＳ２０１或はそのＯＳ２０１を通じて動作するアプリケーションから発生する通信に対し、パケットフィルタで制限を加える。そして、ユーザが許可されたサーバに対する仮想的な接続を実現するために、ＮＣ１０８に対するポートフォワーディングを設定する。
ポートフォワーディングを行うことで、端末はあたかもＬＡＮ１０２内のサーバに接続する時と同等の状態で、インターネット１０７及びファイアウォールを介したサーバに接続することができる。
【００６８】
ＮＣ１０８が作成する制御設定情報６１０は、ＩＮＩとＲＴＡ１１１の動作を制御するための設定情報である制限情報と、後述する名前解決に必要な仮想資源テーブルよりなる。これまで説明した制御設定情報６１０の役割の説明は、制限情報の役割であった。仮想資源テーブルについては、後述する名前解決の説明で詳述する。
【００６９】
［ＲＴＡ１１１］
図８は、ＲＴＡ１１１の機能ブロック図である。
これまでの説明で明らかなように、ＲＴＡ１１１はＮＣ１０８の指示、具体的にはＮＣ１０８が作成する制御設定情報６１０の一部である制限情報に基づいて、端末で起動するアプリケーションと、アプリケーションの動作に連れて使用されるデバイスに対して監視を行い、必要に応じて動作を制限する等の制御を行い、ログ記録等の管理を行う。このような機能を実現するために、ＲＴＡ１１１はＯＳ２０１に備わっているＡＰＩをフックして、アプリケーション及びＯＳ２０１の挙動を常時監視する。そして、ＡＰＩが制限情報に記述されている制限条件に合致した場合、ＲＴＡ１１１は当該ＡＰＩの起動を阻止し、ＩＮＩを通じてＮＣ１０８に報告する。
【００７０】
図８では、ＲＴＡ１１１を説明する際に必要不可欠な、ＯＳ２０１とアプリケーションについても機能ブロックとして表記している。
ＯＳ２０１には様々な機能が含まれているが、本実施形態を説明するに際し、ＯＳ２０１はハードウェアをアプリケーションから扱い易くするためのデバイスドライバの集合体と考えることができる。そして、デバイスドライバはＡＰＩの集合体ともいえる。図８では、主にこれらハードウェアとデバイスドライバに着目して、機能ブロックを記述した。
【００７１】
端末に備わっている主要なハードウェアとしては、キーボード及びマウス等のポインティングデバイスである操作部２０５、液晶ディスプレイ等の表示部２０６、ハードディスク等のストレージ２０４、そしてＮＩＣが挙げられる。但し、前述の第一端末１０５の場合は、ＮＩＣはＩＮＩ−ＢＯＸ１０９に仮想的に設けられた。何れの場合においても、インターネット１０７に接続する以上、ＮＩＣは存在する。
操作ドライバ８０１は、操作部２０５が発する操作情報をアプリケーションやシェル２０２に引き渡す。
表示制御部８０２は、アプリケーションやシェル２０２から発生する画面描画指示情報を実際の画面描画情報に変換して表示部２０６に引き渡す。
【００７２】
ファイルシステム８０３は、ストレージ２０４にファイル及びディレクトリを構成し、アプリケーションやシェル２０２の指示に従ってファイル及びディレクトリを操作する。
プロセス制御部８０４は、アプリケーションやシェル２０２を通じてストレージ２０４内に存在するアプリケーションやライブラリ等の実行及び終了を制御する。
クリップボードバッファ８０５は、アプリケーションやシェル２０２同士でデータオブジェクトの複写、移動、削除等の一時バッファとして機能する。
ＴＣＰ／ＩＰプロトコルスタックとも呼べるネットワークドライバ８０６は、アプリケーションやシェル２０２とネットワークとの間で通信ができる環境を構築し、その通信を制御する。
【００７３】
ネットワークドライバ８０６はＤＨＣＰクライアント７０２も含む。ＩＮＩ−ＢＯＸ１０９を利用する場合、ＩＮＩ−ＢＯＸ１０９内のＤＨＣＰクライアント６０２はＩＮＩ−ＢＯＸ１０９内の第二ＮＩＣ６０１に、ＩＮＩ−ＢＯＸ１０９内のＤＨＣＰサーバ６０４から受信するネットワーク構成情報に基づいて動的ＩＰアドレスを与える。ソフトＩＮＩ１１３を利用する場合、ネットワークドライバ８０６の一機能であるＤＨＣＰクライアント７０２は内蔵ＮＩＣ３０１に、第二ＩＳＰ１１２のＤＨＣＰサーバ６０４から受信するネットワーク構成情報に基づいて動的ＩＰアドレスを与える。
【００７４】
ＲＴＡ１１１は、ＯＳ２０１の初期起動プロセスやシェル２０２を通じたユーザの操作、或はＵＳＢメモリ内に格納された状態でＵＳＢメモリを端末に接続して自動実行される等で起動されると、最初にＡＰＩフック設定部８０７がＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３との通信を試みる。ＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３との通信に成功すると、ＡＰＩフック設定部８０７は次にＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３から端末認証が成功した旨の受信を待つ。ＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３から、端末認証に成功した旨の報告が来たら、ＡＰＩフック設定部８０７は次にユーザ認証を実行する。外部個人認証機器がＩＮＩ−ＢＯＸ１０９又は端末に接続されていればそれを優先し、そうでない場合はユーザＩＤ及びパスワードを入力するための画面を表示部２０６に表示し、ユーザの入力を待つ。
【００７５】
ＮＣ１０８からＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３を通じてユーザ認証が成功した旨の報告を受けたら、ＡＰＩフック設定部８０７は次に制御設定情報６１０が存在するか否か確認する。
ソフトＩＮＩ１１３の場合、ユーザ認証が成功するとソフトＩＮＩ１１３がＮＣ１０８から制御設定情報６１０をダウンロードして、端末の図示しないＲＡＭ内に制御設定情報６１０を保持しているので、ＡＰＩフック設定部８０７は明示的に何らかの動作をすることなく、すぐに次の動作に移行できる。
ＩＮＩ−ＢＯＸ１０９の場合、ＡＰＩフック設定部８０７はＩＮＩ−ＢＯＸ１０９に対して制御設定情報６１０を要求する。ＩＮＩ−ＢＯＸ１０９から制御設定情報６１０をダウンロードして、ＲＡＭ５０３内に制御設定情報６１０を保持する。
【００７６】
ＮＣ１０８から制御設定情報６１０を得ると、ＡＰＩフック設定部８０７は、制御設定情報６１０の一部である制限情報に記述されている情報に従って、操作情報取得部８０８、画面キャプチャ処理部８０９、ファイルシステム監視部８１０、プロセス監視部８１１、クリップボード監視部８１２、そしてＡＰＩフック処理部８１３に設定を行う。
【００７７】
ファイルシステム監視部８１０は、制限情報で指定された特定のファイルやディレクトリに対する挙動として、コピー、移動、削除、名称変更を監視する。
プロセス監視部８１１は、制限情報で指定された特定のアプリケーション等のプロセスの起動及び自己プロセス隠蔽行為を監視する。
クリップボード監視部８１２は、制限情報で指定された特定のアプリケーション等が、クリップボードバッファ８０５に対する、データオブジェクトの複写、移動、削除等の操作を監視する。
【００７８】
ＡＰＩフック処理部８１３は、ファイルシステム監視部８１０がファイルシステム８０３に対するＡＰＩフック処理を、プロセス監視部８１１がプロセス制御部８０４に対するＡＰＩフック処理を、クリップボード監視部８１２がクリップボードバッファ８０５に対するＡＰＩフック処理を、それぞれ実現する。
ＡＰＩフック処理部８１３によって、シェル２０２やアプリケーションがファイルやプロセスに対して何らかの動作を起こそうとすると、ファイルシステム監視部８１０やプロセス監視部８１１がその都度呼び出されて、対応するＡＰＩを実行すべきか否かが判定される。
【００７９】
操作情報取得部８０８は、制限情報に記述されている情報に従って、当該情報に記されている条件に合致したら、操作ドライバ８０１から得られる操作情報を、ＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３を通じてＮＣ１０８へ報告する。
画面キャプチャ処理部８０９は、制限情報に記述されている情報に従って、当該情報に記されている条件に合致したら、表示制御部８０２から得られるビットマップ画面情報を、ＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３を通じてＮＣ１０８へ報告する。
【００８０】
専用シェル２０８は、制御設定情報６１０の記述に従って、ユーザが実行を許可されるアプリケーションのアプリケーションプログラム名と、ユーザがアクセスを許可されるサーバのリソース名（resource：「情報資源」の意）を含むアイコンを作成する。アイコンの中身はコマンドライン文字列であり、実行するアプリケーションプログラム名と、その引数としてサーバのリソース名が記述される。また、アプリケーションプログラムによっては、起動時に必要な種々のオプションスイッチも含まれる。このアイコンをマウス等のポインティングデバイス等でクリックすることで起動したアプリケーションプログラムが、図８の第一アプリケーション２０９及び第二アプリケーション２１０である。第一アプリケーション２０９及び第二アプリケーション２１０は専用シェル２０８の子プロセスとして起動されるので、第一アプリケーション２０９及び第二アプリケーション２１０の挙動は専用シェル２０８を通じて完全に把握可能である。
【００８１】
一方、ＯＳ２０１には標準で備わっているシェル２０２が存在する。また、そのシェル２０２から起動するアプリケーションプログラムも当然存在する。プロセス監視部８１１はこれら専用シェル２０８を経由しないシェル２０２及びアプリケーション（図８では第三アプリケーション２０３がこれに該当する。）については、ファイルシステム監視部８１０、プロセス監視部８１１及びクリップボード監視部８１２が厳しくその挙動を監視し、サーバに対するセキュリティ面の脅威となる可能性のある操作は直ちに中止する。また、起動自体が禁じられているアプリケーションプログラムについては、プロセス監視部８１１によって強制終了させられる。
【００８２】
［ＮＣ１０８］
図９は、ＮＣ１０８の機能ブロック図である。
本実施形態のＮＣ１０８は、ＬＡＮ１０２のゲートウェイを兼用する。インターネット１０７に接続される第三ＮＩＣ９０１には固定のグローバルＩＰアドレスが、ＬＡＮ１０２に接続される第四ＮＩＣ９０２には、ＬＡＮ１０２のゲートウェイアドレスとなる固定のプライベートＩＰアドレスが付与されている。第三ＮＩＣ９０１と第四ＮＩＣ９０２との間には、ＬＡＮ１０２に接続されている端末がインターネット１０７に接続するための動的ＮＡＴの機能と、インターネット１０７上のセキュリティ上の脅威からＬＡＮ１０２内の端末及びサーバを保護するためのパケットフィルタリングの機能を備えたファイアウォール９０３が設けられている。
【００８３】
第三ＮＩＣ９０１に接続されている暗号化通信処理部９０４は、ＩＮＩ−ＢＯＸ１０９及びソフトＩＮＩ１１３に設けられている暗号化通信処理部６０６と対をなす。つまり、ＩＮＩと認証情報の送受信と、コントロールセッション及びデータセッションの暗号化を施す。
認証部９０５は、端末テーブル９０６及びユーザテーブル９０７を参照して、端末認証及びユーザ認証を遂行する。認証部９０５は更に、ユーザ認証が正常に終了した端末については、その機器特定ＩＤ６０８とユーザＩＤの組みを認証済ＩＤリスト９０８に書き出す。
【００８４】
コントロールセッション管理部９０９は、ＩＮＩ−ＢＯＸ１０９及びソフトＩＮＩ１１３に設けられているコントロールセッション管理部６０９と対をなす。つまり、ＩＮＩとの間にコントロールセッションを形成し、端末に対する様々な制御情報の送受信を行う。特に、ユーザテーブル９０７には制限情報がユーザ毎に格納されており、コントロールセッション管理部９０９はＩＮＩの要求に応じてユーザテーブル９０７から当該ユーザの制限情報を読み出してＩＮＩへ送信する。
【００８５】
データセッション管理部９１０は、コントロールセッション管理部９０９を通じて、ＩＮＩから来たサーバに対する接続要求に応じて、当該サーバに対応するリバースプロキシを起動して、ＩＮＩとＮＣ１０８との間にデータセッションを形成する。データセッション管理部９１０によって起動されるプロセスは、図９に示すように、第一リバースプロキシ９１１、第二リバースプロキシ９１２、…と、端末との間に形成されるデータセッションの数に応じて増減する。
【００８６】
端末テーブル９０６は、ＮＣ１０８が接続を許可するＩＮＩの機器特定ＩＤ６０８が列挙されているテーブルである。
ユーザテーブル９０７は、ＮＣ１０８が接続を許可するユーザのユーザＩＤ及びパスワード等の個人認証情報と、当該ユーザの制限情報と、当該ユーザが接続を許可されているサーバのサーバ名が格納されている。
サーバテーブル９１３は、ユーザＩＤと、当該ユーザＩＤのユーザが利用できるサーバのサーバ名と、当該サーバのアクセスに用いられるプロトコルの種類と、対応するリバースプロキシのプログラム名等が格納されている。このサーバテーブル９１３には、端末が接続したいサーバを正しく指定できるために必要な「名前解決」の仕組みに必要な情報が格納されている。
【００８７】
端末がユーザ認証を完遂すると、コントロールセッション管理部９０９は、サーバテーブル９１３から、ユーザがサーバにアクセスするために、端末に必要な情報である仮想資源テーブルと、リバースプロキシに必要な情報であるユーザ資源テーブルを作成する。
仮想資源テーブルはユーザテーブル９０７の制限情報と併せて制御設定情報６１０を構成し、ＩＮＩに送信される。
ユーザ資源テーブルはユーザ毎に作成され、ＮＣ１０８の資源テーブルディレクトリ９１４に格納され、リバースプロキシの起動に利用される。
【００８８】
図示しないリバースプロキシサーバプログラムは、サーバにアクセスする際に利用するプロトコルに応じて用意される。ＨＴＴＰであれば、プロキシモードのリザルトコードを実装する。ＣＩＦＳやＲＤＰの場合は、ＩＰアドレスの書き換えのみ行う。
【００８９】
これまでの説明で明らかなように、ＮＣ１０８は、ＩＮＩに対して端末認証とユーザ認証の二重の認証を行い、ＩＮＩとの間にコントロールセッションを形成する。そして、端末を操作するユーザにサーバとの接続を実現するために、ＩＮＩとＮＣ１０８との間にデータセッションを形成し、サーバとＩＮＩとの間に当該データセッションに接続するリバースプロキシを起動する。
【００９０】
先のＩＮＩの説明で、ＩＮＩがポートフォワーディングを行うことで、端末はあたかもＬＡＮ１０２内のサーバに接続する時と同等の状態で、インターネット１０７及びファイアウォール９０３を介したサーバに接続することができる、と説明した。このことについて詳述する。
端末が、単にファイアウォール９０３の向こう側に存在するサーバに対して接続を行うのであれば、ＬＡＮ１０２のゲートウェイ或はＬＡＮ１０２とインターネット１０７との境界に配置される機器に、リバースプロキシを設定すればよい。しかし、この場合、端末はリバースプロキシが稼働するマシンのグローバルＩＰアドレスに対して接続を行うこととなる。このような接続形態は、アプリケーションに元々から備わっているセキュリティ設定によって様々な悪影響を生じる虞がある。
【００９１】
具体的には、例えばマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）に標準的に備わっているｗｅｂブラウザ「インターネットエクスプローラ」（以下「ＩＥ」と略す）では、接続しようとするｗｅｂサーバのＩＰアドレス、ＦＱＤＮ（Full Qualified Domain Name：完全修飾ドメイン名）或はドメイン名を含まないホスト名に応じて、ＨＴＭＬ（Hyper Text Markup Language）文書内に埋め込まれたスクリプトや外部アプリケーション等を実行するか否か等のセキュリティ設定を変更する機能が備わっている。ＬＡＮ１０２内のｗｅｂサーバはＬＡＮ１０２内の端末からアクセスされることを前提にｗｅｂアプリケーションが構築されており、インターネット１０７上のｗｅｂサーバでは危険で実行が許されないようなスクリプト等も、利便性を優先してＨＴＭＬ文書内に含まれている。つまり、リバースプロキシだけでは、インターネット１０７からＬＡＮ１０２内のサーバに接続しても、ＩＥを始めとする所望のアプリケーションが正常に動作することが保証できないどころか、異常終了する等の弊害を生じる可能性が高い。
【００９２】
この問題を解決するためには、ＩＥ等の端末上で動作するアプリケーションに対して、「あたかもＬＡＮ１０２内のサーバに接続していると錯覚させる」仕組みが必要である。このための解決策が、ポートフォワーディングである。ポートフォワーディングを通じてサーバに接続する、ということは、ＩＮＩ−ＢＯＸ１０９の場合では端末と同一サブネットのプライベートアドレスに対して、ソフトＩＮＩ１１３の場合ではループバックアドレスに対して、接続する、ということとなる。何れの場合も、ＩＥから見ると、パケットに付される宛先ＩＰアドレスはアプリケーションのセキュリティ設定を低い状態にできる「ローカルイントラネット」に属する。こうして、端末はインターネット１０７を越えてファイアウォール９０３の向こう側にあるサーバに対し、制限のない「ローカルイントラネット」としてのアクセスを実現する。
【００９３】
［動作］
図１０及び図１１は、端末がインターネット１０７に接続して、認証を完遂する迄の動作の流れを示すタイムチャートである。
端末がインターネット１０７に接続する動作は、ＩＮＩ−ＢＯＸ１０９とソフトＩＮＩ１１３とで若干異なる。
前述のＩＮＩ−ＢＯＸ１０９が接続されている第一端末１０５の場合は、ＩＮＩ−ＢＯＸ１０９の第一ＮＩＣ５０７を第一ＩＳＰ１１０が提供するモデムに接続する。
前述のソフトＩＮＩ１１３を内蔵する第二端末１０６の場合は、第二端末１０６の内蔵ＮＩＣ３０１を第二ＩＳＰ１１２が提供するモデムに接続する。
すると、ＩＮＩ−ＢＯＸ１０９の場合はＩＮＩ−ＢＯＸ１０９に内蔵されるＤＨＣＰクライアント７０２が（Ｓ１００１）、ソフトＩＮＩ１１３の場合はＯＳ２０１が内蔵するＤＨＣＰクライアント７０２が（Ｓ１００２）起動して、ＩＳＰに備わっているＤＨＣＰサーバからネットワーク構成情報を受信してＮＩＣに所定の設定を施すことで（Ｓ１００３）、端末はインターネット１０７との接続を確立する（Ｓ１００４）。
【００９４】
ＩＮＩの認証制御部６０７は、端末がインターネット１０７に接続したことを検出すると、ＮＣ１０８に機器特定ＩＤ６０８を送信して、端末認証を試みる（Ｓ１００５）。ＮＣ１０８の認証部９０５は検証を行い（Ｓ１００６）、端末認証の結果をＩＮＩに返す。
ＩＮＩの認証制御部６０７は、ＮＣ１０８から返ってきた端末認証結果が「正常に認証した（認証ＯＫ）」であれば（Ｓ１００７のＹＥＳ）、その旨をＲＴＡ１１１に報告する（Ｓ１００８）。そして、この時点でＮＣ１０８とソフトＩＮＩ１１３との間には、制御のための通信路、つまりコントロールセッションが形成される。
逆に、ＮＣ１０８から返ってきた認証結果が「正常に認証できなかった（認証ＮＧ）」であれば（Ｓ１００７のＮＯ）、異常終了する（Ｓ１００９）。異常終了の場合は、端末がＮＣ１０８に接続する資格を持たないので、これ以降処理する事項はない。
【００９５】
ＲＴＡ１１１のＡＰＩフック設定部８０７は、ＩＮＩから端末認証が正常に終了した旨の報告を受けると、端末の表示部２０６にユーザＩＤ及びパスワードを入力するための画面、或は外部個人認証機器を用いたユーザ認証操作の案内画面を表示し（Ｓ１０１０）、個人認証情報の入力を待つ（Ｓ１０１１）。個人認証情報が入力されたら、ＡＰＩフック設定部８０７はＩＮＩに個人認証情報を送信する（Ｓ１０１２）。ＩＮＩの認証制御部６０７は受信した個人認証情報をＮＣ１０８へ転送する（Ｓ１０１３）。
ＮＣ１０８の認証部９０５は、受信した個人認証情報でユーザテーブル９０７を検索し、当該個人認証情報が正当であるか否かを検証する（Ｓ１０１４）。認証部９０５は検証の結果をＩＮＩに返送する（Ｓ１０１５）。ＩＮＩの認証制御部６０７は受信したユーザ認証結果をＲＴＡ１１１へ転送する（Ｓ１０１６）。
【００９６】
ＲＴＡ１１１のＡＰＩフック設定部８０７は、ＮＣ１０８から返ってきたユーザ認証結果が「正常に認証した（認証ＯＫ）」であれば（Ｓ１０１７のＹＥＳ）、ＩＮＩから制御設定情報６１０が送信されるのを待つ。逆に、ＮＣ１０８から返ってきた認証結果が「正常に認証できなかった（認証ＮＧ）」であれば（Ｓ１０１７のＮＯ）、表示部２０６にエラー画面を表示して（Ｓ１０１８）、再度ユーザ認証画面を表示する（Ｓ１０１０）。つまり、端末認証は完了しているがユーザ認証が完了していないので、ユーザ認証が正常終了するまでユーザ認証の動作は繰り返される。
【００９７】
ＩＮＩの認証制御部６０７は、ＮＣ１０８の認証部９０５から受信したユーザ認証の検証の結果が正当であれば、コントロールセッション管理部９０９に個人認証の成功を通知する。そして、ソフトＩＮＩ１１３全体の制御をコントロールセッション管理部９０９に委ねる。
コントロールセッション管理部９０９は、認証制御部６０７から制御の移譲の通知を受けると、コントロールセッションを通じてＮＣ１０８に、現在端末を使用しているユーザに係る制御設定情報６１０の送信を要求する（Ｓ１０１９）。
ＮＣ１０８のコントロールセッション管理部９０９は、ＩＮＩが発した制御設定情報６１０の送信要求を受けて、個人認証を行ったユーザに対応する制御設定情報６１０をユーザテーブル９０７及びサーバテーブル９１３から作成して、ＩＮＩに送信する（Ｓ１０２０）。
ＩＮＩのコントロールセッション管理部９０９は、ＮＣ１０８から制御設定情報６１０を受信すると、これをＲＡＭ５０３に格納する。ＩＮＩ−ＢＯＸ１０９の場合はＩＮＩ−ＢＯＸ１０９のＲＡＭ５０３であり、ソフトＩＮＩ１１３の場合は端末が備えるＲＡＭ５０３である。
【００９８】
次に、ＩＮＩのコントロールセッション管理部９０９は、ＮＣ１０８から受信した制御設定情報６１０に記述されている、パケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部７０６を制御する。パケットフィルタ設定部７０６は、コントロールセッション管理部９０９から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する（Ｓ１０２１）。
【００９９】
図１１を参照して説明を続ける。
次に、ＩＮＩのコントロールセッション管理部９０９は、ＮＣ１０８から受信した制御設定情報６１０をＲＴＡ１１１に送信する（Ｓ１１２２）。但し、この動作はＩＮＩ−ＢＯＸ１０９の場合だけである。ソフトＩＮＩ１１３の場合は、ソフトＩＮＩ１１３自身が受信した制御設定情報６１０がそのまま端末のＲＡＭ５０３に格納されているので、ＲＴＡ１１１もその制御設定情報６１０に直接アクセスできるので、転送の必要がない。
【０１００】
ＲＴＡ１１１は制御設定情報６１０の内容に従って、ＡＰＩフック処理部８１３を始めとする各種機能ブロックに対して所定の設定を行う（Ｓ１１２３）。
こうして、ＲＴＡ１１１はＡＰＩフックを、ＩＮＩはパケットフィルタを、それぞれ構成した。
【０１０１】
これ以降は、ループ動作である。
ＲＴＡ１１１のＡＰＩフック設定部８０７は、ファイルシステム監視部８１０、プロセス監視部８１１及びクリップボード監視部８１２から、制御設定情報６１０に記述されている異常な操作を検出したら（Ｓ１１２４のＹＥＳ）、呼び出されるＡＰＩの起動を阻止して（Ｓ１１２５）、ＮＣ１０８に詳細な情報を通知する（Ｓ１１２６）。
ＩＮＩのパケットフィルタは、制御設定情報６１０に記述されている異常なパケットを検出したら（Ｓ１１２７のＹＥＳ）、当該パケットの流れを阻止して（Ｓ１１２８）、ＮＣ１０８に詳細な情報を通知する（Ｓ１１２９）。
ＮＣ１０８はこれら異常状態の報告を受けると、図示しないログに記録する（Ｓ１１３０）。
【０１０２】
図１２は、端末からアプリケーションを起動して、ＬＡＮ１０２内のサーバに接続する動作の流れを示すタイムチャートである。
ユーザが端末を操作してサーバを利用しようとするアプリケーションを起動すると（Ｓ１２０１）、アプリケーションからサーバに対するアクセス要求を示すパケットが発生する（Ｓ１２０２）。
ＩＮＩのコントロールセッション管理部９０９は、端末から生じたアクセス要求を示すパケットを検出すると、当該パケットの宛先ＩＰアドレス及びポート番号から、端末のアプリケーションが接続を要求するサーバを割り出す。そして、コントロールセッションを通じてＮＣ１０８に当該サーバに対するアクセス要求を送信する（Ｓ１２０３）。
【０１０３】
ＮＣ１０８のコントロールセッション管理部９０９は、ＩＮＩからサーバに対するアクセス要求を受信すると（Ｓ１２０４）、後述するユーザ資源テーブルを参照して、当該サーバに対応するリバースプロキシのプログラム名をデータセッション管理部９１０に引き渡す。データセッション管理部９１０はコントロールセッション管理部９０９から指定されたリバースプロキシプログラムを起動する（Ｓ１２０５）。
【０１０４】
一方、ＩＮＩのコントロールセッション管理部９０９は、ポートフォワーディングの設定を行う（Ｓ１２０６）。こうして、アプリケーションとＩＮＩとの仮想接続（Ｓ１２０７）、ＩＮＩとＮＣ１０８とのポートフォワーディング（Ｓ１２０８）、ＮＣ１０８とサーバとのリバースプロキシ接続（Ｓ１２０９）を経て、アプリケーションはサーバと仮想的な接続が成立する（Ｓ１２１０）。
【０１０５】
［名前解決］
ＴＣＰ／ＩＰネットワークでは、クライアントがサーバに接続を行う際、殆どの場合、ネームリゾルバと呼ばれる、ホスト名或はＦＱＤＮから実際のＩＰアドレスに変換する、名前解決の仕組みが必要である。本実施形態の名前解決について、説明する。
図１３（ａ）、（ｂ）及び（ｃ）は、サーバテーブル９１３と、仮想資源テーブルと、ユーザ資源テーブルの概略図である。
【０１０６】
図１３（ａ）は、サーバテーブル９１３の中身の一例を示す。
「ユーザＩＤ」フィールドは、ユーザテーブル９０７と共通の、ユーザＩＤが格納されるフィールドである。
「サーバ名」フィールドは、ＬＡＮ１０２内で用いられるサーバの名称が格納されるフィールドである。この「サーバ名」フィールドに格納するサーバ名は、ＦＱＤＮであってもよいし、ドメイン名を含まないホスト名であってもよい。
「プロトコル」フィールドは、当該サーバが提供するサービスのプロトコルの名称が格納されるフィールドである。
【０１０７】
「リバースプロキシ用リソース文字列」フィールドは、リバースプロキシが当該サーバにアクセスする際に用いる、サーバが提供する情報資源を特定する文字列である。例えばＨＴＴＰであればサーバの起点ディレクトリを示す「ＳｅｒｖｅｒＲｏｏｔ」であり、ＣＩＦＳであればサーバがリソースを提供するルートを示すリソース名称である。
「ポート番号」フィールドは、当該サーバが提供するサービスに用いられるポート番号である。
【０１０８】
「端末用リソース文字列」フィールドは、端末がサーバにアクセスする際に用いる、端末のアプリケーションプログラムが接続相手の情報資源を特定する文字列であり、ＲＴＡの専用シェルが設けるアイコンに埋め込まれる、アプリケーションの引数でもある。例えばＨＴＴＰであればＵＲＬであり、ＣＩＦＳであればサーバがリソースを提供するルートを示すリソース名称である。
「リバースプロキシプログラム名」フィールドは、端末とサーバを接続するために起動するリバースプロキシのプログラム名である。例えばＨＴＴＰやＦＴＰならｓｑｕｉｄ（http://www.squid-cache.org/）、ｄｅｌｅｇａｔｅ（http://www.delegate.org/delegate/）、ＲＤＰやＣＩＦＳならｓｔｏｎｅ（http://gw.gcd.org/sengoku/stone/Welcome.ja.html）等が挙げられる。
【０１０９】
端末がユーザ認証を完遂すると、コントロールセッション管理部９０９は、当該ユーザのユーザＩＤを検索キーにして、サーバテーブル９１３を絞り込み検索する。すると、絞り込んで得られるレコードは当該ユーザが利用可能なサーバの一覧になる。なお、紙面の都合上、図１３（ａ）では予めユーザＩＤ「ｓｕｇｉｙａｍａ」で絞り込んだ場合の例を示している。したがって、サーバテーブル９１３は、「ユーザＩＤ」フィールドの内容のみ異なり、「ユーザＩＤ」フィールド以外のフィールドの内容が全く同じレコードも存在し得る。
次に、コントロールセッション管理部９０９は、サーバテーブル９１３の絞り込み検索で得られたレコードに対して、端末が利用する仮想ＩＰアドレスを割り当てる。仮想ＩＰアドレスの割り当て方は、ポートフォワーディングを行うＮＩＣのサブネットに属するＩＰアドレスを順番に割り当てる。この時、サブネットに属するＩＰアドレスのうち、ブロードキャストアドレスとネットワークアドレスと、通常デフォルトゲートウェイとして用いられることの多い、ホスト部の最下位ビットだけが「１」のＩＰアドレスは、割り当て対象のＩＰアドレスからは除外する。
【０１１０】
ＩＮＩ−ＢＯＸ１０９の場合は「１９２．１６８．０．２」から始まり、１ずつインクリメントして、「１９２．１６８．０．２５４」まで割り当てる。
ソフトＩＮＩ１１３の場合は「１２７．０．０．２」から始まり、１ずつインクリメントして、「１２７．０．０．２５４」まで割り当てる。
これは、一般的なクラスＣのＩＰアドレスの範囲であり、ネットワークアドレス、ブロードキャストアドレス、デフォルトゲートウェイを除いた、クラスＣの範囲内で一般的に利用可能なアドレスが「２」から「２５４」迄の２５３個であることに起因する。
【０１１１】
仮想ＩＰアドレスを割り当てたら、それらレコードから、仮想資源テーブルと、ユーザ資源テーブルを作成する。
仮想資源テーブルは、サーバテーブル９１３の絞り込み検索で得られたレコードのうち、「ユーザＩＤ」フィールドと、「リバースプロキシ用リソース文字列」フィールドを除いたデータである。コントロールセッション管理部９０９は、これをユーザテーブル９０７の制限情報と併せて制御設定情報６１０を構成し、ＩＮＩに送信する。
ユーザ資源テーブルは、サーバテーブル９１３の絞り込み検索で得られたレコードのうち、「ユーザＩＤ」フィールドと、「端末用リソース文字列」フィールドを除いたデータである。コントロールセッション管理部９０９は、これをユーザＩＤを用いたファイル名でファイルを作成し、資源テーブルディレクトリ９１４に格納する。
【０１１２】
周知の通り、サーバは単一のサーバが単一のサービスを提供するとは限らない。また、特にＨＴＴＰではＡｐａｃｈｅ（http://httpd.apache.org/）の「ｖｉｒｔｕａｌｈｏｓｔ」機能のように、同じＩＰアドレスでありながら異なるＦＱＤＮでサーバにアクセスすると、あたかも全く別のサーバに接続されたように異なるコンテンツを得られる機能も存在し、広く利用されている。このような多様な「サービス」に対応するためには、サーバが提供する資源（リソース）に対するアクセス方法と、端末の仮想接続とをしっかり対応させなければならない。
【０１１３】
「リバースプロキシ用リソース文字列」は、リバースプロキシプログラムがサーバに対するクライアントとしてサーバの資源にアクセスするための、リソースを指定する文字列である。図１３ではサーバ名がそのまま使用されているが、これはＬＡＮ１０２内にプライベートなＤＮＳサーバが稼働していることを想定している。もしも、ＬＡＮ１０２内にＬＡＮ１０２上のサーバの名前解決を行うためのＤＮＳサーバが稼働していない場合は、「リバースプロキシ用リソース文字列」のホスト名に代わり、サーバに付されているプライベートＩＰアドレスが直接記入されることとなる。
【０１１４】
これに対し、「端末用リソース文字列」は、端末上で所定のプログラムを起動する際に、プログラムがサーバにアクセスするための、リソースを指定する文字列である。しかし、この文字列はリバースプロキシによって変換することができる。Ａｐａｃｈｅのｖｉｒｔｕａｌｈｏｓｔ機能を用いなくても、サーバテーブル９１３の「リバースプロキシ用リソース文字列」の設定と「端末用リソース文字列」の設定を工夫するだけで、ｖｉｒｔｕａｌｈｏｓｔと同等の機能を実現することができる。
【０１１５】
逆に、ｗｅｂサーバには既にＡｐａｃｈｅが稼働しており、ｖｉｒｔｕａｌｈｏｓｔの設定がなされている場合、ｖｉｒｔｕａｌｈｏｓｔ機能が正しく稼働するために、「端末用リソース文字列」にはＡｐａｃｈｅに設定されている仮想ホスト名が含まれている必要がある。Ａｐａｃｈｅのｖｉｒｔｕａｌｈｏｓｔ機能は、ＨＴＴＰの「ＧＥＴ」メソッドのオプションの「ＨＯＳＴ」オプションで送信されるＦＱＤＮを、ｗｅｂサーバであるＡｐａｃｈｅが見て、どの仮想ホストを「ＳｅｒｖｅｒＲｏｏｔ」にするか判断するからである。
【０１１６】
何れの場合においても、サーバテーブル９１３が「リバースプロキシ用リソース文字列」と「端末用リソース文字列」とを分けて管理することで、今日のｗｅｂサーバに求められる機能を過不足なく満たすことが出来る。
【０１１７】
アプリケーションプログラムが引数に指定された「端末用リソース文字列」を読み込むと、アプリケーションプログラムは端末用リソース文字列の中からＦＱＤＮ或はホスト名或はＩＰアドレスを抽出する。ＩＰアドレスであればそのまま当該ＩＰアドレスを宛先ＩＰアドレスとする接続要求パケットを発する。そうでない場合は、アプリケーションプログラムは名前解決を試みる。
【０１１８】
本実施形態の場合、名前解決の手段は幾つか挙げられる。
一つは、テキストファイルである「ｈｏｓｔｓ」に、ユーザ資源テーブルの「端末用リソース文字列」から抽出したＦＱＤＮ或はホスト名と「端末用ターゲットアドレス」との対応を記述することである。
もう一つは、ＩＮＩ或はＲＴＡがＤＮＳサーバを構成して、アプリケーションから生じるＦＱＤＮ或はホスト名の問い合わせに対して、「端末用ターゲットアドレス」を返すことである。
もう一つは、ＩＮＩ或はＲＴＡがネットワークのＡＰＩをフックして、アプリケーションから生じるＦＱＤＮ或はホスト名の問い合わせを検出したら、ネットワークシステムが参照するＤＮＳサーバに代わって、「端末用ターゲットアドレス」を返すことである。
【０１１９】
図１２及び図１３の説明から解るように、本実施形態のネットワークシステムでは、端末のアプリケーションがサーバへ接続しようとすると、初めてコントロールセッションとは異なるポートでデータセッションを形成する。端末が接続しようとするサーバが異なれば、その都度異なるデータセッションが形成される。ＮＣがユーザ毎に利用できるサーバの資源をサーバテーブルで管理し、ユーザ認証が完遂した時点でサーバテーブルからポートフォワーディングのための仮想資源テーブルとリバースプロキシのためのユーザ資源テーブルを自動作成するので、データセッションの重複等の事故を引き起こすことなく、多数のユーザに対して容易に仮想接続サービスを提供することができる。
【０１２０】
［ｗｅｂブラウザの仮想接続］
インターネット１０７の利用に留まらず、今日のＬＡＮ１０２においても、ｗｅｂの技術は必要不可欠である。ｗｅｂブラウザは単なる情報閲覧の道具に留まらず、ｗｅｂアプリケーションのユーザインターフェースをも構成する。本実施形態の仮想接続でも、ｗｅｂブラウザが支障なく動作することは必要条件である。
しかしながら、ｗｅｂの基盤技術であるＨＴＭＬには、「リンク」という技術が存在する。このリンク、具体的には「<a href="...">」という、ＵＲＬ文字列を記述する「Ａタグ」は、ＨＴＭＬ文書を出力したｗｅｂサーバ以外のｗｅｂサーバの情報源を指し示す場合が多々ある。
【０１２１】
前述の通り、本実施形態の仮想接続では、端末が直接インターネット１０７に接続することが制限される。しかし、ＨＴＭＬ文書内にはＡタグでインターネット１０７上のリソースを示す場合が多々ある。このままでは、ＨＴＭＬ文書を正しく表示することができない。
【０１２２】
そこで、本実施形態では、ＲＴＡ１１１の専用シェル２０８から起動するｗｅｂブラウザに細工を施す。具体的には、ｗｅｂブラウザを起動する際、強制的にプロキシサーバの設定を施す。プロキシサーバのアドレスは、仮想接続するポートフォワーディングの宛先のＩＰアドレスである。このようにｗｅｂブラウザを設定すると、ｗｅｂブラウザはＡタグで指定される全てのコンテンツを、ポートフォワーディング及びリバースプロキシを通じて、遠隔地にあるＬＡＮ１０２から取得しようとする。インターネット１０７上のリソースも、ＮＣ１０８というゲートウェイを通じて取得できる。この接続方法の利点は、ＬＡＮ１０２に適用されるセキュリティポリシがそのまま端末にも反映される、という点である。端末は、ＬＡＮ１０２内に存在する時と同じセキュリティポリシが、インターネット１０７上でも適用されることとなる。
【０１２３】
本実施形態は、以下のような応用例が可能である。
（１）ＮＣ１０８の端末テーブル９０６及びユーザテーブル９０７は、ＮＣ１０８とは異なるサーバに置いて、ネットワークを通じて認証部９０５が参照してもよい。
また、認証部９０５、端末テーブル９０６及びユーザテーブル９０７は、ＮＣ１０８とは異なる認証サーバとして設けてもよい。この場合、認証済ＩＤリスト９０８には機器特定ＩＤとユーザＩＤとの対応関係が記され、当該認証サーバから受信することとなる。
【０１２４】
（２）ＮＣ１０８を複数設けて、多段リバースプロキシを構成することもできる。
【０１２５】
（３）ＩＮＩが複数のＮＣ１０８に対して同時にアクセスすることもできる。この場合、ＩＮＩは後から接続するＮＣに対して、ユーザ認証を完了した直後に、既に先に接続済みのＮＣで割り当て済みの端末用ターゲットアドレスを報告し、それぞれのＮＣで端末用ターゲットアドレスが重複しないように調停する必要がある。
【０１２６】
図１３（ｂ）で付与する端末用ターゲットアドレスは、元のポート番号をそのまま流用している。この端末用ターゲットアドレスを１ずつインクリメントする代わりに、端末用ターゲットアドレスを固定にして、ポート番号を変化させることも可能である。特にＨＴＴＰの場合は、ポート番号を変更することが広く行われているので、ＨＴＴＰに限っては異なるサーバに対する接続を、同一の端末用ターゲットアドレスで異なるポート番号を付与する、という処理を行うことで、端末用ターゲットアドレスの消費を低減することができる。
【０１２７】
本実施形態では、ネットワークドライバ８０６と、これに使用するポートフォワード形成装置（ＩＮＩ−ＢＯＸ１０９、ソフトＩＮＩ１１３）、端末管理装置（ＲＴＡ１１１）、リバースプロキシサーバ（ＮＣ１０８）を開示した。
ＩＮＩ−ＢＯＸ１０９或はソフトＩＮＩ１１３とＮＣ１０８がコントロールセッションを通じて機器認証及びユーザ認証を実行した後、端末がＮＣ１０８の先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、ＩＮＩ−ＢＯＸ１０９或はソフトＩＮＩ１１３はポートフォワーディングを、ＮＣ１０８はリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステム１０１を構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォール９０３を越えた端末のサーバに対する接続が実現できる。更に、接続の際にはＲＴＡ１１１が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
【０１２８】
一般的に、サーバを構成する際のＢＳＤソケットプログラミングの作法は、クライアントの接続を待機するポートを開けて、クライアントが接続してきたら、次のクライアントの接続を待つために再度ポートを開ける、という作法である。つまり、サーバは常時特定のポートが開いていることとなる。ポートが開けっ放しである、ということは、悪意ある第三者がそのポートを通じて当該サーバプログラムの脆弱性を探査するきっかけになり得る。
【０１２９】
発明者は、ＮＣ１０８が擁する複数のプロトコルに対応する複数のリバースプロキシプログラムに存在するかもしれない脆弱性を、第三者から突かれる可能性を排除するために、常時開けるポートと実際に端末とデータとを接続するポートを別にした。ＮＣ１０８が形成するデータセッションは、本来のＢＳＤソケットプログラミングにおけるサーバの作法とは異なり、データセッションが確立しても同じデータセッションに該当するポートは開かない。あくまでも端末から接続要求がない限り、データセッションは形成されないし、そのためのポートも開くことはない。第三者がＮＣ１０８をポートスキャンすると、コントロールセッションのためのポートしか開いていないように見える。
【０１３０】
このような、コントロールセッションとデータセッションを分離する思想は、古くから存在するＦＴＰ（File Transfer Protocol）に類似する。ＦＴＰの場合、サービスポートは２１番で固定され、データポートはＰＯＲＴモードで２０番、ＰＡＳＶモードで１０２４番以上の任意のポートであり、今日のルータで必須とされる動的ＮＡＴではＳＹＮパケットに基づくＮＡＴ設定を形成し難いことと、サービスポートで送受信されるパスワードが暗号化されていないことから、今日ではセキュリティの面であまり良くない実装であると批判されている。しかし、それは各プロトコルが各々独立して無秩序に策定される状況において、単一のプロトコルの特徴として指摘される事項であり、各プロトコルを統括して管理する更に上位のプロトコルという技術思想として捉えると、非常に使い勝手の良い基盤技術であることが判る。
【０１３１】
更に、本実施形態に係るネットワークシステムに接続される端末には、各端末を一意に識別するための機器特定ＩＤ６０８が与えられている。この機器特定ＩＤ６０８は、ＩＰアドレスとは別であり、コントロールセッションで認証情報としてのみ使用される。
ここで翻って、本実施形態のネットワークシステムのデータセッションに流れるパケットについて考察し、説明する。
【０１３２】
端末から発されるパケットは、ソフトＩＮＩ１１３の場合、送信元ＩＰアドレスはループバックアドレス（１２７．０．０．１）であり、送信先ＩＰアドレスはループバックアドレスが属するクラスＣのサブネットに含まれるアドレス（１２７．０．０．ｘ）である。ＩＮＩ−ＢＯＸ１０９の場合、送信元ＩＰアドレスはプライベートアドレス（１９２．１６８．０．１）であり、送信先ＩＰアドレスはプライベートアドレスが属するクラスＣのサブネットに含まれるアドレス（１９２．１６８．０．ｘ）である。
これらパケットは、ソフトＩＮＩ１１３又はＩＮＩ−ＢＯＸ１０９で、ポートフォワーディングによって送信元ＩＰアドレス及び送信先ＩＰアドレス（と、必要であればポート番号も）が書き換えられる。送信元ＩＰアドレスはＩＳＰからソフトＩＮＩ１１３又はＩＮＩ−ＢＯＸ１０９に付与されたＩＰアドレスが、送信先ＩＰアドレスとポート番号は、ＮＣ１０８のグローバルＩＰアドレスとデータセッションのためのポート番号に、それぞれ書き換えられる。
【０１３３】
更に、これらパケットは、ＮＣ１０８のリバースプロキシによって送信元ＩＰアドレス及び送信先ＩＰアドレス（と、必要であればポート番号も）が再度書き換えられる。送信元ＩＰアドレスはＮＣ１０８のグローバルＩＰアドレスが、送信先ＩＰアドレスとポート番号は、サーバのプライベートアドレスとポート番号に、それぞれ書き換えられる。
このように、通信路を通過するパケットのＩＰアドレスが拠点を通過する度に次々に書き換えられる状況において、端末の一意性を保証する情報である機器特定ＩＤ６０８は何のために使用されなければならないのかを考えると、機器特定ＩＤ６０８は「端末が当該サーバに接続する資格を有する」ことを示す情報である、ということが判る。そして、この情報は必ずしも端末にサービスを提供するサーバが抱えていなければならないものではなく、所定の認証を実行できる機器（ＮＣ１０８）が存在していればよいのである。
【０１３４】
周知の通り、ＩＰｖ４はアドレスが枯渇しつつある、という喫緊の問題に直面している。では何故アドレスが枯渇しつつあるのか。一見すれば、ＩＰアドレスのビット数が足りないから、と、普通なら考えるだろう。しかし、もっと根源的な問題は、通信路を行き交うパケットの行き先を決めるＩＰアドレスに、端末の一意性を求めようとしたことである。ＩＰアドレスはプロトコルとして定められ、パケットに必ず付されるビット列であるから、固定長でなければならず、容易にそのビット列を拡大させるようなことはできない。これがそもそもの間違いの元だった、と、発明者は考えた。
【０１３５】
端末の一意性を求める情報は、端末の一意性を求める状況、つまり認証行為にのみ使用すればよく、パケットの行き先を定める情報とは明確に区別するべきである。この技術思想に立脚して、発明者は、ＩＰアドレスから端末の一意性を求めることを否定し、ＩＰアドレスはパケットの行き先にのみ使用される情報と割り切って、通信路の仮想化と、認証行為を基に、ネットワークシステムの再構築を試みた。これが、本実施形態である。
【０１３６】
本実施形態のＩＮＩに含まれる機器特定ＩＤ６０８は、プロトコルとして定められ、パケットのヘッダとして組み込まれているＩＰアドレスではなく、認証にのみ使用されるデータである。したがって、ネットワークシステムの規模や必要に応じて、幾らでもビット列を拡大させたり、フォーマットを変更する等の行為をしても、パケットのフォーマットは変わらないので、全く問題は発生しない。本実施形態において、発明者は試作品を作成した際、機器特定ＩＤ６０８に１２バイトを割り当てたが、勿論、もっと長大なビット列にしてもよい。
【０１３７】
更に、本実施形態では既存のＶＰＮに代わる新規な「仮想プライベート接続」という技術で、端末がファイアウォール９０３を越えてサーバに接続する実施形態を開示したが、この技術は、単に企業ユーザが社屋内のＬＡＮ１０２に接続されているサーバに接続するためだけの技術としてのみ適用される技術ではない。本実施形態の技術は、プライベートアドレスが付与される機器同士を接続する技術でもある。したがって、プライベートアドレスが付与されているサーバが、一般的な公衆アクセスを前提とするｗｅｂサーバであっても良いのである。既存のＤＮＳ、つまりＦＱＤＮからＩＰアドレスへ名前解決を実行する仕組みと同等の仕組みは、本実施形態のＮＣ１０８が提供する。ＮＣ１０８は、端末のＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３に対して、ＦＱＤＮからグローバルＩＰアドレスではなく、ＩＮＩ−ＢＯＸ１０９又はソフトＩＮＩ１１３が提供する仮想的なＩＰアドレスへ名前解決を実施させる。そして、ＮＣ１０８はポートフォワーディングによって転送されるパケットを、目的とするサーバへ振り向ける。このようにＮＣ１０８を構成し、本実施形態のネットワークが発展し、普及すると、サーバはグローバルＩＰアドレスを必要としなくなる。勿論、端末もグローバルＩＰは不要になる。グローバルＩＰアドレスは単に拠点同士のパケットの送受信制御にのみ使用されるものとなり、何らかの事業や趣味等の目的でサーバを建てようとする際、もはやグローバルＩＰアドレスを取得する必要はなくなる。その際に生じるセキュリティ面の懸念事項は、ポートフォワーディングするＩＰアドレスを「ローカルイントラネット」ではないＩＰアドレスに設定すればよい。例えば、ポートフォワーディングの標的となるＩＰアドレスに、端末が属するサブネットのネットワークアドレスではないプライベートＩＰアドレスを割り当てて、アプリケーションには当該ＩＰアドレスを「ローカルイントラネット」ではない、グローバルＩＰアドレスと等価であるものと認識させる。
以上のように、本実施形態のネットワークシステムは、ＩＰｖ４プロトコルの可能性を拡大する技術としての一面も備えている。
【０１３８】
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【０１３９】
１０１…ネットワークシステム、１０２…ＬＡＮ、１０３…第一サーバ、１０４…第二サーバ、１０５…第一端末、１０６…第二端末、１０７…インターネット、１０９…ＩＮＩ−ＢＯＸ、１１０…第一ＩＳＰ、１１１…ＲＴＡ、１１２…第二ＩＳＰ、１１３…ソフトＩＮＩ、２０２…シェル、２０３…第三アプリケーション、２０４…ストレージ、２０５…操作部、２０６…表示部、２０７…内蔵ＵＳＢインターフェース、２０８…専用シェル、２０９…第一アプリケーション、２１０…第二アプリケーション、３０１…内蔵ＮＩＣ、４０２…ＵＳＢ−Ａコネクタ、４０３…ＵＳＢ−Ｂコネクタ、４０４…ネットワークコネクタ、５０２…ＣＰＵ、５０３…ＲＡＭ、５０４…フラッシュメモリ、５０５…第一ＵＳＢインターフェース、５０６…第二ＵＳＢインターフェース、５０７…第一ＮＩＣ、５０８…バス、６０１…第二ＮＩＣ、６０２…ＤＨＣＰクライアント、６０３…アドレス重複回避部、６０４…ＤＨＣＰサーバ、６０５…ポートフォワード設定部、６０６…暗号化通信処理部、６０７…認証制御部、６０８…機器特定ＩＤ、６０９…コントロールセッション管理部、６１０…制御設定情報、６１１…パケットフィルタ設定部、７０１…ループバック仮想ＮＩＣ、７０２…ＤＨＣＰクライアント、７０５…ポートフォワード設定部、７０６…パケットフィルタ設定部、８０１…操作ドライバ、８０２…表示制御部、８０３…ファイルシステム、８０４…プロセス制御部、８０５…クリップボードバッファ、８０６…ネットワークドライバ、８０７…ＡＰＩフック設定部、８０８…操作情報取得部、８０９…画面キャプチャ処理部、８１０…ファイルシステム監視部、８１１…プロセス監視部、８１２…クリップボード監視部、８１３…ＡＰＩフック処理部、９０１…第三ＮＩＣ、９０２…第四ＮＩＣ、９０３…ファイアウォール、９０４…暗号化通信処理部、９０５…認証部、９０６…端末テーブル、９０７…ユーザテーブル、９０８…認証済ＩＤリスト、９０９…コントロールセッション管理部、９１０…データセッション管理部、９１１…第一リバースプロキシ、９１２…第二リバースプロキシ、９１３…サーバテーブル、９１４…資源テーブルディレクトリ
【図１】
2011223278.tif 000003
【図２】
2011223278.tif 000004
【図３】
2011223278.tif 000005
【図４】
2011223278.tif 000006
【図５】
2011223278.tif 000007
【図６】
2011223278.tif 000008
【図７】
2011223278.tif 000009
【図８】
2011223278.tif 000010
【図９】
2011223278.tif 000011
【図１０】
2011223278.tif 000012
【図１１】
2011223278.tif 000013
【図１２】
2011223278.tif 000014
【図１３】
2011223278.tif 000015
【手続補正書】
【提出日】平成23年7月28日(2011.7.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
インターネットに接続される端末と、
前記端末の内部に設けられ、前記端末の動作に制限を加える挙動制限部と、
プライベートネットワークと前記インターネットとの境界に配置され、前記端末から送信されるパケットを対応するリバースプロキシを稼働させて転送するリバースプロキシサーバと、
前記プライベートネットワーク上に配置され、前記リバースプロキシサーバで稼働する前記リバースプロキシで前記端末と接続されるサーバと、
前記端末の内部に設けられるか、又は前記端末と前記インターネットとの間に設けられ、各装置を一意に識別可能な機器特定ＩＤを内包し、前記リバースプロキシサーバに接続する際、前記機器特定ＩＤを用いて端末認証を行い、前記端末認証が成功すると前記リバースプロキシサーバと所定の情報を送受信するためのコントロールセッションを形成した後、前記コントロールセッションを通じて前記リバースプロキシサーバから得た前記サーバに関する情報である仮想資源テーブルに基づいて、前記端末の特定の接続要求に対してポートフォワーディングに基づくデータセッションを形成するポートフォワード形成装置と
よりなるネットワークシステム。
【請求項２】
前記挙動制限部は、前記ポートフォワード形成装置が前記端末認証を完遂した後に前記ポートフォワード形成装置を通じて前記リバースプロキシサーバとユーザ認証を遂行する画面を前記端末に形成する、請求項１記載のネットワークシステム。
【請求項３】
前記ポートフォワード形成装置は、前記端末認証を完遂した後に更に前記端末を使用するユーザを認証するユーザ認証を行い、前記ユーザ認証が成功すると前記挙動制限部が前記端末の動作に制限を加えるための情報である制限情報を前記リバースプロキシサーバから受信する、請求項１記載のネットワークシステム。
【請求項４】
前記端末は更に、
ストレージと、
前記ストレージにファイル及びディレクトリを形成するファイルシステムと、
アプリケーションプログラムの起動及び終了を制御するプロセス制御部と
を備え、
前記挙動制限部は、前記ポートフォワード形成装置が受信した前記制限情報を受けて、前記端末のファイルシステムに対して前記ファイル及び／又はディレクトリの複写、移動、削除及び／又は名称変更を監視すると共に、前記端末のプロセス制御部に対して特定のプロセスの起動及び／又は自己プロセス隠蔽行為を監視する、
請求項３記載のネットワークシステム。
【請求項５】
プライベートネットワーク上に配置される第一のサーバと、
前記プライベートネットワーク上に配置される第二のサーバと、
インターネットに接続され、前記第一のサーバ及び前記第二のサーバに接続する端末と、
前記端末の内部に設けられ、前記端末の動作に制限を加える挙動制限部と、
前記プライベートネットワークと前記インターネットとの境界に配置され、前記端末が前記第一のサーバに接続要求を発すると第一のリバースプロキシを稼働すると共に、前記端末が前記第二のサーバに接続要求を発すると第二のリバースプロキシを稼働するリバースプロキシサーバと、
前記端末の内部に設けられるか、又は前記端末と前記インターネットとの間に設けられ、各装置を一意に識別可能な機器特定ＩＤを内包し、前記リバースプロキシサーバに接続する際、前記機器特定ＩＤを用いて端末認証を行い、前記端末認証が成功すると前記リバースプロキシサーバと所定の情報を送受信するためのコントロールセッションを形成した後、前記コントロールセッションを通じて前記リバースプロキシサーバから得た前記第一のサーバ及び前記第二のサーバに関する情報である仮想資源テーブルに基づき、前記端末が前記第一のサーバに接続要求を発すると前記第一のリバースプロキシに対応するポートフォワーディングに基づく第一のデータセッションを形成し、前記端末が前記第二のサーバに接続要求を発すると前記第二のリバースプロキシに対応するポートフォワーディングに基づく第二のデータセッションを形成する、ポートフォワード形成装置と
よりなるネットワークシステム。
【請求項６】
前記挙動制限部は、前記ポートフォワード形成装置が前記端末認証を完遂した後に前記ポートフォワード形成装置を通じて前記リバースプロキシサーバとユーザ認証を遂行する画面を前記端末に形成する、請求項５記載のネットワークシステム。
【請求項７】
前記ポートフォワード形成装置は、前記端末認証を完遂した後に更に前記端末を使用するユーザを認証するユーザ認証を行い、前記ユーザ認証が成功すると前記挙動制限部が前記端末の動作に制限を加えるための情報である制限情報を前記リバースプロキシサーバから受信する、請求項５記載のネットワークシステム。
【請求項８】
前記端末は更に、
ストレージと、
前記ストレージにファイル及びディレクトリを形成するファイルシステムと、
アプリケーションプログラムの起動及び終了を制御するプロセス制御部と
を備え、
前記挙動制限部は、前記ポートフォワード形成装置が受信した前記制限情報を受けて、前記端末のファイルシステムに対して前記ファイル及び／又はディレクトリの複写、移動、削除及び／又は名称変更を監視すると共に、前記端末のプロセス制御部に対して特定のプロセスの起動及び／又は自己プロセス隠蔽行為を監視する、
請求項７記載のネットワークシステム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、ネットワークシステムに関する。
より詳細には、従来の仮想プライベートネットワーク（Virtual Private Network：以下「ＶＰＮ」）の問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規な仮想プライベートネットワークシステムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
本発明はかかる課題を解決し、上述した従来のＶＰＮの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムを提供することを目的とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
上記課題を解決するために、本発明のネットワークシステムは、インターネットに接続される端末と、端末の内部に設けられ、端末の動作に制限を加える挙動制限部と、プライベートネットワークとインターネットとの境界に配置され、端末から送信されるパケットを対応するリバースプロキシを稼働させて転送するリバースプロキシサーバと、プライベートネットワーク上に配置され、リバースプロキシサーバで稼働するリバースプロキシで端末と接続されるサーバと、端末の内部に設けられるか、又は端末とインターネットとの間に設けられ、各装置を一意に識別可能な機器特定ＩＤを内包し、リバースプロキシサーバに接続する際、機器特定ＩＤを用いて端末認証を行い、端末認証が成功するとリバースプロキシサーバと所定の情報を送受信するためのコントロールセッションを形成した後、コントロールセッションを通じてリバースプロキシサーバから得たサーバに関する情報である仮想資源テーブルに基づいて、端末の特定の接続要求に対してポートフォワーディングに基づくデータセッションを形成するポートフォワード形成装置とよりなる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
また、上記課題を解決するために、本発明のネットワークシステムは、プライベートネットワーク上に配置される第一のサーバと、プライベートネットワーク上に配置される第二のサーバと、インターネットに接続され、第一のサーバ及び第二のサーバに接続する端末と、端末の内部に設けられ、端末の動作に制限を加える挙動制限部と、プライベートネットワークとインターネットとの境界に配置され、端末が第一のサーバに接続要求を発すると第一のリバースプロキシを稼働すると共に、端末が第二のサーバに接続要求を発すると第二のリバースプロキシを稼働するリバースプロキシサーバと、端末の内部に設けられるか、又は端末とインターネットとの間に設けられ、各装置を一意に識別可能な機器特定ＩＤを内包し、リバースプロキシサーバに接続する際、機器特定ＩＤを用いて端末認証を行い、端末認証が成功するとリバースプロキシサーバと所定の情報を送受信するためのコントロールセッションを形成した後、コントロールセッションを通じてリバースプロキシサーバから得た第一のサーバ及び第二のサーバに関する情報である仮想資源テーブルに基づき、端末が第一のサーバに接続要求を発すると第一のリバースプロキシに対応するポートフォワーディングに基づく第一のデータセッションを形成し、端末が第二のサーバに接続要求を発すると第二のリバースプロキシに対応するポートフォワーディングに基づく第二のデータセッションを形成する、ポートフォワード形成装置とよりなる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
本発明により、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムを提供できる。