静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置
【課題】従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムに使用する静的NAT形成装置、リバースプロキシ装置及び仮想接続制御装置を提供する。
【解決手段】静的NAT形成装置がコントロールセッションを通じてコンダクタに対して認証を実行した後、端末がリバースプロキシサーバの先に存在するネットワーク内のサーバに対する接続を要求したら、静的NAT形成装置及びステッピングノードは静的NATを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。
【解決手段】静的NAT形成装置がコントロールセッションを通じてコンダクタに対して認証を実行した後、端末がリバースプロキシサーバの先に存在するネットワーク内のサーバに対する接続を要求したら、静的NAT形成装置及びステッピングノードは静的NATを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置に関する。
より詳細には、従来の仮想プライベートネットワーク(Virtual Private Network:以下「VPN」)の問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規な仮想プライベートネットワークシステムに使用する静的NAT形成装置、リバースプロキシサーバ、そして仮想接続制御装置に関する。
【背景技術】
【0002】
今日、インターネットから端を発するIPネットワークは、我々の社会生活及び企業活動に必要不可欠な存在である。企業には社屋内にLANが張られており、このLANには企業の機密情報等も含まれるファイルサーバ等のサーバも接続されている。従業員はLANに接続されたパソコン等の端末を用いて、サーバが提供する情報資源を利用して業務を遂行する。一般的に、企業のLANは機密情報を含むサーバ等を守るため、LANのインターネットとの接続点にはファイアウォールが設けられている。こうして、LANは悪意ある第三者がインターネットから容易に企業のLAN内に侵入できないように構成されている。
【0003】
従業員が外出先でもノートパソコン等の端末を用いて企業内LANに接続して業務を遂行したい場合、このファイアウォールが邪魔になる。インターネットからファイアウォールを越えて企業のLANに安全に接続するための技術として、VPNが用いられている。
VPNはその接続形態によって様々な種類があるが、大別すると二通りの技術に分類できる。
一つは、LANの外に存在する端末にLANのサブネットに属するIPアドレスを付与する手法である。
もう一つは、ポートフォワーディング又は静的NAT(Network Address Translation)と呼ばれる手法である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−272771号公報
【非特許文献】
【0005】
【非特許文献1】「PacketiX VPN 入門 - PacketiXVPN の特徴」ソフトイーサ株式会社[2010年3月25日検索]、インターネット<URL:http://www.softether.co.jp/jp/vpn2/introduction/about_vpn.aspx>
【非特許文献2】「特集 : ブロードバンド・ルータ徹底攻略ガイド」アイティメディア株式会社[2010年3月25日検索]、インターネット<URL:http://www.atmarkit.co.jp/fpc/special/bbrouter_desc/portforward_dmz.html>
【非特許文献3】「インターネットごしにsshでサーバ管理をしてみよう −@IT」アイティメディア株式会社[2010年3月25日検索]、インターネット<URL:http://www.atmarkit.co.jp/fnetwork/rensai/tcp27/01.html>
【発明の概要】
【発明が解決しようとする課題】
【0006】
先ず、前者の、LANの外に存在する端末にLANのサブネットに属するIPアドレスを付与する手法について説明する。これは非特許文献1に開示される技術である。
殆どの企業内LANはIPv4のプライベートアドレスを用いている。そこで、LANの外、つまりインターネットに接続されている端末にも企業内LANのサブネットに属するプライベートアドレスを付与する。しかし、端末に備えられているネットワークインターフェースカード(Network Interface Card:以下「NIC」)には、既にインターネットサービスプロバイダ(Internet Service Provider:以下「ISP」)によってグローバルIPアドレスが付与されている。そこで、仮想的なNICをソフトウェアで実現し、これに企業内LANのサブネットに属するIPアドレスを付与する。そして、この仮想NICに対する通信は暗号化してファイアウォールを通過させる。
【0007】
この手法の問題点は、当該端末はLANのサブネットに属していながらファイアウォールで守られていない、インターネットに直に接続している、という点である。つまり、セキュリティ面で非常に問題がある。当該端末は、コンピュータウィルスやワーム、またDoSと呼ばれるサービス不能攻撃等の脅威に晒される。また、情報漏洩の可能性も高い。
更に、ISPが付与するIPアドレスがプライベートアドレスである場合、ISPが付与するIPアドレスと、VPNが付与するIPアドレスが衝突する可能性がある。現在でもケーブルテレビ系列のISPやネットカフェ等の公衆インターネット接続拠点では、端末にプライベートアドレスを付与している。またこれに留まらず、今後IPv4アドレスの枯渇に伴って普及が予測される「キャリアグレードNAT」(http://itpro.nikkeibp.co.jp/article/COLUMN/20080625/309452/)が広く実施されると、IPアドレスの衝突の可能性は飛躍的に高まることが予想できる。
【0008】
次に、後者のポートフォワーディング又は静的NATと呼ばれる手法について説明する。これは非特許文献2及び非特許文献3に開示される技術である。
例えば、ある家庭に192.168.0.0/24というプライベートネットワークが構築されているとする。この家庭内LAN内にwebサーバを構築し、ブロードバンドルータを介してインターネットに公開したい場合、ブロードバンドルータに「ポートフォワード設定」或は「静的NAT設定」と呼ばれる、特定のポート番号のパケットをLAN内の特定のマシン(サーバ)に振り向ける設定を施す。
【0009】
今、ブロードバンドルータには家庭内LANのIPアドレスとしてデフォルトゲートウェイの「192.168.10.1」が付与されていると共に、ISPによって付与された動的グローバルIPアドレスが「203.178.83.194」であったとする。ブロードバンドルータには、この「203.178.83.194」のポート80番に来るパケットを、家庭内LANの別のIPアドレス「192.168.10.2」が付与されているマシンのポート80番へ転送する設定を施す。ブロードバンドルータは、パケットの送信先IPアドレスを、「203.178.83.194」から「192.168.10.2」に書き換えて、当該サーバに転送する。こうして、LAN内のサーバは外部(インターネット)に対してwebサーバとしてサービスを提供することが可能になる。これが、非特許文献2に開示されている技術である。なお、パケットに対して書き換える対象は、IPアドレスだけでなく、ポート番号も書き換えることができる。
このような静的NATと呼ばれる技術は、Linux(登録商標)等のPOSIX系OSのカーネルの機能(ドライバ)として実装されていることが多い。
【0010】
ブロードバンドルータは単にインターネットから来るパケットをLAN内に振り向けることしかしないので、セキュリティ面に問題がある。そこで、通信経路の暗号化と認証を伴ってセキュリティの向上を図った手法が、SSH(Secure SHell)の一種であるOpenSSH(http://www.openssh.com/ja/)等のアプリケーションである。これは非特許文献3に開示されている。
しかし、OpenSSHは、接続するユーザ毎に公開鍵を生成して配布する手間が生じると共に、クライアントである端末にSSHクライアントと公開鍵をインストールする必要がある。また、OpenSSHのような技術は潜在的なセキュリティのリスクを完全に払拭できてはいない。つまり、OpenSSH自身のセキュリティ面の脆弱性の大小に依存する。そして、OpenSSHのサーバであるsshdは、既定値ではポート22番を開放するので、ポート22番に対するDoS攻撃等のリスクも存在する。更に、OpenSSHはクライアントである端末自体のセキュリティについては何もしないので、別途端末のセキュリティ面を考慮して対策を施す必要がある。
【0011】
以上に述べたVPNの手法は、いずれも「インターネットからLAN内のサーバに繋げる」という目的にのみ特化して構築されている。また、その接続の技術も設定項目が多く面倒であったり、接続不能になる可能性が払拭できない等、完全ではない。そして、セキュリティ面の対策は別途考慮して対策を施さなければならない。
【0012】
以上のような技術背景に鑑み、発明者は上述した従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステム、静的NAT形成装置及びリバースプロキシサーバを発明し、出願した(特願2010−89873、以下「特許出願1」)。
【0013】
特許出願1では、IP接続可能性(IP Reachability)を妨げている単一のファイアウォールを越えて、端末とサーバを接続するために、端末とサーバとの間に静的NAT形成装置とリバースプロキシサーバが一つずつ介在し、リバースプロキシサーバの制御に従って、ポートフォワード(静的NAT)とリバースプロキシという、二段階のIPアドレス変換処理を経て、端末とサーバが仮想的な接続を実現する。
【0014】
しかしながら、市場に存在するネットワークの構成はこのような単純なものだけではない。接続対象であるサーバに到達するまで、IP接続可能性を阻害する要因が複数存在し、幾つものゲートウェイを通過しなければ接続ができない、というようなネットワーク構成も存在する。
例えば、ある企業Aと企業Bが合併したとする。合併によって、企業Aの社内LANと企業Bの社内LANとの間に、相互接続を実現するためのゲートウェイサーバを設けることが考えられる。しかし、企業Aと企業Bの相互接続を実現するには、相互の社内LANのセキュリティポリシに影響が生じるため、安易な接続は推奨されない。更に、企業Aと企業Bは、予め合併することを前提に社内LANを構築していた訳ではないのだから、夫々のLANで使用するプライベートIPアドレスが重複する可能性も十分考えられる。経路上のどこかでサブネットやIPアドレスが重複している場合、通常、IPリーチャブル(IP reachable:IPパケットが到達可能であること)な環境を構築することは不可能である。
【0015】
本発明はかかる課題を解決し、上述した従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、IPリーチャブルでない環境に存在するサーバにも接続ができる、新規なネットワークシステムに使用する静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置を提供することを目的とする。
【課題を解決するための手段】
【0016】
上記課題を解決するために、本発明の静的NAT形成装置は、直近の第一のネットワークに接続される第一のNICと、第一のNICに対してIPリーチャブルでない第二のネットワーク上に配置されるサーバに対して、端末が静的NATを用いた接続を行うために用いられる第二のNICと、第二のNICと第一のNICとの間に介在し、端末が第二のネットワーク上に存在するリバースプロキシサーバを通じてサーバと通信するパケットに適用する静的NATを設定するNAT設定部とよりなる。
【0017】
静的NAT形成装置がコントロールセッションを通じて認証を実行した後、端末がリバースプロキシサーバの先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、静的NAT形成装置は静的NATを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。
【発明の効果】
【0018】
本発明により、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムに使用する静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置を提供できる。
【図面の簡単な説明】
【0019】
【図1】本実施形態のネットワークシステムの概略図である。
【図2】第一端末に注目したネットワークシステムの概略図である。
【図3】第二端末に注目したネットワークシステムの概略図である。
【図4】ローカルマスタBOXの外観斜視図である。
【図5】ローカルマスタBOXのハードウェア構成を示すブロック図である。
【図6】ローカルマスタBOXの機能ブロック図である。
【図7】ソフトローカルマスタの機能ブロック図である。
【図8】RTAの機能ブロック図である。
【図9】ステッピングノードの機能ブロック図である。
【図10】ステッピングノードの機能ブロック図である。
【図11】コンダクタの機能ブロック図である。
【図12】コンダクタに含まれるテーブルの構成を示す図である。
【図13】本実施形態のネットワークシステムの、全体的な動作の流れを示すタイムチャートである。
【図14】機器特定ID認証シーケンスのタイムチャートである。
【図15】ユーザ認証シーケンスとメニュー取得シーケンスのタイムチャートである。
【図16】メニュー取得シーケンスのタイムチャートである。
【図17】VPC確立シーケンスのタイムチャートである。
【図18】VPC確立シーケンスとVPCデータ転送状態のタイムチャートである。
【図19】VPC確立シーケンスに流れるパケット及びVPC確立要求コマンドの概要を示す概略図である。
【図20】VPCトンネルを通過する通信のプロトコルがコネクション型の通信である場合における、VPC切断シーケンスを示すタイムチャートである。
【図21】ユーザログアウトシーケンス及びローカルマスタシャットダウンを示すタイムチャートである。
【発明を実施するための形態】
【0020】
[実施形態の概要]
本実施形態の概略を説明する。
本発明は、特許出願1に開示した技術内容を発展させた技術内容である。これより説明するネットワークシステムは、大企業の広域プライベートネットワークシステムにおいて、リモートオフィスサービスを実現する仕組みを提供する。従業員が、遠隔地の事業所或は出向先等から企業内の端末を操作して、本来所属している部門に存在する自らの端末のデスクトップ環境を、出向先の端末で実現する。リモートデスクトップ環境を提供するサーバは、出向先から直接的にIPリーチャブルではないサブネットのサーバに存在する。本実施形態のネットワークシステムは、直接的にIPリーチャブルでないサーバの資源に対し、後述するローカルマスタとステッピングノードを用いて、仮想プライベート接続(Virtual Private Connect:以下「VPC」と略)を実現する。
なお、本実施形態においてリモートデスクトップとは、リモートデスクトッププロトコル(RDP:Remote Desktop Protocol)という、Windows(登録商標)にて実装されている実装形態を指すが、勿論、これに限定されない。周知且つ広く普及しているVNC(Virtual Network Computing)や、X Window Systemであってもよい。
【0021】
VPCは、直接的にIPリーチャブルでない端末とサーバとの間にIPリーチャブルな経路(トンネル)を形成する。これ以降、VPCによって形成される経路をVPCトンネルと呼ぶ。VPCトンネルは、端末とローカルマスタ、ローカルマスタとステッピングノード、ステッピングノード同士及びステッピングノードとサーバの、IPリーチャブルな機器同士を「データセッション」にて接続し、ローカルマスタ及び各ステッピングノードでは静的NATを設定し、サーバに直近のステッピングノードではリバースプロキシを稼働させる。
このVPCを実現するために、以下の装置及びプログラムを新たに設ける。これより説明する四種類の装置及びプログラムは、全て従来のネットワーク技術には同等の機能を提供する装置等が存在しないので、発明者及び出願人が独自に名称を付している。各々の装置及びプログラムは、データセッションを形成するために、相互に制御用の通信路である「コントロールセッション」を形成する。
【0022】
・ステッピングノード(Stepping Node)
リバースプロキシサーバとも呼べるステッピングノードは、ネットワークの各所に設けられ、二つの動作を行う。
一つは、後述するローカルマスタ或は他のステッピングノードとの間で、静的NATにてデータセッションを形成し、仮想的にIPリーチャブルな状態を形成する動作である。
もう一つは、後述するローカルマスタ或は他のステッピングノードと、IPリーチャブルなサーバとの間で、リバースプロキシを起動してデータセッションを形成し、端末とサーバとの間を仮想的にIPリーチャブルな状態を形成する動作である。
一見すると、ステッピングノードはリバースプロキシサーバ或は静的NATが稼働するゲートウェイであるように見えるが、端末から接続要求があった時だけリバースプロキシのプロセスを起動し、或は静的NATを設定する。特に、リバースプロキシのプロセスを起動する際には、後述するコンダクタと認証を行う。
したがって、ステッピングノードは通常のサーバとは異なり、不必要にポートを開けないので、セキュリティ面で有利である。
【0023】
・ローカルマスタ(Local Master)
静的NAT形成装置とも呼べるローカルマスタは、自身がステッピングノードに接続できる資格を有する装置であることを示す機器特定IDを内包しており、後述するコンダクタに対して機器認証(個体認証)を実行する。
機器認証が完遂すると、ローカルマスタは端末とコンダクタとの間に、制御用通信路であるコントロールセッションを形成する。端末にインストールされている、後述するプレイヤは、このコントロールセッションを用いてコンダクタと制御情報の通信を実行する。次に、プレイヤが、ユーザが接続可能なサーバに関する情報と、端末に対して様々な制御を行うための情報である制限設定情報をコンダクタに要求すると、コンダクタから受信するこれら情報を同時に取得し、端末が遠隔地のサーバにVPC接続するためのデータセッションを形成する準備を行う。
また、必要に応じ、制限設定情報に基づいて、セキュリティ確保のためにパケットフィルタも設定する。
データセッションは静的NAT(ポートフォワーディング)にて形成する。
【0024】
パケットフィルタは、端末の動作をサーバとの接続にのみ制限し、不用意にインターネット上の任意のサーバに接続する等の事故発生要因を排除するために設定する。コンダクタから送信される制限設定情報には、送受信を禁止される(又は送受信を許可される)IPアドレスの範囲が列挙され、この制限設定情報に従ってパケットフィルタは設定される。
静的NATによって、リバースプロキシであるステッピングノードを介して送受信するサーバとのパケットは、端末のローカル側に位置するNICに対するパケットとして、相手側を示すアドレスが、また必要に応じてポート番号も書き換えられる。端末はあたかもローカルのNICと通信しているような状態で、LAN内のサーバと通信することができる。
【0025】
ローカルマスタは、端末に接続されるハードウェアとして構成されるもの(以下「ローカルマスタBOX」)と、端末内にインストールされるソフトウェアとして構成されるもの(以下「ソフトローカルマスタ」)と、二通りの形態がある。いずれも、提供する機能は同じである。違いは、ローカルマスタBOXは内蔵するローカル側NICに静的NATをする一方、ソフトローカルマスタはネットワークOSが標準で内蔵するループバック仮想NICに静的NATを設定する、という点である。
ローカルマスタは、発明者が過去に発明して出願した特許文献1に開示される技術を基に、更に機能の整理と改良を施した装置及びプログラムである。
これ以降、単に「ローカルマスタ」と記す場合は、ローカルマスタBOXとソフトローカルマスタの両者を指す単語であると定義する。また、「ローカルマスタの暗号化通信処理部606」と記述する場合は、ローカルマスタBOXとソフトローカルマスタの両者に共通する機能ブロックを指す表記である。
【0026】
・プレイヤ(Player)
端末がインターネットに接続された状態で、更にローカルマスタとステッピングノードを通じてLAN内のサーバに接続すると、様々なセキュリティ面の懸念が生じる。そこで、端末の動作を強力に制限するために、端末にはこのプレイヤをインストールしておく。
挙動制限部とも呼べるプレイヤはローカルマスタと通信を行い、個人認証のためのユーザインターフェースを提供すると共に、ローカルマスタとステッピングノードとの通信が成立すると、OSの幾つかのアプリケーションプログラムインターフェース(Application Program Interface:以下「API」)をフックする。
ステッピングノードから送信され、ローカルマスタを通じて与えられる制限設定情報には、実行を禁止される(又は実行を許可される)アプリケーションプログラムや、閲覧、編集、移動又は削除を禁止されるファイル等が列挙されている。プレイヤはこの制限設定情報に従ってフックしたAPIを監視し、端末の挙動を強力に制限する。
【0027】
また、プレイヤは個人認証の機能を提供する。周知のログイン画面を端末に表示し、キーボードやICカードリーダ、或は指紋認証機器等の認証手段を通じて、ユーザの個人認証情報を取得し、コントロールセッションを通じてコンダクタに送信する。個人認証が成功したら、プレイヤはユーザが接続可能なサーバに関する情報と、端末に対して様々な制御を行うための情報である制限設定情報をコンダクタに要求する。
【0028】
更に、プレイヤはシェルとしての機能も提供する。個人認証が正常に終了すると、プレイヤはユーザが接続可能なサーバに関する情報と、端末に対して様々な制御を行うための情報である制限設定情報をコンダクタに要求する。ユーザが接続可能なサーバに関する情報を受信すると、プレイヤは端末の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ(コマンドライン)を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバのサーバ名がアプリケーションの引数として指定されている。プレイヤの子プロセスとしてアプリケーションが起動されるので、プレイヤはアプリケーションの挙動を容易に把握できる。
【0029】
プレイヤはウィルスチェッカやマルウェア等のAPIフックの技術を応用している。プレイヤはステッピングノードの制御下にあるので、フックしたAPIで異常な挙動を検出したら、直ちに実行を停止してステッピングノードに報告することもできる。この技術を高度に応用すると、未知のウィルスに対しても防御が可能になるので、昨今問題になっている「ゼロデイ攻撃」(プログラムのセキュリティホールが発表され、当該プログラムのセキュリティホールを修正するパッチが提供されるよりも以前の時点で、悪意ある者によって実際に当該セキュリティホールを突いた攻撃が行われたり、当該セキュリティホールを悪用する不正プログラムが出現すること)にも対応が可能になる。また、端末に誤ってウィルスが混入してしまっても、一旦プレイヤが起動してステッピングノードと接続されると、APIフックの結果から不審な挙動が直ちに判明するので、ステッピングノードは当該端末の接続を強制切断する等の緊急措置を瞬時に実行することができる。
【0030】
・コンダクタ(Conductor)
端末はサーバにVPCで接続するに際し、複数のステッピングノードを経由する。端末がサーバとVPCによる接続を確立する(端末がサーバに辿り着く)ためには、適切なステッピングノードを経由しなければならない。コンダクタは、このVPCトンネルを形成するための経路情報をローカルマスタに提供する。コンダクタは、本実施形態のネットワークシステムにおいて、VPCトンネルを形成するためにステッピングノードに対して制御情報を提供する「指揮者」の役割を果たす。
また、コンダクタは前述の通り、ローカルマスタに対する機器認証、端末を操作するユーザに対する個人認証を実行する。そして、機器認証及び個人認証を完遂した端末に対し、当該ユーザが接続を許可されているサーバの情報を提供する。
【0031】
以上、四つの装置及びプログラムで、ネットワーク上に存在する端末は、ローカルマスタ及び途中経路上のステッピングノードによる静的NATと、サーバの直近に存在するステッピングノードによるリバースプロキシを通じて、ユーザが接続したいサーバに接続することができる。その際、端末の挙動はプレイヤによってサーバに対する通信のみ許可され、それ以外の挙動は大幅に制限される。
この接続形態では、静的NATとリバースプロキシのそれぞれにおいて、パケットに付されるIPアドレスは多数書き換えられる。その結果、端末は非特許文献1に開示されるような、LAN内のIPアドレスを付与されるような状態にはならず、非特許文献3に開示される静的NATの接続形態に近い状態になる。
【0032】
[全体構成]
図1は、本実施形態のネットワークシステムの概略図である。
ある企業のLAN102は、多くの従業員が勤務している関係で、セキュリティの都合上、容易にサブネットを越えたアクセスができない構成になっている。このようなLAN102で、リモートデスクトップ環境を導入し、従業員が企業内のどの場所に移動しても、移動先の端末で同一のデスクトップ環境を実現しようとしている。
既存のLAN102のセキュリティポリシを変更せずに、最小限の追加投資でリモートデスクトップ環境を実現させるため、発明者はLAN102内の各所にステッピングノードを配置し、端末が直近のIPリーチャブルなステッピングノードからIPリーチャブルなステッピングノードを辿って、目的のサーバに接続する環境を構築した。
【0033】
図1では、第一端末105及び第二端末106と、二つの端末を示している。これは、どちらも等しくサーバ103に接続することができることを示すために記載している。
第一端末105及び第二端末106は周知のノートパソコン或は小型パソコンであり、OSとして周知のLinux(登録商標)がインストールされている。なお、OSは一般的なマルチタスクのネットワークOSであり、Linux(登録商標)に限定されず、例えばWindows(登録商標)等であってもよい。端末は周知のシンクライアント(Thin Client:ハードウェア資源を最小限に抑え、画面表示と操作入力等の最低限の機能だけを提供し、多くのアプリケーションプログラムはサーバで実行する、軽量端末。)を構成する。
【0034】
第一端末105及び第二端末106には個人認証のためのICカードリーダ104が接続されている。
第一端末105及び第二端末106はLAN102に接続する際、ローカルマスタを伴う。
第一端末105には、ハードウェアで構成されたローカルマスタであるローカルマスタBOX109が接続されている。ローカルマスタBOX109は、LAN102と第一端末105との間に介在する。
第二端末106には、ソフトウェアで構成されたローカルマスタであるソフトローカルマスタ113がインストールされている。第二端末106はソフトローカルマスタ113がインストールされ、稼働することで、ソフトローカルマスタ113を経由してLAN102に接続する。
【0035】
ローカルマスタBOX109又はソフトローカルマスタ113は、第一端末105及び第二端末106で稼働するプログラムが形成するネットワーク接続を、静的NATで直近の第一のステッピングノードである第一SN107まで接続する。
つまり、第一端末105のアプリケーションは直接的に第一SN107のIPアドレスに接続せず、ローカルマスタBOX109が提供する仮想IPアドレスに対して接続を行う。すると、ローカルマスタBOX109は第一端末105のアプリケーションが発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスを第一端末105のIPアドレスからローカルマスタBOX109のIPアドレスへ、宛先IPアドレスをローカルマスタBOX109のIPアドレスから第一SN107のIPアドレスへ、書き換える。
【0036】
ローカルマスタBOX109及びソフトローカルマスタ113には、第一SN107が接続されている。第一SN107はローカルマスタBOX109及びソフトローカルマスタ113が形成するネットワーク接続を、静的NATでIPリーチャブルな直近の第二のステッピングノードである第二SNまで接続する。
第一SN107はローカルマスタBOX109又はソフトローカルマスタ113が発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスをローカルマスタBOX109又はソフトローカルマスタ113のIPアドレスから第一SN107のIPアドレスへ、宛先IPアドレスを第一SN107のIPアドレスから第二SNのIPアドレスへ、書き換える。
【0037】
第一SN107には、第二SN108が接続されている。第二SN108は第一SN107が形成するネットワーク接続を、静的NATで直近の第三のステッピングノードである第三SN112まで接続する。
第二SN108は第一SN107が発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスを第一SN107のIPアドレスから第二SN108のIPアドレスへ、宛先IPアドレスを第二SN108のIPアドレスから第三SN112のIPアドレスへ、書き換える。
【0038】
第二SN108には、第三SN112が接続されている。第三SN112は第二SN108が形成するネットワーク接続を、静的NATで直近の第四のステッピングノードである第四SN114まで接続する。
第三SN112は第二SN108が発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスを第二SN108のIPアドレスから第三SN112のIPアドレスへ、宛先IPアドレスを第三SN112のIPアドレスから第四SN114のIPアドレスへ、書き換える。
【0039】
第三SN112には、第四SN114が接続されている。第四SN114は第三SN112が形成するネットワーク接続を、リバースプロキシで直近のサーバ103まで接続する。
第四SN114は第三SN112が発するパケットのIPヘッダをリバースプロキシにて書き換える。具体的には、送信元IPアドレスを第三SN112のIPアドレスから第四SN114のIPアドレスへ、宛先IPアドレスを第四SN114のIPアドレスからサーバ103のIPアドレスへ、書き換える。
【0040】
以上、端末から、ローカルマスタ、第一SN107、第二SN108、第三SN112そして第四SN114を通じてサーバ103まで、静的NATとリバースプロキシを伴って接続する接続形態を、VPCと呼ぶ。そして、図1の点線で示す、端末とサーバ103との間にVPCによって形成される、静的NATとリバースプロキシで構成された接続経路を、VPCトンネルと呼ぶ。
VPCトンネルの特徴は、端末(第一端末105及び第二端末106)はサーバ103の本当のIPアドレスを知らず、またサーバ103も接続してきた端末の本当のIPアドレスを知らない、という点である。端末はローカルマスタが提供する仮想IPアドレスに対して通信を行い、サーバ103は第四SN114と通信を行う。端末にとってサーバ103はローカルマスタが提供する仮想IPアドレスが割り振られているように見え、サーバ103にとって端末は第四SN114であるように見える。
【0041】
第二SN108と第三SN112には、更にコンダクタ115が接続されている。仮想接続制御装置ともいえるコンダクタ115は端末及びローカルマスタの認証を実行すると共に、ローカルマスタの要求に応じて、VPCトンネルを形成するための経路情報をローカルマスタに提供する。
図1には図示されていないが、ステッピングノードは図1に示される第一SN107、第二SN108、第三SN112及び第四SN114以外にも存在し得る。そのような状況の中で、端末がサーバ103にVPCで接続する為に辿るステッピングノードの情報が、経路情報である。
経路情報の詳細については後述する。
【0042】
端末はローカルマスタBOX109又はソフトローカルマスタ113を介在することで、LAN102に接続することが許される。
ローカルマスタは第一SN107とはIPリーチャブルであるが、第二SN108、第三SN112及び第四SN114、そしてサーバ103とはIPリーチャブルではない。また、コンダクタ115ともIPリーチャブルではない。
図1において、第一SN107、ローカルマスタBOX109及び第二端末106が接続されている、相互にIPリーチャブルなサブネットは、第一のネットワークともいえる。
【0043】
第一SN107はローカルマスタ及び第二SN108とはIPリーチャブルであるが、端末、第三SN112及び第四SN114、そしてサーバ103とはIPリーチャブルではない。また、コンダクタ115ともIPリーチャブルではない。
第二SN108は第一SN107、第三SN112及びコンダクタ115とはIPリーチャブルであるが、端末、第一SN107及び第四SN114、そしてサーバ103とはIPリーチャブルではない。
第三SN112は第二SN108、第四SN114及びコンダクタ115とはIPリーチャブルであるが、端末、第一SN107、そしてサーバ103とはIPリーチャブルではない。
【0044】
第四SN114は第三SN112及びサーバ103とはIPリーチャブルであるが、端末、第一SN107、第二SN108とはIPリーチャブルではない。また、コンダクタ115ともIPリーチャブルではない。
図1において、第四SN114及びサーバ103が接続されている、相互にIPリーチャブルなサブネットは、第一のネットワークからはIPリーチャブルでない、第二のネットワークともいえる。
【0045】
このように、本実施形態のネットワークシステム101は、端末とサーバ103との間のIPリーチャブルではない環境で、IPリーチャブルな箇所にステッピングノードを配置し、ステッピングノードが静的NAT或はリバースプロキシでIPリーチャブルな接続相手同士を接続することで、IPリーチャブルではない機器同士を仮想的にIPリーチャブルにする。
【0046】
図2は第一端末105に注目したネットワークシステム101の概略図である。紙面の都合上、図2及び後述する図3では第三SN112の表記は省略している。
第一端末105にはOS201がインストールされており、OS201の一部であるシェル202を通じて第三アプリケーション203等のアプリケーションプログラムが実行される。第一端末105にはこの他にプレイヤ111がインストールされており、所定の操作によって実行される。
OS201は第一端末105のハードウェアである、ハードディスク等のストレージ204、キーボード及びマウス等の操作部205、液晶ディスプレイ等の表示部206、そして内蔵USBインターフェース207とのデータの入出力を掌握し、アプリケーションがこれらのハードウェアを容易に利用できるためのAPIを提供する。
【0047】
プレイヤ111は個人認証を完遂すると、OS201の幾つかのAPIをフックして、第一端末105全体の挙動を大幅に制限する。また、異常を検出したらその際の発生状況等をローカルマスタBOX109、第一SN107及び第二SN108を通じてコンダクタ115に報告する。
【0048】
更に、プレイヤ111はアプリケーション起動制御部ともいえるシェルとしての機能も提供する。ユーザがサーバ103に接続するために、プレイヤ111が提供するユーザインターフェースが、専用シェル208である。個人認証が正常に終了すると、プレイヤ111の専用シェル208は第一端末105の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ(コマンドライン)を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバ103のサーバ名或はローカルマスタBOXが提供する仮想IPアドレス等が、アプリケーションの引数として指定されている。このようにして、プレイヤ111の子プロセスとして起動されたアプリケーションプログラムが、図2の第一アプリケーション209及び第二アプリケーション210である。プレイヤ111の子プロセスとしてアプリケーションが起動されるので、プレイヤ111はアプリケーションの挙動を容易に把握できる。
【0049】
図2では、専用シェル208から起動された第一アプリケーション209及び第二アプリケーション210が表示されている。一方、第一端末105が個人認証を完了するまでに既に実行されているOS201のシェル202と第三アプリケーション203が、別途起動された状態である。これらはプレイヤ111の専用シェル208の子プロセスとして起動されたアプリケーションではないので、プレイヤ111のAPIフック機能でその挙動が大幅に制限される。また、実行を禁じられているアプリケーション、「ファイルを開く」動作が禁じられているファイルに対するアプリケーションの起動はプレイヤ111によって阻害され、実行できなくなる。
【0050】
第一端末105の内蔵USBインターフェース207には、ローカルマスタBOX109が接続されている。ローカルマスタBOX109には後述するDHCPクライアントが内蔵されており、DHCPサーバ110によってLAN102に接続し、第一SN107等のIPリーチャブルな機器と通信ができるようになる。
【0051】
図3は第二端末106に注目したネットワークシステム101の概略図である。
第二端末106の、第一端末105との相違点は、第二端末106にはローカルマスタBOX109の代わりにソフトローカルマスタ113がインストールされており、OS201とプレイヤ111との間に介在している点と、第二端末106はLAN102と内蔵NIC301で接続される点である。したがって、第一端末105ではDHCPサーバ110がローカルマスタBOX109に動的IPアドレスを付与していたが、第二端末106ではDHCPサーバ110が、第二端末106に内蔵されている内蔵NIC301に直接、動的IPアドレスを付与することとなる。ソフトローカルマスタ113は第二端末106内にインストールされているので、第一端末105とローカルマスタBOX109の場合のように、IPネットワーク経由で所定の制御情報の送受信を行わずとも、メッセージパッシング、共有メモリ或は名前付きパイプ等、一般的なプロセス間通信の仕組みが利用可能である。
【0052】
[ローカルマスタBOX109]
図4は、ローカルマスタBOX109の外観斜視図である。ローカルマスタBOX109の裏面にはUSB−Bコネクタ403が一つと、ネットワークコネクタ404が一つ設けられている。USB−Bコネクタ403は、図示しないUSB−Bケーブルを通じて端末が接続される。ネットワークコネクタ404にはLANケーブルが接続され、その先にはDHCPサーバ110が接続される。
【0053】
図5はローカルマスタBOX109のハードウェア構成を示すブロック図である。
マイクロコンピュータよりなるローカルマスタBOX109は、CPU502、RAM503、ROMを兼用する不揮発性ストレージとしてのフラッシュメモリ504、USBインターフェース505、そして第一NIC507が、バス508に接続されている。
フラッシュメモリ504にはOS201のカーネルやライブラリ、そして管理用コマンド等の主要部分が格納されている。OS201は例えばLinux(登録商標)である。
ローカルマスタBOX109はパソコンである第一端末105からUSBケーブルを通じて電源供給を受ける。つまり、ローカルマスタBOX109はバスパワードデバイスである。
図6にて後述する、図5に記されていない第二NIC601は、フラッシュメモリ504内に格納されているOS201及びアプリケーションプログラムによって仮想的に作成される。
【0054】
図6はローカルマスタBOX109の機能ブロック図である。
ローカルマスタBOX109は、二つのネットワークインターフェースを具備する。
第一NIC507は、図5で図示したようにハードウェアとして構成されるNICであり、LAN102に接続されることで、第一SN107とIPリーチャブルになる。
第二NIC601は、図5では図示されていないが、フラッシュメモリ504内に格納されているOS及びアプリケーションプログラムによって仮想的に作成される。第一端末105から見ると、第二NIC601はUSB接続される外付けNICとして認識される。つまり、第二NIC601は第一端末105のネットワークシステム101が構成するサブネットに含まれ、第一端末105から直接的にアクセスが可能なデバイスである。
【0055】
ローカルマスタBOX109の第一NIC507がLAN102に接続されると、DHCPクライアント602は、DHCPサーバ110から、IPアドレス、ネットマスク、(IPネットワークにおける)デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、第一NIC507がLAN102上の機器とIPリーチャブルな状態になるように、第一NIC507を設定する。
【0056】
次に、アドレス重複回避部603は、DHCPクライアント602が取得したネットワーク構成情報を参照して、第二NIC601に付与しようとするIPアドレスが第一NIC507のサブネットに属する場合には、第二NIC601が第一NIC507とは異なるサブネットのネットワークに属するようにするために、DHCPサーバ604の起動パラメータを調整する。具体的には、第一NIC507にグローバルIPアドレスが付与される場合は、第二NIC601には既定値として、ネットワークアドレス192.168.0.0/24に属するIPアドレスである192.168.0.1を付与するが、もしも第一NIC507のネットワークアドレスが192.168.0.0/24であった場合は、192.168.1.0/24のIPアドレスである192.168.1.1を付与する。
【0057】
ローカルマスタBOX109の第一NIC507がDHCPサーバ110によって設定され、第二NIC601にもDHCPサーバ604によってプライベートIPアドレスが付与された状態では、NAT設定部605は一般的な動的NATを構成する。これにより、第一NIC507と第二NIC601との間は支障なくネットワーク接続が成立する。なお、この時点では、暗号化通信処理部606は第二NIC601と第一NIC507との間を流れるパケットのペイロード部分の暗号化処理及び復号化処理は行わない。
【0058】
一方、コントロールセッション管理部609は、第一NIC507がネットワークに接続したことを知ると、直ちにコンダクタ115に対して機器認証を試みる。コンダクタ115へ送信する機器特定ID608は、デフォルトゲートウェイアドレス612に記述されているステッピングノードへ送信される。本実施形態では図1に示したように、第一SN107である。
機器認証に用いる機器特定ID608は、暗号化通信処理部606によって暗号化されて、第一SN107及び第二SN108を通じてコンダクタ115に送信される。コンダクタ115から暗号化通信処理部606を通じて機器認証の成功の通知及びセッションID(以下「SSID」)を受信すると、コントロールセッション管理部はSSIDをSSIDメモリ613に記憶する。
この時点で、ローカルマスタBOX109と第一SN107、第二SN108及びコンダクタ115との間にはコントロールセッションが形成される。
なお、本実施形態で記す「デフォルトゲートウェイ」は、一般的なIPネットワークのデフォルトゲートウェイとは異なる意味であり、コンダクタ115に繋ぐ為に辿る、IPリーチャブルな機器のIPアドレス又はホスト名を指す。
【0059】
コントロールセッションは、コネクション型のTCPの一種であり、ペイロードが暗号化通信処理部606によって暗号化されている。発明者が独自に開発したプロトコルであり、SSL−TELNET(SSLによって暗号化されたTELNETプロトコル)に類似する。SSL−TELNETとの相違点は、画面制御を行わない点である。コマンドとデータの送受信だけが実現できればよいので、VT端末等のエスケープシーケンスを用いた画面制御の機能を持たない。
ローカルマスタとコンダクタ115との間のコントロールセッションの形成は、TELNETの多重接続に類似する。つまり、ローカルマスタから第一SN107にTELNETログインした後、第一SN107を踏み台にして第二SN108にTELNETログインし、更に第二SN108を踏み台にしてコンダクタ115にTELNETログインする、という接続形態である。
【0060】
第一端末105のプレイヤ111は、起動すると、接続されているローカルマスタBOX109に対し、コントロールセッションを通じてSSIDを要求する。この動作は、ローカルマスタBOX109がSSIDを返信するまで繰り返される。つまり、プレイヤ111はSSIDの要求をポーリングする。
コントロールセッション管理部609は、プレイヤ111からSSIDの要求を受けると、SSIDメモリ613にSSIDが格納されていればこれを返信する。そうでない場合、つまりコンダクタ115に対する機器認証が完遂しておらず、コンダクタ115からSSIDを受け取っていない時点では、プレイヤ111に対しエラーを返信する。
プレイヤ111は、ローカルマスタBOX109からSSIDを受信すると、ローカルマスタBOX109が機器認証を成功したことを認識する。受信したSSIDを図示しないRAMに記憶すると、プレイヤ111は次に第一端末105の表示部206にログイン画面を表示する。
ユーザは第一端末105のICカードリーダ104或は操作部205等を用いてユーザの個人認証を実行する。ユーザが入力する個人認証の情報はプレイヤ111によってコントロールセッションを通じてローカルマスタBOX109に送信される。なお、個人認証の情報は、様々である。操作部205を用いる場合は、一般的なユーザIDとパスワードである。この他、指紋認証機器やICカードリーダ104等の、個人認証を実現する機器から得られる個人認証に用いる情報を利用する方法もある。これ以降、これらの端末を使用するユーザを認証するための情報を個人認証情報と総括して呼ぶ。
【0061】
個人認証情報は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、コンダクタ115に送信される。コンダクタ115から返信される個人認証の成功の通知は、第一端末105に到達する。
プレイヤ111はコンダクタ115から個人認証の成功の通知を受信すると、ユーザが利用可能なサービスに関する情報をコンダクタ115に要求する。コンダクタ115はこれに呼応して、ユーザが享受できるサービスに関する情報と、第一端末105及びローカルマスタBOX109の挙動を制限するための情報を送信する。
ユーザが享受できるサービスに関する情報はサービスメニュー情報614として、プレイヤ111に記憶されると共に、ローカルマスタBOX109も転送する際にサービスメニュー情報614を記憶する。
第一端末105及びローカルマスタBOX109の挙動を制限するための情報は制限設定情報610として、プレイヤ111に記憶されると共に、ローカルマスタBOX109も転送する際に制限設定情報610を記憶する。
【0062】
ローカルマスタBOX109のコントロールセッション管理部609は、コンダクタ115から受信した制限設定情報610に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部611を制御する。パケットフィルタ設定部611は、コントロールセッション管理部609から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
【0063】
次に、ローカルマスタBOX109のコントロールセッション管理部609は、記憶したサービスメニュー情報614に基づいて、データセッションを形成するポート番号を監視するように、パケット監視部615を設定する。
パケット監視部615は、第二NIC601に割り当てられたIPアドレスの、データセッションの対象となるポート番号に、TCP SYNパケットが来たら、これをコントロールセッション管理部609に報告する。コントロールセッション管理部609は、この報告を受けて、データセッションを形成するための通信を開始する。
【0064】
また、パケット監視部615は、設定されるデータセッションがコネクション型の通信である場合は、TCP FINパケットも監視する。RDPやSSHのような、クライアントの終了によって初めてTCP FINパケットが送信されるプロトコルの場合は、TCP FINパケットの入来を検出することで、直ちにデータセッションを終了(クローズ)させることができる。
逆に、設定されるデータセッションがHTTPのようなコネクションレス型のプロトコルの場合は、一つのデータストリームが送信される度にTCP FINパケットが送信される。従って、コネクションレス型プロトコルの場合は、TCP FINパケットをデータセッションをクローズさせるきっかけとしてはならない。つまり、HTTPを通すVPCトンネルはTCP FINパケットも正しく転送しなければならない。この場合は、端末がコントロールセッションを通じて、当該データセッションの終了を明示的に通知する。
【0065】
[ソフトローカルマスタ113]
図7は、ソフトローカルマスタ113の機能ブロック図である。
ソフトローカルマスタ113は、二つのネットワークインターフェースを具備する。
内蔵NIC301は、第二端末106にハードウェアとして内蔵されるNICであり、LAN102に接続される。
ループバック仮想NIC701は、第二端末106にインストールされている、IPv4プロトコルのネットワークOS201には標準として備わっている、周知のループバックインターフェースである。仮に端末にNICが装備されていなくても、OS201がIPv4プロトコルをサポートする限り、必ず127.0.0.1というIPアドレスが付与されているループバックインターフェースがOS201内に構成される。特別な設定を施していない限り、ループバックインターフェース宛に送信したパケットは、端末自身のパケット受信対象に送付される。つまり、「loop back」、送信したパケットが輪を描くように出発点、つまり端末自身に戻る。
【0066】
ローカルマスタBOX109の場合は、第一NIC507は第一端末105から直接的にアクセスが可能なデバイスでは無かった。しかし、ソフトローカルマスタ113の場合、内蔵NIC301もループバック仮想NIC701も、第二端末106のOS201及びアプリケーションから等しくアクセスが可能なデバイスである。
【0067】
ソフトローカルマスタ113の内蔵NIC301がLAN102に接続されると、OS201が内蔵するDHCPクライアント702は、内蔵NIC301を通じてDHCPサーバ110から、IPアドレス、ネットマスク、デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、内蔵NIC301がネットワークに接続できるように内蔵NIC301を設定する。
【0068】
ローカルマスタBOX109の場合は、この手順の次に、第一NIC507と第二NIC601のサブネットが重複しないための処理が必要だったが、ループバック仮想NIC701は、グローバル或はプライベートのIPアドレスが付与される内蔵NIC301とは必ずネットワークセグメントが重複しないので、アドレス重複回避部603を設ける必要はない。また、ループバックアドレスは固定であるので、DHCPサーバ604も不要である。
【0069】
ソフトローカルマスタ113の内蔵NIC301がLAN102に接続された状態では、NAT設定部705は何もしない。また、パケットフィルタ設定部706も何もしない。これにより、OS201及びアプリケーションは内蔵NIC301を通じて支障なくネットワークに接続できる。なお、この時点では、暗号化通信処理部606はループバック仮想NIC701と内蔵NIC301との間を流れるパケットの暗号化処理及び復号化処理は行わない。
【0070】
一方、コントロールセッション管理部609は、内蔵NIC301がネットワークに接続したことを知ると、直ちにコンダクタ115に対して機器認証を試みる。コンダクタ115へ送信する機器特定ID608は、デフォルトゲートウェイアドレス612に記述されているステッピングノードへ送信される。本実施形態では図1に示したように、第一SN107である。
機器認証に用いる機器特定ID608は、暗号化通信処理部606によって暗号化されて、第一SN107及び第二SN108を通じてコンダクタ115に送信される。コンダクタ115から暗号化通信処理部606を通じて機器認証の成功の通知及びセッションID(以下「SSID」)を受信すると、コントロールセッション管理部609はSSIDをSSIDメモリ613に記憶する。
この時点で、ソフトローカルマスタ113と第一SN107、第二SN108及びコンダクタ115との間にはコントロールセッションが形成される。
【0071】
第一端末105のプレイヤ111は、起動すると、接続されているローカルマスタBOX109に対し、コントロールセッションを通じてSSIDを要求する。この動作は、ローカルマスタBOX109がSSIDを返信するまで繰り返される。つまり、プレイヤ111はSSIDの要求をポーリングする。
コントロールセッション管理部609は、プレイヤ111からSSIDの要求を受けると、SSIDメモリ613にSSIDが格納されていればこれを返信する。そうでない場合、つまりコンダクタ115に対する機器認証が完遂しておらず、コンダクタ115からSSIDを受け取っていない時点では、プレイヤ111に対しエラーを返信する。
プレイヤ111は、ソフトローカルマスタ113からSSIDを受信すると、ソフトローカルマスタ113が機器認証を成功したことを認識する。受信したSSIDを図示しないRAMに記憶すると、プレイヤ111は次に第一端末105の表示部206にログイン画面を表示する。
ユーザは第一端末105のICカードリーダ104或は操作部205等を用いて個人認証を実行する。個人認証情報はプレイヤ111によってコントロールセッションを通じてローカルマスタBOX109に送信される。
【0072】
個人認証情報は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、コンダクタ115に送信される。コンダクタ115から返信される個人認証の成功の通知は、第一端末105に転送される。
プレイヤ111はコンダクタ115から個人認証の成功の通知を受信すると、ユーザが利用可能なサービスに関する情報をコンダクタ115に要求する。コンダクタ115はこれに呼応して、ユーザが享受できるサービスに関する情報と、第一端末105及びローカルマスタBOX109の挙動を制限するための情報を送信する。
ユーザが享受できるサービスに関する情報はサービスメニュー情報として、プレイヤ111に記憶される。このサービスメニュー情報はソフトローカルマスタ113も利用する。
第一端末105及びローカルマスタBOX109の挙動を制限するための情報は制限設定情報610として、プレイヤ111に記憶される。この制限設定情報610はソフトローカルマスタ113も利用する。
【0073】
ローカルマスタBOX109の場合、プレイヤ111に転送される制限設定情報610及びサービスメニュー情報614を、プレイヤ111に転送する際にローカルマスタBOX109も取得して記憶する手順を踏むが、ソフトローカルマスタ113の場合、ソフトローカルマスタ113とプレイヤ111が第二端末106内に共存しているので、コンダクタ115から受信した制限設定情報610は直ちにプレイヤ111も参照可能である。したがって、ソフトローカルマスタ113が制限設定情報610を第二端末106のプレイヤ111に送信する手順は、本質的に生じ得ない。
【0074】
ソフトローカルマスタ113のコントロールセッション管理部609は、コンダクタ115から受信した制限設定情報610に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部706を制御する。パケットフィルタ設定部706は、コントロールセッション管理部609から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
【0075】
次に、ソフトローカルマスタ113のコントロールセッション管理部609は、記憶したサービスメニュー情報に基づいて、データセッションを形成するポート番号を監視するように、パケット監視部615を設定する。
パケット監視部615は、第二NIC601に割り当てられたIPアドレスの、データセッションの対象となるポート番号に、TCP SYNパケットが来たら、これをコントロールセッション管理部609に報告する。コントロールセッション管理部609は、この報告を受けて、データセッションを形成するための通信を開始する。
【0076】
また、パケット監視部615は、設定されるデータセッションがコネクション型の通信である場合は、TCP FINパケットも監視する。RDP(Remote Desktop Protocol)やSSHのような、クライアントの終了によって初めてTCP FINパケットが送信されるプロトコルの場合は、TCP FINパケットの入来を検出することで、直ちにデータセッションを終了(クローズ)させることができる。
逆に、設定されるデータセッションがHTTPのようなコネクションレス型のプロトコルの場合は、一つのデータストリームが送信される度にTCP FINパケットが送信される。従って、コネクションレス型プロトコルの場合は、TCP FINパケットをデータセッションをクローズさせるきっかけとしてはならない。つまり、HTTPを通すVPCトンネルはTCP FINパケットも正しく転送しなければならない。この場合は、端末がコントロールセッションを通じて、当該データセッションの終了を明示的に通知する。
【0077】
以上、ローカルマスタBOX109とソフトローカルマスタ113を説明した。
これまでの説明で明らかなように、ローカルマスタはコンダクタ115の指示、具体的にはコンダクタ115が作成する制限設定情報610に基づいて、端末で稼働するOS201或はそのOS201を通じて動作するアプリケーションから発生する通信に対し、パケットフィルタで制限を加える。そして、ユーザが許可されたサーバ103に対する仮想的な接続を実現するために、直近のステッピングノードに対する静的NATを設定する。
静的NATを行うことで、端末はあたかもLAN102内のサーバ103に接続する時と同等の状態で、インターネット107及びファイアウォールを介したサーバ103に接続することができる。
【0078】
[プレイヤ111]
図8は、プレイヤ111の機能ブロック図である。
プレイヤ111は、コンダクタ115の指示、具体的にはコンダクタ115から送信される制限設定情報610に基づいて、端末で起動するアプリケーションと、アプリケーションの動作に連れて使用されるデバイスに対して監視を行い、必要に応じて動作を制限する等の制御を行い、ログ記録等の管理を行う。このような機能を実現するために、プレイヤ111はOS201に備わっているAPIをフックして、アプリケーション及びOS201の挙動を常時監視する。そして、APIが制限設定情報610に記述されている制限条件に合致した場合、プレイヤ111は当該APIの起動を阻止し、ローカルマスタを通じてコンダクタ115に報告する。
【0079】
図8では、プレイヤ111を説明する際に必要不可欠な、OS201とアプリケーションについても機能ブロックとして表記している。
OS201には様々な機能が含まれているが、本実施形態を説明するに際し、OS201はハードウェアをアプリケーションから扱い易くするためのデバイスドライバの集合体と考えることができる。そして、デバイスドライバはAPIの集合体ともいえる。図8では、主にこれらハードウェアとデバイスドライバに着目して、機能ブロックを記述した。
【0080】
端末に備わっている主要なハードウェアとしては、キーボード及びマウス等のポインティングデバイスである操作部205、液晶ディスプレイ等の表示部206、ハードディスク等のストレージ204、そしてNICが挙げられる。但し、前述の第一端末105の場合は、NICはローカルマスタBOX109の内部に、第二NIC601として仮想的に設けられた。何れの場合においても、ネットワークに接続する以上、NICは存在する。
操作ドライバ801は、操作部205が発する操作情報及びICカードリーダ104が出力する個人認証情報を、アプリケーションやシェル202やコントロールセッション管理部807等に引き渡す。
表示制御部802は、アプリケーションやシェル202等から発生する画面描画指示情報を実際の画面描画情報に変換して表示部206に引き渡す。
【0081】
ファイルシステム803は、ストレージ204にファイル及びディレクトリを構成し、アプリケーションやシェル202の指示に従ってファイル及びディレクトリを操作する。
プロセス制御部804は、アプリケーションやシェル202等を通じてストレージ204内に存在するアプリケーションやライブラリ等の実行及び終了を制御する。
クリップボードバッファ805は、アプリケーションやシェル202同士でデータオブジェクトの複写、移動、削除等の一時バッファとして機能する。
TCP/IPプロトコルスタックとも呼べるネットワークドライバ806は、アプリケーションやシェル202とネットワークとの間で通信ができる環境を構築し、その通信を制御する。
【0082】
ネットワークドライバ806はDHCPクライアント702も含む。
ローカルマスタBOX109を利用する場合、ローカルマスタBOX109内のDHCPクライアント602は、ローカルマスタBOX109内の第一NIC507に、LAN102のDHCPサーバ110から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。また、ネットワークドライバ806の一機能であるDHCPクライアント702は、ローカルマスタBOX109内の第二NIC601に、ローカルマスタBOX109内のDHCPサーバ604から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。
ソフトローカルマスタ113を利用する場合、ネットワークドライバ806の一機能であるDHCPクライアント702は、内蔵NIC301に、LAN102のDHCPサーバ110から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。
【0083】
プレイヤ111は、OS201の初期起動プロセスやシェル202を通じたユーザの操作、或はUSBメモリ内に格納された状態でUSBメモリを端末に接続して自動実行される等で起動されると、最初にコントロールセッション管理部807がローカルマスタBOX109又はソフトローカルマスタ113に対してSSIDを要求する。
ローカルマスタBOX109又はソフトローカルマスタ113からSSIDの取得に成功すると、コントロールセッション管理部807は次に個人認証を実行する。コントロールセッション管理部807は、ICカードリーダ104或は操作部205等で取得した個人認証情報をコンダクタ115に送信し、個人認証の結果を待つ。
【0084】
コンダクタ115からローカルマスタBOX109又はソフトローカルマスタ113を通じて個人認証が成功した旨の報告を受けたら、コントロールセッション管理部807は次にコンダクタ115に対して制限設定情報610及びサービスメニュー情報614を要求する。
ソフトローカルマスタ113を使用している場合、個人認証が成功した後、プレイヤ111がコンダクタ115から制限設定情報610及びサービスメニュー情報614をダウンロードして、端末の図示しないRAM内に制限設定情報610を保持する。保持した制限設定情報610及びサービスメニュー情報614はソフトローカルマスタ113と共用することとなる。
【0085】
ローカルマスタBOX109を使用している場合、個人認証が成功した後、プレイヤ111がコンダクタ115から制限設定情報610及びサービスメニュー情報614をダウンロードして、端末の図示しないRAM内に制限設定情報610を保持する際、ローカルマスタBOX109は端末とは別個のハードウェアで構成されているので、ローカルマスタBOX109は別途制限設定情報610及びサービスメニュー情報614を取得する必要がある。このため、本実施形態ではプレイヤ111とコンダクタ115との通信の間に介在して、制限設定情報610及びサービスメニュー情報614をプレイヤ111が受信する寸前に、一旦ローカルマスタBOX109が保持してから、プレイヤ111に送信する、という方法で取得している。勿論、この方法に限られず、プレイヤ111が受信した制限設定情報610及びサービスメニュー情報614を明示的にローカルマスタBOX109に送信する方法でも良い。
【0086】
コンダクタ115から制限設定情報610を得ると、プレイヤ111のコントロールセッション管理部807は、制限設定情報610に従って、操作情報取得部808、画面キャプチャ処理部809、ファイルシステム監視部810、プロセス監視部811、クリップボード監視部812、そしてAPIフック処理部813に設定を行う。
【0087】
ファイルシステム監視部810は、制限設定情報610で指定された特定のファイルやディレクトリに対する挙動として、コピー、移動、削除、名称変更を監視する。
プロセス監視部811は、制限設定情報610で指定された特定のアプリケーション等のプロセスの起動及び自己プロセス隠蔽行為を監視する。
クリップボード監視部812は、制限設定情報610で指定された特定のアプリケーション等が、クリップボードバッファ805に対する、データオブジェクトの複写、移動、削除等の操作を監視する。
【0088】
APIフック処理部813は、ファイルシステム監視部810がファイルシステム803に対するAPIフック処理を、プロセス監視部811がプロセス制御部804に対するAPIフック処理を、クリップボード監視部812がクリップボードバッファ805に対するAPIフック処理を、それぞれ実現する。APIフック処理部813によって、シェル202やアプリケーションがファイルやプロセスに対して何らかの動作を起こそうとすると、ファイルシステム監視部810やプロセス監視部811がその都度呼び出されて、対応するAPIを実行すべきか否かが判定される。
【0089】
操作情報取得部808は、制限設定情報610に記述されている情報に従って、当該情報に記されている条件に合致したら、操作ドライバ801から得られる操作情報を、ローカルマスタBOX109又はソフトローカルマスタ113を通じてコンダクタ115へ報告する。
画面キャプチャ処理部809は、制限設定情報610に記述されている情報に従って、当該情報に記されている条件に合致したら、表示制御部802から得られるビットマップ画面情報を、ローカルマスタBOX109又はソフトローカルマスタ113を通じてコンダクタ115へ報告する。
【0090】
専用シェル208は、制限設定情報610の記述に従って、ユーザが実行を許可されるアプリケーションのアプリケーションプログラム名と、ユーザがアクセスを許可されるサーバ103のリソース名(resource:「情報資源」の意)を含むアイコンを作成する。アイコンの中身はコマンドライン文字列であり、実行するアプリケーションプログラム名と、その引数としてサーバ103のリソース名が記述される。また、アプリケーションプログラムによっては、起動時に必要な種々のオプションスイッチも含まれる。このアイコンをマウス等のポインティングデバイス等でクリックすることで起動したアプリケーションプログラムが、図8の第一アプリケーション209及び第二アプリケーション210である。第一アプリケーション209及び第二アプリケーション210は専用シェル208の子プロセスとして起動されるので、第一アプリケーション209及び第二アプリケーション210の挙動は専用シェル208を通じて完全に把握可能である。
【0091】
一方、OS201には標準で備わっているシェル202が存在する。また、そのシェル202から起動するアプリケーションプログラムも当然存在する。プロセス監視部811はこれら専用シェル208を経由しないシェル202及びアプリケーション(図8では第三アプリケーション203がこれに該当する。)については、ファイルシステム監視部810、プロセス監視部811及びクリップボード監視部812が厳しくその挙動を監視し、サーバ103に対するセキュリティ面の脅威となる可能性のある操作は直ちに中止する。また、起動自体が禁じられているアプリケーションプログラムについては、プロセス監視部811によって強制終了させられる。
【0092】
[ステッピングノード]
ステッピングノードは、ファイアウォールを伴わない形式の装置と、ファイアウォールを伴う形式の装置との、二種類が存在する。以下、それぞれの機能を説明する。
図9は、ステッピングノードの機能ブロック図である。図9に開示するステッピングノードは、ファイアウォールを伴わない形式の装置である。
ステッピングノード901はネットワークOSが稼働するコンピュータである。OSは一例としてはLinux(登録商標)等の、POSIX系OSが好ましい。
本実施形態のステッピングノード901は、LAN102の要所に配置され、IPリーチャブルなステッピングノード同士或はサーバとのゲートウェイに特化している。
LAN102に接続される第五NIC902には固定のIPアドレスが付与されている。
【0093】
第五NIC902に接続されている暗号化通信処理部904は、ローカルマスタBOX109及びソフトローカルマスタ113に設けられている暗号化通信処理部606と対をなす。つまり、プレイヤ111及びローカルマスタと認証情報の送受信と、コントロールセッション及びデータセッションの暗号化を施す。
【0094】
コントロールセッション管理部909は、ローカルマスタBOX109及びソフトローカルマスタ113に設けられているコントロールセッション管理部609、及びプレイヤ111に設けられているコントロールセッション管理部807と対をなす。つまり、ローカルマスタとの間にコントロールセッションを形成し、ローカルマスタ或はプレイヤ111と様々な制御情報の送受信を行う。このために、デフォルトゲートウェイアドレス612或はコンダクタアドレス908が記憶されている。
【0095】
データセッション管理部910は、コントロールセッション管理部909を通じて、ローカルマスタから来たサーバ103に対する接続要求に応じて、当該サーバ103に対応するリバースプロキシを起動するか、又は静的NATを設定して、IPリーチャブルなローカルマスタ、他のステッピングノード或はサーバ103との間にデータセッションを形成する。
データセッション管理部910によって起動されるリバースプロキシのプロセスは、図9に示すように、第一リバースプロキシ911、第二リバースプロキシ912、…と、端末との間に形成されるデータセッションの数に応じて増減する。
同様に、データセッション管理部910によって設定される静的NATの設定は、図9に示すように、第一NAT914、図示しない第二NAT、…と、端末との間に形成されるデータセッションの数に応じて増減する。
【0096】
データセッションは、端末から形成される数に応じて増減すると共に、端末の数、ひいてはその端末を使用するユーザの人数によっても増減する。例えば、ユーザAのHTTPデータセッションと、ユーザAのRDPデータセッションは独立である。ユーザBのHTTPデータセッションと、ユーザBのRDPデータセッションも独立である。これらデータセッションは全て独立して形成される。特に、SSHのようなプロトコルの場合は、接続しようとするSSHサーバの数に応じて、一人のユーザで複数のデータセッションが形成される。それらデータセッションにおいて、ステッピングノードが終端であればリバースプロキシのプロセスが起動され、終端でなければ静的NATが設定される。
なお、「静的NATの設定」とは、ステッピングノードのOSの機能に対して設定を行って静的NATを設定する場合を想定して言及している。例えばLinux(登録商標)の場合は、カーネルのNetfilterドライバに対してiptablesユーティリティを用いて静的NATを設定する作業を指す。もし、静的NATも独立したプログラムで構成し、且つデータセッションの数に応じて多重起動するのであれば、その場合は「静的NATプログラムの起動」となる。つまり、静的NATを実現する方法に応じて表現は変わる。
【0097】
データセッション管理部910は、ローカルマスタと他のステッピングノード、又はステッピングノード同士との接続には、静的NATを設定する。パケットのペイロード部分の暗号化を解く必要がなく、パケットのIPヘッダ部分に記述されているIPアドレス及びポート番号の書き換えだけで済むからである。
これに対して、データセッション管理部910は、ローカルマスタ又は他のステッピングノードとサーバ103との接続には、リバースプロキシを設定する。サーバ103との通信にはパケットのペイロード部分の暗号化を解く必要があり、またTCP/IP第四層(アプリケーション)に従う処理が要求される場合があるからである。一例としては、HTTPのエラー処理として、サーバ103に代わって、URLの呼び出し方法や構文に誤りがある場合にwebサーバが返す「400 Bad Request」を返送することで、サーバ103の負荷を軽減する、等の機能が考えられる。
【0098】
パケットモニタ905は、データセッションに入来するTCP ACK+SYNパケットを監視する。
VPCトンネルは、端末が発したTCP SYNパケットに呼応してローカルマスタが送信したVPC確立要求コマンドに従って、静的NAT或はリバースプロキシで形成するが、サーバ103が何らかの障害等で端末の要求に応えられない場合は、設定したVPCトンネルを破棄しなければならない。そこで、ローカルマスタが送信したVPC確立要求コマンドに従って仮に設定した静的NAT或はリバースプロキシは、タイマを用いて制限時間を設けている。図9では、データセッション管理部910は第一リバースプロキシ911を起動する際に、同時に第一タイマ906も起動する。同様に、データセッション管理部910は第二リバースプロキシ912を起動する際に、同時に第二タイマ907も起動し、第一NAT914を設定する際に、同時に第三タイマ913も起動する。
これらタイマは、仮に起動したリバースプロキシ、或は仮に設定した静的NATをそのまま維持して良いか否かを判断するために用いられる。
リバースプロキシ或は静的NATにて設けられたVPCトンネルに、サーバ103からTCP ACK+SYNパケットが入来したら、サーバ103は端末と通信が可能な状態にあることが判る。そこで、パケットモニタ905はこのTCP ACK+SYNパケットの入来を監視し、TCP ACK+SYNパケットが来たら、対応するリバースプロキシ或は静的NATに連動して動作しているタイマの計時動作を停止する。
もし、タイマに設定された時間内にTCP ACK+SYNパケットが来ないと、タイマは所定の時間を計時した後、該当するリバースプロキシ或は静的NATを停止する。つまり、仮に設定したVPCトンネルは時間切れで破棄される。
【0099】
図示しないリバースプロキシサーバプログラムは、サーバ103にアクセスする際に利用するプロトコルに応じて用意される。HTTPであれば、プロキシモードのリザルトコードを実装する。CIFS(Common Internet File System:Windows(登録商標)のファイル共有サービスのプロトコル(SMB:Server Message Block)が拡張されたプロトコル)やRDPの場合は、IPアドレスの書き換えのみ行う。
【0100】
コントロールセッション管理部909には、ステッピングノードを一意に識別するための情報であるSNID915が接続されている。SNID915は、本実施形態で説明するVPCトンネルを形成する手順において、リバースプロキシを設定するために用いる情報であると共に、後述するコンダクタ115が経路情報を作成する際に用いる情報として重要である。
【0101】
図10は、ステッピングノードの機能ブロック図である。図10に開示するステッピングノード1001は、図9のステッピングノード901とは異なり、ファイアウォールを伴う形式の装置である。
本実施形態のステッピングノード1001は、LAN102のうち、隣接する異なるサブネットの間に配置され、IPリーチャブルなステッピングノード1001同士或はサーバ103とのゲートウェイを兼用する。
【0102】
LAN102に接続される第三NIC1002には固定のIPアドレスが付与されている。
LAN102に接続される第四NIC1003には、第三NIC1002とは異なる固定のIPアドレスが付与されている。
【0103】
第三NIC1002と第四NIC1003との間には、LAN102に接続されている端末が第四NIC1003側のサブネットに接続されているホスト(端末やサーバ103等)が第三NIC1002側のサブネットに接続するための動的NATの機能と、ネットワークのセキュリティ上の脅威から第四NIC1003側のホストを保護するためのパケットフィルタリングの機能を備えたファイアウォール1004が設けられている。
【0104】
図10のステッピングノード1001は、特に社内LANがインターネットに接続するためのファイアウォールとして設置する際に好適である。この場合、第三NIC1002側のネットワークがインターネットであり、第四NIC1003側のネットワークが社内LANになる。そして、第四NIC1003のIPアドレスは社内LANのゲートウェイアドレスとなる。
図10のステッピングノード1001は、ファイアウォール1004と第四NIC1003の存在以外は図9のステッピングノード1001と動作は同じである。第一リバースプロキシ911或は第二リバースプロキシ912等の、データセッション管理部910から起動されるリバースプロキシは、第四NIC1003側に配置されるサーバ103と、第三NIC1002側に配置されるローカルマスタ或はステッピングノード1001との通信を実現する。第一NAT914等の、データセッション管理部910によって設定される静的NATは、第三NIC1002側に配置されるローカルマスタとステッピングノード1001、或はステッピングノード1001同士の通信を実現する。
【0105】
端末が、単にファイアウォール1004の向こう側に存在するサーバ103に対して接続を行うのであれば、LAN102のゲートウェイ或はLAN102とインターネット107との境界に配置される機器に、リバースプロキシを設定すればよい。しかし、この場合、端末はリバースプロキシが稼働するマシンのIPアドレスに対して接続を行うこととなる。このような接続形態は、アプリケーションに元々から備わっているセキュリティ設定によって様々な悪影響を生じる虞がある。
【0106】
具体的には、例えばマイクロソフト社のWindows(登録商標)に標準的に備わっているwebブラウザ「インターネットエクスプローラ」(以下「IE」と略す)では、接続しようとするwebサーバのIPアドレス、FQDN(Full Qualified Domain Name:完全修飾ドメイン名)或はドメイン名を含まないホスト名に応じて、HTML(Hyper Text Markup Language)文書内に埋め込まれたスクリプトや外部アプリケーション等を実行するか否か等のセキュリティ設定を変更する機能が備わっている。LAN102内のwebサーバはLAN102内の端末からアクセスされることを前提にwebアプリケーションが構築されており、インターネット107上のwebサーバでは危険で実行が許されないようなスクリプト等も、利便性を優先してHTML文書内に含まれている。つまり、リバースプロキシだけでは、インターネット107からLAN102内のサーバ103に接続しても、IEを始めとする所望のアプリケーションが正常に動作することが保証できないどころか、異常終了する等の弊害を生じる可能性が高い。
【0107】
この問題を解決するためには、IE等の端末上で動作するアプリケーションに対して、「あたかもLAN内のサーバに接続していると錯覚させる」仕組みが必要である。このための解決策が、静的NATである。静的NATを通じてサーバ103に接続する、ということは、ローカルマスタBOX109の場合では端末と同一サブネットのプライベートアドレスに対して、ソフトローカルマスタ113の場合ではループバックアドレスに対して、接続する、ということとなる。何れの場合も、IEから見ると、パケットに付される宛先IPアドレスはアプリケーションのセキュリティ設定を低い状態にできる「ローカルイントラネット」に属する。こうして、端末はインターネット107を越えてファイアウォール1004の向こう側にあるサーバ103に対し、制限のない「ローカルイントラネット」としてのアクセスを実現する。
【0108】
IPアドレスを変換するメリットは、上述の例に限られない。
企業が合併したり、企業や団体が業務提携をする等の事情で、相互のLAN同士を接続したい場合がある。この場合、夫々の企業は、予め合併することを前提に社内LANを構築していた訳ではないのだから、夫々のLANで使用するプライベートIPアドレスが重複する可能性が十分考えられる。
また、複数の企業や団体に対してネットワークサービスを提供する業者の場合、サービスを提供しようとする企業や団体のLANのIPアドレスが重複する可能性は飛躍的に高くなる。IPアドレスの重複を避けるために、保守サービスの度にネットワークの繋ぎ換えを行うことは非効率的である。
本実施形態のネットワークシステムを用いて、静的NAT及びリバースプロキシを用いてIPアドレスを変換し、ネットワーク接続を仮想化することで、複数のネットワークを接続する際に、IPアドレスの重複に悩む必要がなくなる。
【0109】
[コンダクタ115]
図11はコンダクタ115の機能ブロック図である。
図12はコンダクタ115に含まれるテーブルのフィールド構成を示す図である。
本実施形態のコンダクタ115は、コントロールセッションを通じた、端末のプレイヤ111及びローカルマスタとの通信に特化している。ステッピングノードとは異なり、データセッションは形成しない。
コンダクタ115はネットワークOSが稼働するコンピュータである。OSは一例としてはLinux(登録商標)等の、POSIX系OSが好ましい。
LAN102に接続される第六NIC1101には固定のIPアドレスが付与されている。
【0110】
第六NIC1101に接続されている暗号化通信処理部1102は、ローカルマスタBOX109及びソフトローカルマスタ113に設けられている暗号化通信処理部606と対をなす。つまり、ローカルマスタと認証情報の送受信と、コントロールセッションの暗号化を施す。
認証処理部1103は、機器特定IDマスタ1105及びユーザマスタ1106を参照して、機器認証及び個人認証を遂行する。認証処理部1103は更に、機器認証が成功したローカルマスタに対してはSSIDという、機器特定IDに代わりセッション毎に変化する認証情報を生成し、機器特定IDとSSIDの組をSSIDテーブル1113に書き出す。そして、個人認証が成功したプレイヤ111に対しては、SSIDとユーザIDの組をSSIDテーブル1113に書き出す。つまり、機器認証と個人認証が正常に完遂した場合、SSIDテーブル1113には機器特定ID、SSID及びユーザIDの組のレコードが形成され、機器特定ID、SSID及びユーザIDが紐付けられる。そして、SSID認証を行うことで、機器認証及び個人認証を代行することができる。
【0111】
経路設定部1104は、SNサーバマスタ1110、SNマップマスタ1111及びLM・SNマスタ1112を用いて経路情報を作成し、経路テーブル1114に記録する。また、機器特定IDマスタ1105を参照して、経路テーブル1114に仮想IPアドレスを記述する。
【0112】
機器特定IDマスタ1105は、コンダクタ115が接続を許可するローカルマスタの機器特定IDと、仮想IPアドレス範囲が列挙されているテーブルである。
仮想IPアドレス範囲は、端末のアプリケーションプログラムがサーバ103にアクセスしようとする際に、アプリケーションプログラムがアクセスを試みようとする対象のIPアドレスである。
【0113】
本実施形態のネットワークシステム101は、IPリーチャブルでない端末とサーバを、VPCトンネルで仮想的に接続する。
アプリケーションプログラムがサーバ103にアクセスする際、アプリケーションプログラムは、サーバ103に付されている本来のIPアドレスではない、仮想IPアドレスに対してアクセスを行う。この仮想IPアドレスは、端末からIPリーチャブルであるローカルマスタに付されるように構成する。
図6のローカルマスタBOX109の場合、仮想IPアドレスは第二NIC601のサブネットに属する。例えば、第二NIC601のサブネットが192.168.1.0/24で、第二NIC601のIPアドレスが192.168.1.2である場合、仮想IPアドレスは192.168.1.1から192.168.1.254迄のIPアドレスが用いられる。
図7のソフトローカルマスタ113の場合、仮想IPアドレスはループバック仮想NIC701のサブネットに属する。殆どのネットワークOSの場合、ループバック仮想NIC701には127.0.0.1が付与され、サブネットは127.0.0.0/8であるので、仮想IPアドレスは127.0.0.1から127.255.255.254迄のIPアドレスを用いることができる。
【0114】
機器特定IDマスタ1105の仮想IPアドレス範囲フィールドは、ローカルマスタの構成に基づいて、最適な仮想IPアドレスをローカルマスタ、ひいては端末に提供できるように設けている。ユーザにサービスメニュー情報614を送信する際、仮想IPアドレスの設定はこの仮想IPアドレス範囲フィールドに記されている範囲から記述される。
【0115】
ユーザマスタ1106は、コンダクタ115が接続を許可するユーザのユーザID及びパスワード等の個人認証情報と、当該ユーザの制限設定情報が格納されている。
【0116】
サーバマスタ1107は、仮想サーバIDXと、サーバ名又はサーバのIPアドレスと、当該サーバ103のアクセスに用いられるプロトコル種別と、ポート番号と、端末用リソース文字列等が格納されている。
仮想サーバIDXとは、サーバマスタ1107のレコードを一意に識別するための情報である。これは、異なる拠点に同じサブネットが存在し、そのサブネット上に同じIPアドレス及び同じサービスを提供するサーバがそれぞれ存在する可能性を考慮して、サーバ名等に代わり、サーバを一意に識別するための索引情報を設けている。
また、仮想サーバIDXは、サービスメニュー情報614に含まれる情報であり、端末のアプリケーションがサーバ103に対して接続要求を送信することに呼応して開始するVPC確立シーケンスにおいて、ローカルマスタがコンダクタ115にVPCトンネルの作成を要求するコマンドの中に含まれる。
【0117】
サーバ名又はサーバのIPアドレスは、ポート番号と共にサーバに直近のステッピングノードがサーバにIP接続する際に必要な情報である。当該ステッピングノードにおいて名前解決ができるなら、サーバ名が用いられる。名前解決ができるなら、サーバ名はFQDNであっても、ホスト名だけであってもよい。そうでない場合は、IPアドレスが用いられる。
プロトコル種別は、例えばRDP、HTTP、SSH等の、周知のプロトコルの名称、或はこれに準じる識別情報が格納される。
ポート番号は、当該サーバのアクセスに用いられるポート番号である。HTTPであれば80番、RDPであれば3389番、SSHであれば22番、VNCであれば5900番から5906番迄等と、多くの場合、プロトコル毎に決められている。但し、サーバの設定によっては意図的にポート番号をずらす等の設定変更を行うこともあるので、その際はサーバの設定に合わせる。
【0118】
端末用リソース文字列は、端末がサーバにアクセスする際に用いる、端末のアプリケーションプログラムが接続相手の情報資源を特定する文字列であり、プレイヤ111の専用シェルが設けるアイコンに埋め込まれる、アプリケーションの引数でもある。例えばHTTPであればURLであり、CIFSであればサーバがリソースを提供するルートを示すリソース名称である。
多くの場合、端末用リソース文字列はその全て或は一部に、サーバ名又はサーバのIPアドレスが含まれる。したがって、端末用リソース文字列は、プロトコルによってはその全て或は一部が仮想IPアドレスによって置換される場合がある。
【0119】
例えば、RDPやSSHの場合、端末用リソース文字列はサーバ名又はサーバのIPアドレスと一致する。したがって、このようなプロトコルの場合、端末用リソース文字列は仮想IPアドレスによって全部置換される。
CIFSの場合、端末用リソース文字列の一部はサーバ名又はサーバのIPアドレスと一致する場合がある。したがって、このようなプロトコルの場合、端末用リソース文字列は仮想IPアドレスによって一部置換される。
HTTPの場合、webブラウザは一つのhtml文書に埋め込まれているハイパーリンクに基づいて、不特定多数のwebサーバに接続する可能性が高いので、webブラウザのプロキシサーバの設定に、VPCトンネルの仮想IPアドレスを設定する。このようにwebブラウザを設定すると、webブラウザ自身は全く名前解決を行わず、端末用リソース文字列をそのままプロキシサーバであるVPCトンネルに送信する。実際のwebコンテンツを取得する動作は、webサーバ直近のステッピングノードにて稼働するリバースプロキシが実行する。したがって、このようなプロトコルの場合、端末用リソース文字列は仮想IPアドレスによって置換されない。
【0120】
ユーザサーバマスタ1108は、ユーザIDと、当該ユーザIDのユーザが利用できるサーバ103の仮想サーバIDXの組が格納されている。したがって、ユーザサーバマスタ1108をユーザIDで絞り込み、得られた仮想サーバIDXをキーにしてサーバマスタ1107を検索して得られたレコードが、当該ユーザが利用可能なサーバ103と、そのサーバ103を利用するために必要な情報を含むこととなる。
【0121】
SNマスタ1109は、ステッピングノードを一意に識別するためのSNIDと、ステッピングノードのホスト名(SNホスト名)又はIPアドレスの組と、当該ステッピングノードのIPリーチャブルな範囲にサーバが存在するか否かを示す終端フラグよりなるテーブルである。
経路設定部1104は、後述するSNサーバマスタ1110、SNマップマスタ1111及びLM・SNマスタ1112を用いて経路情報を作成する際、SNIDで経路情報の元データを作成する。そして、最後にSNIDをSNホスト名又はIPアドレスに変換して、経路情報を完成し、ローカルマスタに送信する。
【0122】
SNサーバマスタ1110は、サーバ直近のステッピングノードのSNIDと、仮想サーバIDXの組よりなるテーブルである。
サーバ直近のステッピングノードとは、前述のSNマスタ1109の終端フラグフィールドの値が論理の「真」であるステッピングノードである。
【0123】
一つのサーバに対して、IPリーチャブルなステッピングノードは一つだけとは限らない。つまり、あるサーバに対して接続可能なステッピングノードは、複数存在し得る。また、一つのステッピングノードに対して、IPリーチャブルなサーバは一つだけとは限らない。つまり、あるステッピングノードから接続可能なサーバは、複数存在し得る。つまり、あるローカルマスタからあるサーバへ到達するための経路は、複数存在し得る。
このようなネットワークにおいて、最適な経路をどのように選択すべきかを判断する要素は、ネットワークの距離もさることながら、ネットワークのトラフィックが重要な位置を占める。
そこで、本実施形態のネットワークシステム101は、あるサーバに対してIPリーチャブルなステッピングノードが複数存在し得るように設計した。この、サーバとIPリーチャブルなステッピングノードとの関係を記述するテーブルが、SNサーバマスタ1110である。
あるサーバに接続できるステッピングノードの負荷が増大しているとき、別のステッピングノードから当該サーバに接続するようにVPCトンネルを切り替えることが出来れば、ネットワーク上の負荷を瞬時且つ適切に分散させることができる。
【0124】
SNマップマスタ1111は、ステッピングノードのSNIDと、当該ステッピングノードに隣接するステッピングノードのSNIDの組よりなるテーブルである。
SNマップマスタ1111をSNIDで検索すると、あるステッピングノードに隣接する全てのステッピングノードのSNIDが得られる。
【0125】
LM・SNマスタ1112は、ローカルマスタの機器特定IDと、当該ローカルマスタに隣接するステッピングノードのSNIDの組よりなるテーブルである。
LM・SNマスタ1112をSNIDで検索すると、あるローカルマスタに隣接する全てのステッピングノードのSNIDが得られる。
【0126】
経路設定部1104は、ダイクストラ法等の周知の経路探索アルゴリズムを用いて、ローカルマスタからサーバに到達するための経路情報を作成する。その際、LM・SNマスタ1112を用いて、発信元のローカルマスタに至る全てのステッピングノードのSNIDを得る。同様に、SNサーバマスタ1110を用いて、目的のサーバに至る全てのステッピングノードのSNID、そしてそれに対応する仮想サーバIDXを得る。それら複数の始点と終点の組み合わせを作成した後、夫々の組み合わせにおいて最適な経路情報を作成する。そして、別途ステッピングノードから報告されるトラフィック情報等に基づいて、最適な経路情報を選択する。
なお、構成が単純なLANにおいては、複数の経路情報を予め作成しておき、ローカルマスタから経路情報の要求があった時に、最適な経路情報を読み出して返信する、という方法もある。
【0127】
経路テーブル1114は、SSIDと、仮想サーバIDXと、仮想IPアドレスと、サーバ名又はサーバのIPアドレスと、プロトコル種別と、ポート番号と、経路情報の組よりなるテーブルである。
【0128】
端末が個人認証を完遂した後、サービスメニュー情報614を要求すると、認証処理部1103は、端末から送信されたSSIDでSSIDテーブル1113を検索し、対応するユーザIDを取得する。次に、認証処理部1103はこのユーザIDでユーザサーバマスタ1108を検索し、当該ユーザが利用可能なサーバ103の仮想サーバIDXの一覧を作成する。そして、この仮想サーバIDXの一覧情報を検索キーとしてサーバマスタ1107を検索し、当該ユーザが利用可能なサーバ103を利用するために必要な情報を形成する。更に、経路設定部1104に問い合わせて、現時点で最適な経路情報を算出し、サーバマスタ1107の検索結果に追加する。これがサービスメニュー情報614である。
【0129】
図11及び図12では図示していないが、サービスメニュー情報614は、SSIDと、仮想サーバIDXと、仮想IPアドレスと、サーバ名又はサーバのIPアドレスと、プロトコル種別と、ポート番号と、端末用リソース文字列の組よりなるテーブルである。
【0130】
コンダクタ115は、端末(プレイヤ111)のサービスメニュー情報取得要求に呼応して、サービスメニュー情報614を形成する。形成したサービスメニュー情報614は、一旦経路テーブル1114に記憶する。この時、経路情報は空欄のままにする。そして、要求元の端末にサービスメニュー情報614を返信する。
次に、コンダクタ115は、ローカルマスタの経路情報取得要求に呼応して、経路設定部1104を稼働させ、経路情報を作成する。ローカルマスタはSSIDと仮想サーバIDXを送信してくるので、この仮想サーバIDXを検索キーとして当該サーバに隣接するステッピングノードを検索すると共に、SSIDを検索キーとしてSSIDテーブル1113を検索して機器特定ID608を取得し、機器特定ID608を検索キーとしてLM・SNマスタ1112を検索してローカルマスタに隣接するステッピングノードを検索する。SNマップマスタ1111を用いて、最適な経路情報を算出したら、経路テーブル1114の経路情報フィールドに当該経路情報を書き込むと共に、ローカルマスタに返信する。
【0131】
ローカルマスタがVPCトンネルの作成を要求するコマンドを送信すると、当該コマンドに含まれている経路情報に基づいて、当該経路情報に存在するステッピングノードに静的NATが設定される。そして、当該コマンドがサーバ直近のステッピングノードに到達したら、当該ステッピングノードはコンダクタ115に対して再度の認証と、サーバの諸元を示す情報を要求する。コンダクタ115は当該ステッピングノードがリバースプロキシを設定するために必要な情報である、サーバのホスト名又はIPアドレス、プロトコル種別、ポート番号を返信する。
なお、コンダクタ115は、ローカルマスタが発する問い合わせと、サーバ直近のステッピングノードが発する問い合わせとを区別するため、当該問い合わせの中にSNIDが含まれているか否かを確認する。
問い合わせにSNIDがなければローカルマスタが発する問い合わせであるので、経路情報を返信する。
問い合わせにSNIDがあればサーバ直近のステッピングノードが発する問い合わせであるので、サーバのホスト名又はIPアドレス、プロトコル種別、ポート番号を返信する。
【0132】
これまでの説明で明らかなように、コンダクタ115は、ローカルマスタに対して機器認証と個人認証の二重の認証を行い、ローカルマスタとの間にコントロールセッションを形成する。そして、端末を操作するユーザにサーバ103との接続を実現するために、端末の要求に応じて、ローカルマスタから適切なステッピングノードを経由して目的のサーバ103に到達するための経路情報を形成し、ローカルマスタに送信する。
また、VPCトンネルを形成する手順においては、VPCトンネルの始端であるローカルマスタと、終端に位置するステッピングノードに、それぞれSSID認証を行う。ローカルマスタのSSID認証が成功したら、経路情報をローカルマスタに送信する。ステッピングノードのSSID認証が成功したら、リバースプロキシを設定してサーバ103に接続するための、サーバ103の情報をステッピングノードに送信する。
【0133】
[動作の概略]
図13以降、図19を除いて図21迄は、本実施形態のネットワークシステム101において、端末がネットワーク的に遠隔に配置されるサーバ103に接続して、サーバ103の資源が利用可能になり、その後サービスを終了する迄の動作の流れを示すタイムチャートである。
先ず、動作の流れの概要を説明する。
図13は、本実施形態のネットワークシステム101の、全体的な動作の流れを示すタイムチャートである。
ローカルマスタは、起動すると、直ちにコンダクタ115に対してコントロールセッションを通じて機器特定ID608の認証を試みる。これが機器特定ID認証シーケンス(S1301)である。
端末のプレイヤ111は、ローカルマスタが機器特定ID認証シーケンスで機器特定ID608の認証に成功すると、ログイン画面を表示部206に表示する。ユーザはこの状態から、個人認証を実行する。個人認証情報はコントロールセッションを通じてコンダクタ115に送信され、認証結果が端末のプレイヤ111に返送される。これが個人認証シーケンス(S1302)である。
個人認証シーケンスが正常終了すると、プレイヤ111は直ちにサービスメニュー情報614を取得すべく、コントロールセッションを通じてコンダクタ115に要求する。コンダクタ115は、サービスメニュー情報614と制限設定情報610をプレイヤ111に返信する。これがメニュー取得シーケンス(S1303)である。
【0134】
ユーザが端末の画面に表示されているアイコンをクリックする等の操作を実行すると、アイコンに埋め込まれているコマンドライン文字列に記述されているアプリケーションプログラムが実行される。アプリケーションプログラムは、ローカルマスタに接続要求パケット(TCP SYNパケット)を送信する。ローカルマスタはこの接続要求パケットを確認すると、コントロールセッションを通じてコンダクタ115に対して経路情報を要求する。コンダクタ115は経路情報をローカルマスタに返信する。コンダクタ115は受信した経路情報を含むVPC確立要求コマンドを作成し、コントロールセッションを通じて経路情報に従ってステッピングノードに送信する。最後のステッピングノードを除く、経路情報に記述されているステッピングノードはVPC確立要求コマンドを転送すると共に、VPC、つまりデータセッションを形成するための静的NATを設定する。経路情報に記述されている最後のステッピングノードは、自らが経路情報の最後に位置するステッピングノードであることを認識すると、コンダクタに対して接続するサーバに関する情報を問い合わせて、コンダクタからサーバのIPアドレス、ポート番号、プロトコル種別を取得する。そして、これら情報に基づいて、適切なリバースプロキシを実行する。そして、端末が発した接続要求パケットが経路情報に記述されている最後のステッピングノードによってサーバ103に到達する。サーバ103が返信する応答パケットは、仮に形成されたVPCトンネルを確定させて、端末に到達する。これがVPC確立シーケンス(S1304)である。
VPC確立シーケンスが遂行された後は、形成されたVPCトンネルを用いて端末とサーバ103が仮想的な接続状態の中で通信を実行する。これがVPCデータ転送状態(S1305)である。
【0135】
VPCトンネルの破棄は、基本的に端末の能動的な終了を示す情報の送信によって行われる。これがVPC切断シーケンス(S1306)である。
ユーザが端末の使用を停止したい場合は、ログアウトを宣言する。ログアウトの宣言はコントロールセッションを通じてコンダクタ115に送信され、端末に返送される。これがユーザログアウトシーケンス(S1307)である。
端末を通じてローカルマスタBOX109の電源を落とすか、ソフトローカルマスタ113がインストールされている端末をシャットダウンする等でローカルマスタの動作を終了させると、その情報はコンダクタ115に通知される。これがローカルマスタシャットダウン(S1308)である。
【0136】
[機器特定ID認証シーケンス]
図14は、機器特定ID認証シーケンスのタイムチャートである。図13のステップS1301の詳細である。
ローカルマスタは、起動して(S1401)、LAN102と接続されてIPリーチャブルになったことを認識すると、直ちにコンダクタ115に対してコントロールセッションを通じて機器特定ID608の認証要求を送信する(S1402)。
ローカルマスタは、コンダクタ115のアドレスを直接的には知らない。しかし、コンダクタ115に通信を行う際、どのIPリーチャブルなステッピングノードに通信を試みればよいのかを示す、「デフォルトゲートウェイ」のホスト名或はIPアドレスを内部に保持している。本実施形態では、デフォルトゲートウェイは第一SN107である。そこで、ローカルマスタは第一SN107にコンダクタ115に対する機器認証要求を、コントロールセッションを通じて送信する。
【0137】
第一SN107はローカルマスタから機器特定ID608の認証要求を受信すると、それがコンダクタ115に対する要求であることをコントロールセッション管理部609が認識する。そして、デフォルトゲートウェイアドレス612に記されているステッピングノード(本実施形態では第二SN108)に、機器特定ID608の認証要求を転送する(S1403)。
【0138】
第二SN108は、コンダクタ115とIPリーチャブルである。このため、ローカルマスタBOX109や第一SN107とは異なり、「デフォルトゲートウェイ」の代わりに、コンダクタアドレス908にコンダクタ115のホスト名或はIPアドレスを保持している。
第二SN108も第一SN107と同様に、第一SN107から機器特定ID608の認証要求を受信すると、コンダクタアドレス908に記されているコンダクタ115に、機器特定ID608の認証要求を転送する(S1404)。こうして、コンダクタ115はローカルマスタが送信した機器特定ID608の認証要求を受信する。
【0139】
コンダクタ115は、第二SN108から受信したローカルマスタの機器特定ID608で機器特定IDマスタ1105を検索し、当該機器特定ID608が正規のローカルマスタを示す情報であるか否か、確認する(S1405)。検索結果(機器特定ID認証結果)は直前に受信した相手、つまり第二SN108へ返信する(S1406)。
第二SN108のコントロールセッション管理部609は、コンダクタ115から受信した機器特定ID認証結果を第一SN107に転送する(S1407)。
第一SN107のコントロールセッション管理部609は、第二SN108から受信した機器特定ID認証結果をローカルマスタに転送する(S1408)。
ローカルマスタは、第一SN107から受信した機器特定ID認証結果を見て、正常に認証が行われたか否かを確認する(S1409)。正常に認証できなかった場合(S1409のNO)は異常終了となり、以降の操作は不可能になる(S1410)。正常に認証できた場合(S1409のYES)は、ローカルマスタのコントロールセッション管理部609は、機器特定ID認証結果に含まれているSSIDをSSIDメモリ613に記憶する(S1411)。
【0140】
一方、端末のプレイヤ111は起動すると(S1412)、ローカルマスタに対してSSIDの転送を要求する。
ローカルマスタがSSIDをコンダクタ115から取得して記憶していない状態では、SSIDの転送要求は失敗する(S1413)が、ローカルマスタがSSIDをコンダクタ115から取得して記憶した以降では、SSIDの転送要求(S1414)に対して、ローカルマスタはSSIDメモリ613に格納されているSSIDを読み出して(S1415)、端末に応答する(S1416)ので、プレイヤ111はSSIDを受信し(S1417)、これを記憶する(S1418)。
なお、ソフトローカルマスタ113の場合、SSIDメモリ613はプレイヤ111と共用することとなるので、ステップS1417及びS1418は省略される。
プレイヤ111は、SSIDの取得が正常に終了できたことに呼応して、表示部206にログイン画面を表示する(S1419)。
以上が、機器特定ID認証シーケンスである。
【0141】
機器特定ID認証シーケンスが正常終了すると、これ以降はローカルマスタが機器特定ID608を送信する代わりに、SSIDでローカルマスタを特定することができる。機器特定ID608は固定であるが、SSIDはローカルマスタが起動する度に変化するので、セキュリティの向上に寄与する。
【0142】
[個人認証シーケンス及びメニュー取得シーケンス]
図15(a)及び(b)は、個人認証シーケンスとメニュー取得シーケンスのタイムチャートである。図16は、メニュー取得シーケンスのタイムチャートである。図13のステップS1302とステップS1303の詳細である。
図15(a)は、個人認証シーケンスを示す。
ユーザは端末のICカードリーダ104或はキーボード等を操作して、ユーザID及びパスワード等の、個人認証情報を入力する。個人認証情報はSSIDを伴って、プレイヤ111によってコントロールセッションを通じてローカルマスタに転送される(S1501)。
プレイヤ111から個人認証情報及びSSIDを受信したローカルマスタは、デフォルトゲートウェイアドレス612に従って第一SN107に転送する(S1502)。
ローカルマスタから個人認証情報及びSSIDを受信した第一SN107は、デフォルトゲートウェイアドレス612に従って第二SN108に転送する(S1503)。
第一SN107から個人認証情報及びSSIDを受信した第二SN108は、コンダクタアドレス908に従ってコンダクタ115に転送する(S1504)。
【0143】
第二SN108から個人認証情報及びSSIDを受信したコンダクタ115は、個人認証情報でユーザマスタ1106を検索し(S1505)、検索結果(ユーザID認証結果)を直前に受信した相手、つまり第二SN108へ返信する(S1506)。そして、ユーザID認証結果が正常であれば、SSIDテーブル1113にユーザIDを記述する(S1507)。
第二SN108は、コンダクタ115から受信したユーザID認証結果を第一SN107に転送する(S1508)。
第一SN107は、第二SN108から受信したユーザID認証結果をローカルマスタに転送する(S1509)。
ローカルマスタは、第一SN107から受信したユーザID認証結果を端末に転送する(S1510)。
【0144】
端末のプレイヤ111は、ローカルマスタから受信したユーザID認証結果を見て、正常に認証が行われたか否かを確認する(S1511)。正常に認証できなかった場合(S1511のNO)は表示部206にエラーメッセージを表示した(S1512)後、再びログイン画面を表示する(図14のS1419)。
正常に認証できた場合(S1511のYES)は、メニュー取得シーケンスに移行する。
以上が、個人認証シーケンスである。
【0145】
個人認証シーケンスが正常終了すると、これ以降は(ステップS1507において)ユーザIDとSSIDの紐付けが行われたこと、つまり「誰がどの端末を使用しているのか」が明らかになったことを意味する。したがって、SSIDの認証を行うと、機器の特定と個人認証も同時に実行出来ることとなる。個人認証情報は固定であるが、SSIDはローカルマスタが起動する度に変化するので、セキュリティの向上に寄与する。
【0146】
図15(b)及び図16は、メニュー取得シーケンスを示す。
端末のプレイヤ111は、ローカルマスタから受信したユーザID認証結果を見て、正常に認証が行われたか否かを確認した結果(S1511)、正常に認証できた場合(S1511のYES)は、最初にコンダクタ115に対してコントロールセッションを通じてSSIDの認証を要求する(S1513)。
SSID認証要求は、ローカルマスタ(S1514)、第一SN107(S1515)、第二SN108(S1516)と転送されて、コンダクタ115に到達する。コンダクタ115は受信したSSIDでSSIDテーブル1113を検索し(S1517)、検索結果(SSID認証結果)を直前に受信した相手、つまり第二SN108へ返信する(S1518)。
コンダクタ115から返信されるSSID認証結果は、第二SN108(S1519)、第一SN107(S1520)、ローカルマスタ(S1521)と転送されて、端末のプレイヤ111に戻される。
端末のプレイヤ111は、ローカルマスタから受信したSSID認証結果を見て、正常に認証が行われたか否かを確認する(S1522)。正常に認証できなかった場合(S1522のNO)は表示部206にエラーメッセージを表示した(S1523)後、再びログイン画面を表示する(図14のS1419)。
【0147】
図16を参照して、メニュー取得シーケンスの説明を続ける。
ステップS1511で、正常に認証できた場合(S1511のYES)は、プレイヤ111はコンダクタ115に対してサービスメニュー情報614の送信を要求する(S1624)。
プレイヤ111が送信するサービスメニュー情報要求は、ローカルマスタ(S1625)、第一SN107(S1626)、第二SN108(S1627)と転送されて、コンダクタ115に到達する。コンダクタ115はSSIDテーブル1113とユーザサーバマスタ1108とサーバマスタ1107を検索し(S1628)、検索結果(サービスメニュー情報614)を直前に受信した相手、つまり第二SN108へ返信する(S1629)。なお、この時、ユーザマスタ1106から制限設定情報610も読み出して、サービスメニュー情報614と共に返信する。
コンダクタ115から返信されるサービスメニュー情報614と制限設定情報610は、第二SN108(S1630)、第一SN107(S1631)と転送される。
【0148】
ローカルマスタは、第一SN107からサービスメニュー情報614と制限設定情報610を受信すると、内部に記憶して、端末に転送する(S1632)。そして、サービスメニュー情報614と制限設定情報610に基づいて種々の設定を行う(S1633)。
端末のプレイヤ111は、ローカルマスタからサービスメニュー情報614と制限設定情報610を受信すると、内部に記憶する(S1634)。そして、サービスメニュー情報614と制限設定情報610に基づいて種々の設定を行う(S1635)。
【0149】
ステップS1624からステップS1635迄の動作(P1636)は、サービスに対応するプロトコル毎に繰り返して実行される(P1637)。例えば、ユーザが利用可能なプロトコルがRDPとHTTPである場合は、先ずRDPについて手順P1636が実行された後、次にHTTPについて手順P1636が実行される。
ユーザが享受できる全てのサービスに対応するサービスメニュー情報614の取得が完遂すると、端末はメニューを表示部206に表示する(S1638)。
以上が、メニュー取得シーケンスである。
【0150】
[VPC確立シーケンス及びVPCデータ転送状態]
図17は、VPC確立シーケンスのタイムチャートである。図18は、VPC確立シーケンスとVPCデータ転送状態のタイムチャートである。図13のステップS1304とステップS1305の詳細である。
ユーザは端末のプレイヤ111の専用シェル208によって形成され、表示部206に表示されているアイコンを操作して、アプリケーションプログラムを起動すると、アプリケーションプログラムからTCP SYNパケットが発生する(S1701)。ローカルマスタのパケット監視部615は、TCP SYNパケットを捕捉すると、TCP SYNパケットの宛先IPアドレス及びポート番号から、アプリケーションプログラムが要求するサーバ103とプロトコルを判別する。そして、コンダクタ115に対して経路情報の取得を要求する。但し、経路情報の取得に先立って、認証が必要であるので、先ずはコンダクタ115に対し、SSID認証を要求する(S1702)。
【0151】
ステップS1702において、ローカルマスタのパケット監視部615は、TCP SYNパケットの宛先IPアドレス及びポート番号から、アプリケーションプログラムが要求するサーバ103とプロトコルを判別する必要がある。したがって、サービスメニュー情報614に列挙されるサービスの各レコードは、宛先IPアドレス及びポート番号の組み合わせにおいて一意でなければならない。ある一つのプロトコルで複数のサーバが提供するサービスをユーザに提供する場合は、仮想IPアドレスを異ならせるか、可能であればポート番号を異ならせることによって、サービスメニュー情報614の各レコードの一意性を確保する。
【0152】
ローカルマスタから発されるSSID認証要求は、第一SN107(S1703)、第二SN108(S1704)と転送され、コンダクタ115に到達する。コンダクタ115はSSIDテーブル1113を検索し(S1705)、SSID認証結果を返信する(S1706)。SSID認証結果は、第二SN108(S1707)、第一SN107(S1708)と転送され、ローカルマスタに到達する。
ローカルマスタは、SSID認証結果が異常値であれば(S1709のNO)、端末にその旨を報告する。この場合、端末は表示部206にエラーを表示する(S1710)。
SSID認証結果が正常値であれば(S1709のYES)、ステップS1702から始まったSSID認証シーケンスは終了する。
【0153】
ローカルマスタは、SSID認証シーケンスが正常終了したことを認識すると、次にコンダクタ115に対して目的とするサーバ103への経路情報の取得を要求する(S1711)。
ローカルマスタから発される経路情報取得要求は、第一SN107(S1712)、第二SN108(S1713)と転送され、コンダクタ115に到達する。
コンダクタ115の経路設定部1104は、ダイクストラ法等の周知の経路探索アルゴリズムを用いて、ローカルマスタからサーバに到達するための経路情報を作成し、返信する(S1715)。経路情報は、第二SN108(S1716)、第一SN107(S1717)と転送され、ローカルマスタに到達する。ローカルマスタは、受信した経路情報を一旦RAMに記憶する(S1718)。この時点で、ステップS1711から始まった経路情報取得シーケンスは終了する。
【0154】
図18を参照して、VPC確立シーケンスの説明を続ける。
ローカルマスタは、コンダクタ115から受信した経路情報を基に、VPC確立要求コマンドを作成し、経路情報に基づいて最初のステッピングノードである第一SN107に送信する(S1819)。
【0155】
第一SN107は、ローカルマスタからVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードでないことが判ったら、ローカルマスタと経路情報の隣に位置する第二SN108との間に静的NATを設定する。そして、経路情報に基づいて最初のステッピングノードである第二SN108に送信する(S1820)。
【0156】
第二SN108は、第一SN107からVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードでないことが判ったら、第一SN107と経路情報の隣に位置する第三SN112との間に静的NATを設定する。そして、経路情報に基づいて最初のステッピングノードである第三SN112に送信する(S1821)。
【0157】
第三SN112は、第二SN108からVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードでないことが判ったら、第二SN108と経路情報の隣に位置する第四SN114との間に静的NATを設定する。そして、経路情報に基づいて最初のステッピングノードである第四SN114に送信する(S1822)。
【0158】
第四SN114は、第三SN112からVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードであることが判ったら(S1823)、VPC確立要求コマンドに含まれているSSIDを用いて、コンダクタ115に対し、SSID認証を要求する(S1824)。
【0159】
第四SN114から発されるSSID認証要求は、第三SN112(S1825)によって転送され、コンダクタ115に到達する。コンダクタ115はSSIDテーブル1113を検索し(S1826)、SSID認証結果を返信する(S1827)。SSID認証結果は、第三SN112(S1828)によって転送され、第四SN114に到達する。
第四SN114は、SSID認証結果が異常値であれば(S1829のNO)、異常終了する(S1830)。この場合、ステップS1820において第一SN107が、ステップS1821において第二SN108が、そしてステップS1822において第三SN112が設定したNAT設定は、NAT設定の際に同時に設定したタイマがタイムアウトを計時することによって消滅する。
SSID認証結果が正常値であれば(S1829のYES)、次にコンダクタ115に対して、目的とするサーバ103に対してリバースプロキシを設定するために必要な情報である、サーバ103のIPアドレス、ポート番号及びプロトコル種別を要求する(S1831)。
第四SN114から発されるサーバ情報要求は、第三SN112(S1832)によって転送され、コンダクタ115に到達する。
コンダクタ115の経路設定部1104は、サーバ情報要求を受信すると、サーバ情報要求に含まれている仮想サーバIDXを用いて経路テーブル1114を検索して、サーバ103のIPアドレス、ポート番号及びプロトコル種別を第四SN114へ返信する(S1834)。
コンダクタ115が送信するサーバ情報は、第三SN112(S1835)によって転送され、第四SN114に到達する。
第四SN114は、サーバ103のIPアドレス、ポート番号及びプロトコル種別を用いて、第三SN112とサーバ103との間にリバースプロキシを設定する(S1836)。そして、サーバ103のホスト名又はIPアドレス、そしてポート番号に対し、TCP SYNパケットを送信する(S1837)。
こうして、図17のステップS1701において端末のアプリケーションプログラムが発したTCP SYNパケットは、ステップS1838にてサーバ103に到達する。
【0160】
第四SN114からTCP SYNパケットを受信したサーバ103は、VPC等とは一切関係なく、周知のTCPの3ウェイハンドシェイクに則り、TCP ACK+SYNパケットを、第四SN114へ返信する(S1826)。TCP ACK+SYNパケットは、第四SN114、第三SN112、第二SN108、第一SN107及びローカルマスタに仮に設定されている、データセッション(VPCトンネル)を通過する(S1839からS1845へ)。
【0161】
第四SN114のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当するリバースプロキシに設定されているタイマを停止し、ステップS1836にて仮に実行したリバースプロキシを確定させる(S1840)。
【0162】
第三SN112のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当する静的NATに設定されているタイマを停止し、ステップS1822にて仮に実行した静的NATを確定させる(S1841)。
【0163】
第二SN108のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当する静的NATに設定されているタイマを停止し、ステップS1821にて仮に実行した静的NATを確定させる(S1842)。
【0164】
第一SN107のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当する静的NATに設定されているタイマを停止し、ステップS1820にて仮に実行した静的NATを確定させる(S1843)。
【0165】
ローカルマスタのパケット監視部615は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をコントロールセッション管理部609に報告する。コントロールセッション管理部609は、該当する静的NATを確定させる(S1844)。
この時点で、端末とサーバ103の間に存在する、ローカルマスタ、第一SN107、第二SN108、第三SN112及び第四SN114が形成するVPCトンネルが確定する(S1846)。
【0166】
端末は、サーバ103からVPCトンネルを介して返信されたTCP ACK+SYNパケットを受信すると、周知のTCPの3ウェイハンドシェイクに則り、TCP ACKパケットを、VPCトンネルを介してサーバ103へ返信する(S1845)。これ以降は、端末はTCP/IP第四層(アプリケーション)に従う処理でVPCトンネルを介してサーバ103にアクセスし(S1847)、サーバ103も同様にクライアントのアクセスに応答する(S1848)。
【0167】
図19は、VPC確立シーケンスに流れるパケット及びVPC確立要求コマンドの概要を示す概略図である。
第一端末105から送信されるTCP SYNパケットは、データセッションで送信される。
ローカルマスタBOX109は、TCP SYNパケットを受信すると、VPC確立要求コマンドを作成して、コントロールセッションを通じて第一SN107に送信する。
VPC確立要求コマンドに含まれている経路情報は、ステッピングノードのホスト名又はIPアドレスで構成される。
VPCトンネルを形成するステッピングノードの最終地点である第四SN114は、コントロールセッションで受信したVPC確立要求コマンドを受けると、データセッションからサーバ103に向けてTCP SYNパケットを送信する。
TCP SYNパケットを受信すると、サーバ103はデータセッションを通じてTCP ACK+SYNパケットを返信する。このTCP ACK+SYNパケットは、各ステッピングノードに既に仮に形成されているリバースプロキシ及び静的NATで成り立つデータセッション、つまりVPCトンネルを通過して、第一端末105に到達する。そして、このTCP ACK+SYNパケットが、仮設定状態である各ステッピングノードのリバースプロキシ又は静的NATを確定させる。
【0168】
図17、図18及び図19を見て判るように、本実施形態のネットワークシステムは、周知のTCPの3ウェイハンドシェイクの、最初のTCP SYNパケットの転送に介在する。
ローカルマスタがTCP SYNパケットを検出すると(S1702)、SSID認証シーケンス(S1702からS1709まで)の後、コンダクタ115に経路情報を要求する(S1711)。
すると、コンダクタ115はその時点で最良の経路情報を作成し(S1714)、ローカルマスタに送信する(S1715)。
ローカルマスタは経路情報を含んだVPC確立コマンドを、経路情報の最初に記述されているステッピングノードに送信する(S1819)。
VPC確立コマンドを受信した、経路情報の最後でないステッピングノードは、コマンドに含まれている経路情報に従って、当該コマンドを次のステッピングノードに転送すると共に、データセッションに静的NATを設定する(S1820、S1821、S1822)。
VPC確立コマンドを受信した、経路情報の最後に位置するステッピングノードは、自らが経路情報の最後であることを認識すると(S1823)、VPC確立コマンドに含まれているSSIDを用いてSSID認証シーケンス(S1824からS1829まで)を実行した後、コンダクタ115にサーバ情報を要求する(S1831)。すると、コンダクタ115はサーバ情報を検索し(S1833)、経路情報の最後に位置するステッピングノードに送信する(S1834)。
経路情報の最後に位置するステッピングノードはサーバ情報に基づいてリバースプロキシを設定して(S1836)、当該サーバにTCP SYNパケットを送信する(S1837)。
【0169】
従来技術のVPN製品では、アプリケーションプログラムに介在する形式で、ユーザ認証を行い、VPNのトンネルを形成する。このため、VPN接続したいアプリケーションプログラムが増えれば、そのプログラムに対応する個人認証のためのプログラム等を別途用意する必要がある。
しかし、本実施形態のネットワークシステムでは、機器認証及び個人認証と、VPCトンネルを形成する手順が完全に分離している。最初の認証手順で機器認証及び個人認証が成功すれば、その後はサービスメニュー情報614に列挙されているサーバに接続するアプリケーションプログラムは、何ら特別なプログラムを伴う必要もなく、単に指定されたコマンドライン文字列に記述されているリソースに対してアクセスを行えばよい。VPC確立シーケンスではSSIDを用いた認証が、VPCトンネルの始端であるローカルマスタと、終端に位置するステッピングノードで実行されるが、ユーザもアプリケーションプログラムも全くこれを意識する必要はない。
【0170】
[VPC切断シーケンス]
図20は、VPCトンネルを通過する通信のプロトコルがコネクション型の通信である場合における、VPC切断シーケンスを示すタイムチャートである。図13のステップS1306の詳細である。
VPCトンネルを通過させる通信のプロトコルが、HTTPのようなコネクションレス型の場合は、TCP FINパケットも含めて全てのパケットを滞り無く転送させる必要があるが、RDPやSSHのようなコネクション型の場合は、TCP FINパケットが送信されるとアプリケーションプログラムが終了したことを意味する。つまり、切断のための専用のコマンドをコントロールセッションを通じて送らずとも、通常のTCPにおける通信終了の手続きをモニタして、VPCトンネルの終了のきっかけにすることができる。
ユーザが端末のアプリケーションプログラムを操作して通信を終了させると、アプリケーションプログラムは周知のTCPにおける通信終了の手続きを行う(S2001)。この時にアプリケーションプログラムが送信するTCP FINパケットがローカルマスタに到達すると、ローカルマスタもTCPにおける通信終了の手続きを行う(S2002)。ローカルマスタは、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2003)。
【0171】
ローカルマスタは、第一SN107に対してもTCPにおける通信終了の手続きを行う。この時にローカルマスタが送信するTCP FINパケットが第一SN107に到達すると、第一SN107もTCPにおける通信終了の手続きを行う(S2004)。第一SN107は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2005)。
【0172】
第一SN107は、第二SN108に対してもTCPにおける通信終了の手続きを行う。この時に第一SN107が送信するTCP FINパケットが第二SN108に到達すると、第二SN108もTCPにおける通信終了の手続きを行う(S2006)。第二SN108は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2007)。
【0173】
第二SN108は、第三SN112に対してもTCPにおける通信終了の手続きを行う。この時に第二SN108が送信するTCP FINパケットが第三SN112に到達すると、第三SN112もTCPにおける通信終了の手続きを行う(S2008)。第三SN112は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2009)。
【0174】
第三SN112は、第四SN114に対してもTCPにおける通信終了の手続きを行う。この時に第三SN112が送信するTCP FINパケットが第四SN114に到達すると、第四SN114もTCPにおける通信終了の手続きを行う(S2010)。第四SN114は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していたリバースプロキシの設定を解除する(S2011)。
サーバ103は、第四SN114が送信するTCP FINパケットに呼応して、通信の終了の手続きを行う(S2012)。
【0175】
[ユーザログアウトシーケンス及びローカルマスタシャットダウン]
図21(a)及び(b)は、ユーザログアウトシーケンス及びローカルマスタシャットダウンを示すタイムチャートである。図13のステップS1307及びステップS1308の詳細である。
ユーザが端末の使用を停止したい場合は、ユーザは端末の専用シェル208を操作して、ログアウトを宣言する(S2101)。ログアウトの宣言はコントロールセッションを通じてコンダクタ115に送信され(S2102)、第一SN107(S2103)及び第二SN108(S2104)にて転送された後、端末に到達する(S2105)。コンダクタ115は、ユーザログアウト処理として、SSIDテーブル1113に記述されている当該ユーザのユーザIDを抹消する(S2105)。つまり、SSIDとユーザIDとの紐付けが解除される。ログアウト処理の完遂報告は、コンダクタ115から送信され(S2106)、第二SN108(S2107)、第一SN107(S2108)、ローカルマスタ(S2109)を経て、端末に到達する(S2111)。
この時、ローカルマスタではユーザログアウトを受けてサービスメニュー情報614及び制限設定情報610を破棄する(S2110)。
同様に、端末のプレイヤ111はユーザログアウトを受けてサービスメニュー情報614及び制限設定情報610を破棄する(S2112)。
【0176】
端末を通じてローカルマスタBOX109の電源を落とすか、ソフトローカルマスタ113がインストールされている端末をシャットダウンする等でローカルマスタの動作を終了させると(S2113)、その情報は第一SN107(S2114)及び第二SN108(S2115)を通じてコンダクタ115に通知される。コンダクタ115は、この通知を受けて、SSIDテーブル1113のSSIDを抹消する(S2116)。
【0177】
以上の説明から解るように、本実施形態のネットワークシステム101では、端末のアプリケーションプログラムがサーバ103へ接続しようとすると、初めてコントロールセッションとは異なるポートでデータセッションを形成する。端末が接続しようとするサーバが異なれば、その都度異なるデータセッションが形成される。コンダクタ115がユーザ毎に利用できるサーバ103の資源を経路テーブル1114で管理しているので、データセッションの重複等の事故を引き起こすことなく、多数のユーザに対して容易に仮想接続サービスを提供することができる。
【0178】
本実施形態は、以下のような応用例が可能である。
(1)コンダクタ115の機器特定IDマスタ1105及びユーザマスタ1106は、コンダクタ115とは異なるサーバ103に置いて、ネットワークを通じて認証処理部1103が参照してもよい。
【0179】
(2)ローカルマスタが複数のコンダクタ115に対して同時にアクセスすることもできる。この場合、ローカルマスタは後から接続するステッピングノードに対して、個人認証を完了した直後に、既に先に接続済みのステッピングノードで割り当て済みの端末用ターゲットアドレスを報告し、それぞれのステッピングノードで端末用ターゲットアドレスが重複しないように調停する必要がある。
【0180】
(3)ソフトローカルマスタ113の機能構成を、ローカルマスタBOX109と同等の構成にすることができる。
図7のソフトローカルマスタ113は、ループバック仮想NIC701をVPCを用いたアクセスに用いていたが、ループバック仮想NIC701の代わりに、図6のローカルマスタBOX109の第二NIC601のように、ソフトウェアで構成するNICに代えることができる。このようなソフトウェアのNICは、Windows(登録商標)の場合、非特許文献1に開示されているソフトウェア製品の他、TAP−Win32(http://cipe-win32.sourceforge.net/)等、公知のプログラムが幾つか存在する。Linux(登録商標)の場合、カーネルのドライバに「Universal TUN/TAP device driver」という名称で備わっている。
【0181】
(4)端末が据え置き型であり、LAN102から移動する可能性が極めて低い場合は、プレイヤ111のAPIフック処理部813を稼働させて、端末の挙動を制限しなくても良い。この場合、ネットワークシステム101にとって、プレイヤ111は、サービスメニュー情報614を保持し、専用シェル208を起動する機能が求められる。
【0182】
(5)ステッピングノードは、自身が接続されているネットワーク上にIPリーチャブルなサーバが存在しない場合は、リバースプロキシを起動する機能を持たなくても良い。
【0183】
本実施形態では、ネットワークドライバ806と、これに使用する静的NAT形成装置(ローカルマスタBOX109、ソフトローカルマスタ113)、端末管理装置(プレイヤ111)、リバースプロキシサーバ(ステッピングノード)、仮想ネットワーク接続制御装置(コンダクタ115)を開示した。
ローカルマスタBOX109或はソフトローカルマスタ113とステッピングノードがコントロールセッションを通じて機器認証及び個人認証を実行した後、端末のアプリケーションプログラムがコンダクタ115の先に存在するプライベートネットワーク内のサーバ103に対する接続を要求したら、ローカルマスタBOX109或はソフトローカルマスタ113及び経路途中のステッピングノードは静的NATを、サーバ103直近のステッピングノードはリバースプロキシを設定して、端末とサーバ103との間にデータセッションを形成する。このようにネットワークシステム101を構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、直接的にはIPリーチャブルでない端末とサーバ103との接続が実現できる。更に、接続の際にはプレイヤ111が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
【0184】
一般的に、サーバを構成する際のBSDソケットプログラミングの作法は、クライアントの接続を待機するポートを開けて、クライアントが接続してきたら、次のクライアントの接続を待つために再度ポートを開ける、という作法である。つまり、サーバは常時特定のポートが開いていることとなる。ポートが開けっ放しである、ということは、悪意ある第三者がそのポートを通じて当該サーバプログラムの脆弱性を探査するきっかけになり得る。
【0185】
発明者は、ステッピングノードが擁する複数のプロトコルに対応する複数のリバースプロキシプログラムに存在するかもしれない脆弱性を、第三者から突かれる可能性を排除するために、常時開けるポートと実際に端末とデータとを接続するポートを別にした。ステッピングノードが形成するデータセッションは、本来のBSDソケットプログラミングにおけるサーバの作法とは異なり、データセッションが確立しても同じデータセッションに該当するポートは開かない。あくまでも端末から接続要求がない限り、データセッションは形成されないし、そのためのポートも開くことはない。第三者がステッピングノードをポートスキャンすると、コントロールセッションのためのポートしか開いていないように見える。
【0186】
更に、本実施形態に係るネットワークシステム101に接続されるローカルマスタには、各ローカルマスタを一意に識別するための機器特定ID608が与えられている。この機器特定ID608は、IPアドレスとは別であり、コントロールセッションで認証情報としてのみ使用される。
ここで翻って、本実施形態のネットワークシステム101のデータセッションに流れるパケットについて考察し、説明する。
【0187】
端末から発されるパケットは、ソフトローカルマスタ113の場合、送信元IPアドレスはループバックアドレス(127.0.0.1)であり、送信先IPアドレスはループバックアドレスが属するクラスCのサブネットに含まれるアドレス(127.0.0.x)である。ローカルマスタBOX109の場合、送信元IPアドレスはプライベートアドレス(一例として192.168.0.1)であり、送信先IPアドレスはプライベートアドレスが属するクラスCのサブネットに含まれるアドレス(192.168.0.x)である。
これらパケットは、ソフトローカルマスタ113又はローカルマスタBOX109で、静的NATによって送信元IPアドレス及び送信先IPアドレス(と、必要であればポート番号も)が書き換えられる。送信元IPアドレスはDHCPサーバからソフトローカルマスタ113又はローカルマスタBOX109に付与されたIPアドレスが、送信先IPアドレスとポート番号は、直近のステッピングノードのIPアドレスとデータセッションのためのポート番号に、それぞれ書き換えられる。
【0188】
更に、これらパケットは、複数のステッピングノードを通過する。パケットは、VPCトンネルを構成するステッピングノードが設定する静的NAT或はリバースプロキシによって、送信元IPアドレス及び送信先IPアドレス(と、必要であればポート番号も)が次々と書き換えられる。最終的にサーバ103に到達するパケットは、送信元IPアドレスはサーバ103に直近のステッピングノードのIPアドレスが、送信先IPアドレスとポート番号は、サーバ103のプライベートアドレスとポート番号に、それぞれ書き換えられる。
このように、通信路を通過するパケットのIPアドレスが拠点を通過する度に次々に書き換えられる状況において、端末の一意性を保証する情報である機器特定ID608は何のために使用されなければならないのかを考えると、機器特定ID608は「端末が当該サーバ103に接続する資格を有する」ことを示す情報である、ということが判る。そして、この情報は必ずしも端末にサービスを提供するサーバ103が抱えていなければならないものではなく、所定の認証を実行できる機器(コンダクタ115)が存在していればよいのである。
【0189】
周知の通り、IPv4はアドレスが枯渇しつつある、という喫緊の問題に直面している。では何故アドレスが枯渇しつつあるのか。一見すれば、IPアドレスのビット数が足りないから、と、普通なら考えるだろう。しかし、もっと根源的な問題は、通信路を行き交うパケットの行き先を決めるIPアドレスに、端末の一意性を求めようとしたことである。IPアドレスはプロトコルとして定められ、パケットに必ず付されるビット列であるから、固定長でなければならず、容易にそのビット列を拡大させるようなことはできない。これがそもそもの間違いの元だった、と、発明者は考えた。
【0190】
端末の一意性を求める情報は、端末の一意性を求める状況、つまり認証行為にのみ使用すればよく、パケットの行き先を定める情報とは明確に区別するべきである。この技術思想に立脚して、発明者は、IPアドレスから端末の一意性を求めることを否定し、IPアドレスはパケットの行き先にのみ使用される情報と割り切って、通信路の仮想化と、認証行為を基に、ネットワークシステムの再構築を試みた。これが、本実施形態である。
【0191】
本実施形態のローカルマスタに含まれる機器特定ID608は、プロトコルとして定められ、パケットのヘッダとして組み込まれているIPアドレスではなく、認証にのみ使用されるデータである。したがって、ネットワークドライバ806の規模や必要に応じて、幾らでもビット列を拡大させたり、フォーマットを変更する等の行為をしても、パケットのフォーマットは変わらないので、全く問題は発生しない。本実施形態において、発明者は試作品を作成した際、機器特定ID608に12バイトを割り当てたが、勿論、もっと長大なビット列にしてもよい。
【0192】
図1を見て判るように、本実施形態のネットワークシステム101は、IPリーチャブルでないサブネット間を、ステッピングノードを辿ることで安全に越える事ができる。この技術を応用すると、隣り合ってさえいなければ、複数の同じサブネットが経路上に存在していても、本実施形態のネットワークシステム101は成立する。つまり、原理的にはプライベートIPアドレスだけでほぼ無限大に広大なネットワークを構築することができる。
以上のように、本実施形態のネットワークシステム101は、IPv4プロトコルの可能性を拡大する技術としての一面も備えている。
【0193】
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【0194】
101…ネットワークシステム、102…LAN、103…サーバ、104…ICカードリーダ、105…第一端末、106…第二端末、107…インターネット、109…ローカルマスタBOX、110…DHCPサーバ、111…プレイヤ、113…ソフトローカルマスタ、115…コンダクタ、201…ネットワークOS、202…シェル、203…第三アプリケーション、204…ストレージ、205…操作部、206…表示部、207…内蔵USBインターフェース、208…専用シェル、209…第一アプリケーション、210…第二アプリケーション、301…内蔵NIC、403…USB−Bコネクタ、404…ネットワークコネクタ、502…CPU、503…RAM、504…フラッシュメモリ、505…USBインターフェース、507…第一NIC、508…バス、601…第二NIC、602…DHCPクライアント、603…アドレス重複回避部、604…DHCPサーバ、605…NAT設定部、606…暗号化通信処理部、608…機器特定ID、609…コントロールセッション管理部、610…制限設定情報、611…パケットフィルタ設定部、612…デフォルトゲートウェイアドレス、613…SSIDメモリ、614…サービスメニュー情報、615…パケット監視部、701…ループバック仮想NIC、702…DHCPクライアント、705…NAT設定部、706…パケットフィルタ設定部、801…操作ドライバ、802…表示制御部、803…ファイルシステム、804…プロセス制御部、805…クリップボードバッファ、806…ネットワークドライバ、807…コントロールセッション管理部、808…操作情報取得部、809…画面キャプチャ処理部、810…ファイルシステム監視部、811…プロセス監視部、812…クリップボード監視部、813…APIフック処理部、901…ステッピングノード、902…第五NIC、904…暗号化通信処理部、905…パケットモニタ、906…第一タイマ、907…第二タイマ、908…コンダクタアドレス、909…コントロールセッション管理部、910…データセッション管理部、911…第一リバースプロキシ、912…第二リバースプロキシ、913…第三タイマ、914…第一NAT、915…SNID、1001…ステッピングノード、1002…第三NIC、1003…第四NIC、1004…ファイアウォール、1101…第六NIC、1102…暗号化通信処理部、1103…認証処理部、1104…経路設定部、1105…機器特定IDマスタ、1106…ユーザマスタ、1107…サーバマスタ、1108…ユーザサーバマスタ、1109…SNマスタ、1110…SNサーバマスタ、1111…SNマップマスタ、1112…LM・SNマスタ、1113…SSIDテーブル、1114…経路テーブル
【技術分野】
【0001】
本発明は、静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置に関する。
より詳細には、従来の仮想プライベートネットワーク(Virtual Private Network:以下「VPN」)の問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規な仮想プライベートネットワークシステムに使用する静的NAT形成装置、リバースプロキシサーバ、そして仮想接続制御装置に関する。
【背景技術】
【0002】
今日、インターネットから端を発するIPネットワークは、我々の社会生活及び企業活動に必要不可欠な存在である。企業には社屋内にLANが張られており、このLANには企業の機密情報等も含まれるファイルサーバ等のサーバも接続されている。従業員はLANに接続されたパソコン等の端末を用いて、サーバが提供する情報資源を利用して業務を遂行する。一般的に、企業のLANは機密情報を含むサーバ等を守るため、LANのインターネットとの接続点にはファイアウォールが設けられている。こうして、LANは悪意ある第三者がインターネットから容易に企業のLAN内に侵入できないように構成されている。
【0003】
従業員が外出先でもノートパソコン等の端末を用いて企業内LANに接続して業務を遂行したい場合、このファイアウォールが邪魔になる。インターネットからファイアウォールを越えて企業のLANに安全に接続するための技術として、VPNが用いられている。
VPNはその接続形態によって様々な種類があるが、大別すると二通りの技術に分類できる。
一つは、LANの外に存在する端末にLANのサブネットに属するIPアドレスを付与する手法である。
もう一つは、ポートフォワーディング又は静的NAT(Network Address Translation)と呼ばれる手法である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−272771号公報
【非特許文献】
【0005】
【非特許文献1】「PacketiX VPN 入門 - PacketiXVPN の特徴」ソフトイーサ株式会社[2010年3月25日検索]、インターネット<URL:http://www.softether.co.jp/jp/vpn2/introduction/about_vpn.aspx>
【非特許文献2】「特集 : ブロードバンド・ルータ徹底攻略ガイド」アイティメディア株式会社[2010年3月25日検索]、インターネット<URL:http://www.atmarkit.co.jp/fpc/special/bbrouter_desc/portforward_dmz.html>
【非特許文献3】「インターネットごしにsshでサーバ管理をしてみよう −@IT」アイティメディア株式会社[2010年3月25日検索]、インターネット<URL:http://www.atmarkit.co.jp/fnetwork/rensai/tcp27/01.html>
【発明の概要】
【発明が解決しようとする課題】
【0006】
先ず、前者の、LANの外に存在する端末にLANのサブネットに属するIPアドレスを付与する手法について説明する。これは非特許文献1に開示される技術である。
殆どの企業内LANはIPv4のプライベートアドレスを用いている。そこで、LANの外、つまりインターネットに接続されている端末にも企業内LANのサブネットに属するプライベートアドレスを付与する。しかし、端末に備えられているネットワークインターフェースカード(Network Interface Card:以下「NIC」)には、既にインターネットサービスプロバイダ(Internet Service Provider:以下「ISP」)によってグローバルIPアドレスが付与されている。そこで、仮想的なNICをソフトウェアで実現し、これに企業内LANのサブネットに属するIPアドレスを付与する。そして、この仮想NICに対する通信は暗号化してファイアウォールを通過させる。
【0007】
この手法の問題点は、当該端末はLANのサブネットに属していながらファイアウォールで守られていない、インターネットに直に接続している、という点である。つまり、セキュリティ面で非常に問題がある。当該端末は、コンピュータウィルスやワーム、またDoSと呼ばれるサービス不能攻撃等の脅威に晒される。また、情報漏洩の可能性も高い。
更に、ISPが付与するIPアドレスがプライベートアドレスである場合、ISPが付与するIPアドレスと、VPNが付与するIPアドレスが衝突する可能性がある。現在でもケーブルテレビ系列のISPやネットカフェ等の公衆インターネット接続拠点では、端末にプライベートアドレスを付与している。またこれに留まらず、今後IPv4アドレスの枯渇に伴って普及が予測される「キャリアグレードNAT」(http://itpro.nikkeibp.co.jp/article/COLUMN/20080625/309452/)が広く実施されると、IPアドレスの衝突の可能性は飛躍的に高まることが予想できる。
【0008】
次に、後者のポートフォワーディング又は静的NATと呼ばれる手法について説明する。これは非特許文献2及び非特許文献3に開示される技術である。
例えば、ある家庭に192.168.0.0/24というプライベートネットワークが構築されているとする。この家庭内LAN内にwebサーバを構築し、ブロードバンドルータを介してインターネットに公開したい場合、ブロードバンドルータに「ポートフォワード設定」或は「静的NAT設定」と呼ばれる、特定のポート番号のパケットをLAN内の特定のマシン(サーバ)に振り向ける設定を施す。
【0009】
今、ブロードバンドルータには家庭内LANのIPアドレスとしてデフォルトゲートウェイの「192.168.10.1」が付与されていると共に、ISPによって付与された動的グローバルIPアドレスが「203.178.83.194」であったとする。ブロードバンドルータには、この「203.178.83.194」のポート80番に来るパケットを、家庭内LANの別のIPアドレス「192.168.10.2」が付与されているマシンのポート80番へ転送する設定を施す。ブロードバンドルータは、パケットの送信先IPアドレスを、「203.178.83.194」から「192.168.10.2」に書き換えて、当該サーバに転送する。こうして、LAN内のサーバは外部(インターネット)に対してwebサーバとしてサービスを提供することが可能になる。これが、非特許文献2に開示されている技術である。なお、パケットに対して書き換える対象は、IPアドレスだけでなく、ポート番号も書き換えることができる。
このような静的NATと呼ばれる技術は、Linux(登録商標)等のPOSIX系OSのカーネルの機能(ドライバ)として実装されていることが多い。
【0010】
ブロードバンドルータは単にインターネットから来るパケットをLAN内に振り向けることしかしないので、セキュリティ面に問題がある。そこで、通信経路の暗号化と認証を伴ってセキュリティの向上を図った手法が、SSH(Secure SHell)の一種であるOpenSSH(http://www.openssh.com/ja/)等のアプリケーションである。これは非特許文献3に開示されている。
しかし、OpenSSHは、接続するユーザ毎に公開鍵を生成して配布する手間が生じると共に、クライアントである端末にSSHクライアントと公開鍵をインストールする必要がある。また、OpenSSHのような技術は潜在的なセキュリティのリスクを完全に払拭できてはいない。つまり、OpenSSH自身のセキュリティ面の脆弱性の大小に依存する。そして、OpenSSHのサーバであるsshdは、既定値ではポート22番を開放するので、ポート22番に対するDoS攻撃等のリスクも存在する。更に、OpenSSHはクライアントである端末自体のセキュリティについては何もしないので、別途端末のセキュリティ面を考慮して対策を施す必要がある。
【0011】
以上に述べたVPNの手法は、いずれも「インターネットからLAN内のサーバに繋げる」という目的にのみ特化して構築されている。また、その接続の技術も設定項目が多く面倒であったり、接続不能になる可能性が払拭できない等、完全ではない。そして、セキュリティ面の対策は別途考慮して対策を施さなければならない。
【0012】
以上のような技術背景に鑑み、発明者は上述した従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステム、静的NAT形成装置及びリバースプロキシサーバを発明し、出願した(特願2010−89873、以下「特許出願1」)。
【0013】
特許出願1では、IP接続可能性(IP Reachability)を妨げている単一のファイアウォールを越えて、端末とサーバを接続するために、端末とサーバとの間に静的NAT形成装置とリバースプロキシサーバが一つずつ介在し、リバースプロキシサーバの制御に従って、ポートフォワード(静的NAT)とリバースプロキシという、二段階のIPアドレス変換処理を経て、端末とサーバが仮想的な接続を実現する。
【0014】
しかしながら、市場に存在するネットワークの構成はこのような単純なものだけではない。接続対象であるサーバに到達するまで、IP接続可能性を阻害する要因が複数存在し、幾つものゲートウェイを通過しなければ接続ができない、というようなネットワーク構成も存在する。
例えば、ある企業Aと企業Bが合併したとする。合併によって、企業Aの社内LANと企業Bの社内LANとの間に、相互接続を実現するためのゲートウェイサーバを設けることが考えられる。しかし、企業Aと企業Bの相互接続を実現するには、相互の社内LANのセキュリティポリシに影響が生じるため、安易な接続は推奨されない。更に、企業Aと企業Bは、予め合併することを前提に社内LANを構築していた訳ではないのだから、夫々のLANで使用するプライベートIPアドレスが重複する可能性も十分考えられる。経路上のどこかでサブネットやIPアドレスが重複している場合、通常、IPリーチャブル(IP reachable:IPパケットが到達可能であること)な環境を構築することは不可能である。
【0015】
本発明はかかる課題を解決し、上述した従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、IPリーチャブルでない環境に存在するサーバにも接続ができる、新規なネットワークシステムに使用する静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置を提供することを目的とする。
【課題を解決するための手段】
【0016】
上記課題を解決するために、本発明の静的NAT形成装置は、直近の第一のネットワークに接続される第一のNICと、第一のNICに対してIPリーチャブルでない第二のネットワーク上に配置されるサーバに対して、端末が静的NATを用いた接続を行うために用いられる第二のNICと、第二のNICと第一のNICとの間に介在し、端末が第二のネットワーク上に存在するリバースプロキシサーバを通じてサーバと通信するパケットに適用する静的NATを設定するNAT設定部とよりなる。
【0017】
静的NAT形成装置がコントロールセッションを通じて認証を実行した後、端末がリバースプロキシサーバの先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、静的NAT形成装置は静的NATを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。
【発明の効果】
【0018】
本発明により、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムに使用する静的NAT形成装置、リバースプロキシサーバ及び仮想接続制御装置を提供できる。
【図面の簡単な説明】
【0019】
【図1】本実施形態のネットワークシステムの概略図である。
【図2】第一端末に注目したネットワークシステムの概略図である。
【図3】第二端末に注目したネットワークシステムの概略図である。
【図4】ローカルマスタBOXの外観斜視図である。
【図5】ローカルマスタBOXのハードウェア構成を示すブロック図である。
【図6】ローカルマスタBOXの機能ブロック図である。
【図7】ソフトローカルマスタの機能ブロック図である。
【図8】RTAの機能ブロック図である。
【図9】ステッピングノードの機能ブロック図である。
【図10】ステッピングノードの機能ブロック図である。
【図11】コンダクタの機能ブロック図である。
【図12】コンダクタに含まれるテーブルの構成を示す図である。
【図13】本実施形態のネットワークシステムの、全体的な動作の流れを示すタイムチャートである。
【図14】機器特定ID認証シーケンスのタイムチャートである。
【図15】ユーザ認証シーケンスとメニュー取得シーケンスのタイムチャートである。
【図16】メニュー取得シーケンスのタイムチャートである。
【図17】VPC確立シーケンスのタイムチャートである。
【図18】VPC確立シーケンスとVPCデータ転送状態のタイムチャートである。
【図19】VPC確立シーケンスに流れるパケット及びVPC確立要求コマンドの概要を示す概略図である。
【図20】VPCトンネルを通過する通信のプロトコルがコネクション型の通信である場合における、VPC切断シーケンスを示すタイムチャートである。
【図21】ユーザログアウトシーケンス及びローカルマスタシャットダウンを示すタイムチャートである。
【発明を実施するための形態】
【0020】
[実施形態の概要]
本実施形態の概略を説明する。
本発明は、特許出願1に開示した技術内容を発展させた技術内容である。これより説明するネットワークシステムは、大企業の広域プライベートネットワークシステムにおいて、リモートオフィスサービスを実現する仕組みを提供する。従業員が、遠隔地の事業所或は出向先等から企業内の端末を操作して、本来所属している部門に存在する自らの端末のデスクトップ環境を、出向先の端末で実現する。リモートデスクトップ環境を提供するサーバは、出向先から直接的にIPリーチャブルではないサブネットのサーバに存在する。本実施形態のネットワークシステムは、直接的にIPリーチャブルでないサーバの資源に対し、後述するローカルマスタとステッピングノードを用いて、仮想プライベート接続(Virtual Private Connect:以下「VPC」と略)を実現する。
なお、本実施形態においてリモートデスクトップとは、リモートデスクトッププロトコル(RDP:Remote Desktop Protocol)という、Windows(登録商標)にて実装されている実装形態を指すが、勿論、これに限定されない。周知且つ広く普及しているVNC(Virtual Network Computing)や、X Window Systemであってもよい。
【0021】
VPCは、直接的にIPリーチャブルでない端末とサーバとの間にIPリーチャブルな経路(トンネル)を形成する。これ以降、VPCによって形成される経路をVPCトンネルと呼ぶ。VPCトンネルは、端末とローカルマスタ、ローカルマスタとステッピングノード、ステッピングノード同士及びステッピングノードとサーバの、IPリーチャブルな機器同士を「データセッション」にて接続し、ローカルマスタ及び各ステッピングノードでは静的NATを設定し、サーバに直近のステッピングノードではリバースプロキシを稼働させる。
このVPCを実現するために、以下の装置及びプログラムを新たに設ける。これより説明する四種類の装置及びプログラムは、全て従来のネットワーク技術には同等の機能を提供する装置等が存在しないので、発明者及び出願人が独自に名称を付している。各々の装置及びプログラムは、データセッションを形成するために、相互に制御用の通信路である「コントロールセッション」を形成する。
【0022】
・ステッピングノード(Stepping Node)
リバースプロキシサーバとも呼べるステッピングノードは、ネットワークの各所に設けられ、二つの動作を行う。
一つは、後述するローカルマスタ或は他のステッピングノードとの間で、静的NATにてデータセッションを形成し、仮想的にIPリーチャブルな状態を形成する動作である。
もう一つは、後述するローカルマスタ或は他のステッピングノードと、IPリーチャブルなサーバとの間で、リバースプロキシを起動してデータセッションを形成し、端末とサーバとの間を仮想的にIPリーチャブルな状態を形成する動作である。
一見すると、ステッピングノードはリバースプロキシサーバ或は静的NATが稼働するゲートウェイであるように見えるが、端末から接続要求があった時だけリバースプロキシのプロセスを起動し、或は静的NATを設定する。特に、リバースプロキシのプロセスを起動する際には、後述するコンダクタと認証を行う。
したがって、ステッピングノードは通常のサーバとは異なり、不必要にポートを開けないので、セキュリティ面で有利である。
【0023】
・ローカルマスタ(Local Master)
静的NAT形成装置とも呼べるローカルマスタは、自身がステッピングノードに接続できる資格を有する装置であることを示す機器特定IDを内包しており、後述するコンダクタに対して機器認証(個体認証)を実行する。
機器認証が完遂すると、ローカルマスタは端末とコンダクタとの間に、制御用通信路であるコントロールセッションを形成する。端末にインストールされている、後述するプレイヤは、このコントロールセッションを用いてコンダクタと制御情報の通信を実行する。次に、プレイヤが、ユーザが接続可能なサーバに関する情報と、端末に対して様々な制御を行うための情報である制限設定情報をコンダクタに要求すると、コンダクタから受信するこれら情報を同時に取得し、端末が遠隔地のサーバにVPC接続するためのデータセッションを形成する準備を行う。
また、必要に応じ、制限設定情報に基づいて、セキュリティ確保のためにパケットフィルタも設定する。
データセッションは静的NAT(ポートフォワーディング)にて形成する。
【0024】
パケットフィルタは、端末の動作をサーバとの接続にのみ制限し、不用意にインターネット上の任意のサーバに接続する等の事故発生要因を排除するために設定する。コンダクタから送信される制限設定情報には、送受信を禁止される(又は送受信を許可される)IPアドレスの範囲が列挙され、この制限設定情報に従ってパケットフィルタは設定される。
静的NATによって、リバースプロキシであるステッピングノードを介して送受信するサーバとのパケットは、端末のローカル側に位置するNICに対するパケットとして、相手側を示すアドレスが、また必要に応じてポート番号も書き換えられる。端末はあたかもローカルのNICと通信しているような状態で、LAN内のサーバと通信することができる。
【0025】
ローカルマスタは、端末に接続されるハードウェアとして構成されるもの(以下「ローカルマスタBOX」)と、端末内にインストールされるソフトウェアとして構成されるもの(以下「ソフトローカルマスタ」)と、二通りの形態がある。いずれも、提供する機能は同じである。違いは、ローカルマスタBOXは内蔵するローカル側NICに静的NATをする一方、ソフトローカルマスタはネットワークOSが標準で内蔵するループバック仮想NICに静的NATを設定する、という点である。
ローカルマスタは、発明者が過去に発明して出願した特許文献1に開示される技術を基に、更に機能の整理と改良を施した装置及びプログラムである。
これ以降、単に「ローカルマスタ」と記す場合は、ローカルマスタBOXとソフトローカルマスタの両者を指す単語であると定義する。また、「ローカルマスタの暗号化通信処理部606」と記述する場合は、ローカルマスタBOXとソフトローカルマスタの両者に共通する機能ブロックを指す表記である。
【0026】
・プレイヤ(Player)
端末がインターネットに接続された状態で、更にローカルマスタとステッピングノードを通じてLAN内のサーバに接続すると、様々なセキュリティ面の懸念が生じる。そこで、端末の動作を強力に制限するために、端末にはこのプレイヤをインストールしておく。
挙動制限部とも呼べるプレイヤはローカルマスタと通信を行い、個人認証のためのユーザインターフェースを提供すると共に、ローカルマスタとステッピングノードとの通信が成立すると、OSの幾つかのアプリケーションプログラムインターフェース(Application Program Interface:以下「API」)をフックする。
ステッピングノードから送信され、ローカルマスタを通じて与えられる制限設定情報には、実行を禁止される(又は実行を許可される)アプリケーションプログラムや、閲覧、編集、移動又は削除を禁止されるファイル等が列挙されている。プレイヤはこの制限設定情報に従ってフックしたAPIを監視し、端末の挙動を強力に制限する。
【0027】
また、プレイヤは個人認証の機能を提供する。周知のログイン画面を端末に表示し、キーボードやICカードリーダ、或は指紋認証機器等の認証手段を通じて、ユーザの個人認証情報を取得し、コントロールセッションを通じてコンダクタに送信する。個人認証が成功したら、プレイヤはユーザが接続可能なサーバに関する情報と、端末に対して様々な制御を行うための情報である制限設定情報をコンダクタに要求する。
【0028】
更に、プレイヤはシェルとしての機能も提供する。個人認証が正常に終了すると、プレイヤはユーザが接続可能なサーバに関する情報と、端末に対して様々な制御を行うための情報である制限設定情報をコンダクタに要求する。ユーザが接続可能なサーバに関する情報を受信すると、プレイヤは端末の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ(コマンドライン)を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバのサーバ名がアプリケーションの引数として指定されている。プレイヤの子プロセスとしてアプリケーションが起動されるので、プレイヤはアプリケーションの挙動を容易に把握できる。
【0029】
プレイヤはウィルスチェッカやマルウェア等のAPIフックの技術を応用している。プレイヤはステッピングノードの制御下にあるので、フックしたAPIで異常な挙動を検出したら、直ちに実行を停止してステッピングノードに報告することもできる。この技術を高度に応用すると、未知のウィルスに対しても防御が可能になるので、昨今問題になっている「ゼロデイ攻撃」(プログラムのセキュリティホールが発表され、当該プログラムのセキュリティホールを修正するパッチが提供されるよりも以前の時点で、悪意ある者によって実際に当該セキュリティホールを突いた攻撃が行われたり、当該セキュリティホールを悪用する不正プログラムが出現すること)にも対応が可能になる。また、端末に誤ってウィルスが混入してしまっても、一旦プレイヤが起動してステッピングノードと接続されると、APIフックの結果から不審な挙動が直ちに判明するので、ステッピングノードは当該端末の接続を強制切断する等の緊急措置を瞬時に実行することができる。
【0030】
・コンダクタ(Conductor)
端末はサーバにVPCで接続するに際し、複数のステッピングノードを経由する。端末がサーバとVPCによる接続を確立する(端末がサーバに辿り着く)ためには、適切なステッピングノードを経由しなければならない。コンダクタは、このVPCトンネルを形成するための経路情報をローカルマスタに提供する。コンダクタは、本実施形態のネットワークシステムにおいて、VPCトンネルを形成するためにステッピングノードに対して制御情報を提供する「指揮者」の役割を果たす。
また、コンダクタは前述の通り、ローカルマスタに対する機器認証、端末を操作するユーザに対する個人認証を実行する。そして、機器認証及び個人認証を完遂した端末に対し、当該ユーザが接続を許可されているサーバの情報を提供する。
【0031】
以上、四つの装置及びプログラムで、ネットワーク上に存在する端末は、ローカルマスタ及び途中経路上のステッピングノードによる静的NATと、サーバの直近に存在するステッピングノードによるリバースプロキシを通じて、ユーザが接続したいサーバに接続することができる。その際、端末の挙動はプレイヤによってサーバに対する通信のみ許可され、それ以外の挙動は大幅に制限される。
この接続形態では、静的NATとリバースプロキシのそれぞれにおいて、パケットに付されるIPアドレスは多数書き換えられる。その結果、端末は非特許文献1に開示されるような、LAN内のIPアドレスを付与されるような状態にはならず、非特許文献3に開示される静的NATの接続形態に近い状態になる。
【0032】
[全体構成]
図1は、本実施形態のネットワークシステムの概略図である。
ある企業のLAN102は、多くの従業員が勤務している関係で、セキュリティの都合上、容易にサブネットを越えたアクセスができない構成になっている。このようなLAN102で、リモートデスクトップ環境を導入し、従業員が企業内のどの場所に移動しても、移動先の端末で同一のデスクトップ環境を実現しようとしている。
既存のLAN102のセキュリティポリシを変更せずに、最小限の追加投資でリモートデスクトップ環境を実現させるため、発明者はLAN102内の各所にステッピングノードを配置し、端末が直近のIPリーチャブルなステッピングノードからIPリーチャブルなステッピングノードを辿って、目的のサーバに接続する環境を構築した。
【0033】
図1では、第一端末105及び第二端末106と、二つの端末を示している。これは、どちらも等しくサーバ103に接続することができることを示すために記載している。
第一端末105及び第二端末106は周知のノートパソコン或は小型パソコンであり、OSとして周知のLinux(登録商標)がインストールされている。なお、OSは一般的なマルチタスクのネットワークOSであり、Linux(登録商標)に限定されず、例えばWindows(登録商標)等であってもよい。端末は周知のシンクライアント(Thin Client:ハードウェア資源を最小限に抑え、画面表示と操作入力等の最低限の機能だけを提供し、多くのアプリケーションプログラムはサーバで実行する、軽量端末。)を構成する。
【0034】
第一端末105及び第二端末106には個人認証のためのICカードリーダ104が接続されている。
第一端末105及び第二端末106はLAN102に接続する際、ローカルマスタを伴う。
第一端末105には、ハードウェアで構成されたローカルマスタであるローカルマスタBOX109が接続されている。ローカルマスタBOX109は、LAN102と第一端末105との間に介在する。
第二端末106には、ソフトウェアで構成されたローカルマスタであるソフトローカルマスタ113がインストールされている。第二端末106はソフトローカルマスタ113がインストールされ、稼働することで、ソフトローカルマスタ113を経由してLAN102に接続する。
【0035】
ローカルマスタBOX109又はソフトローカルマスタ113は、第一端末105及び第二端末106で稼働するプログラムが形成するネットワーク接続を、静的NATで直近の第一のステッピングノードである第一SN107まで接続する。
つまり、第一端末105のアプリケーションは直接的に第一SN107のIPアドレスに接続せず、ローカルマスタBOX109が提供する仮想IPアドレスに対して接続を行う。すると、ローカルマスタBOX109は第一端末105のアプリケーションが発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスを第一端末105のIPアドレスからローカルマスタBOX109のIPアドレスへ、宛先IPアドレスをローカルマスタBOX109のIPアドレスから第一SN107のIPアドレスへ、書き換える。
【0036】
ローカルマスタBOX109及びソフトローカルマスタ113には、第一SN107が接続されている。第一SN107はローカルマスタBOX109及びソフトローカルマスタ113が形成するネットワーク接続を、静的NATでIPリーチャブルな直近の第二のステッピングノードである第二SNまで接続する。
第一SN107はローカルマスタBOX109又はソフトローカルマスタ113が発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスをローカルマスタBOX109又はソフトローカルマスタ113のIPアドレスから第一SN107のIPアドレスへ、宛先IPアドレスを第一SN107のIPアドレスから第二SNのIPアドレスへ、書き換える。
【0037】
第一SN107には、第二SN108が接続されている。第二SN108は第一SN107が形成するネットワーク接続を、静的NATで直近の第三のステッピングノードである第三SN112まで接続する。
第二SN108は第一SN107が発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスを第一SN107のIPアドレスから第二SN108のIPアドレスへ、宛先IPアドレスを第二SN108のIPアドレスから第三SN112のIPアドレスへ、書き換える。
【0038】
第二SN108には、第三SN112が接続されている。第三SN112は第二SN108が形成するネットワーク接続を、静的NATで直近の第四のステッピングノードである第四SN114まで接続する。
第三SN112は第二SN108が発するパケットのIPヘッダを静的NATにて書き換える。具体的には、送信元IPアドレスを第二SN108のIPアドレスから第三SN112のIPアドレスへ、宛先IPアドレスを第三SN112のIPアドレスから第四SN114のIPアドレスへ、書き換える。
【0039】
第三SN112には、第四SN114が接続されている。第四SN114は第三SN112が形成するネットワーク接続を、リバースプロキシで直近のサーバ103まで接続する。
第四SN114は第三SN112が発するパケットのIPヘッダをリバースプロキシにて書き換える。具体的には、送信元IPアドレスを第三SN112のIPアドレスから第四SN114のIPアドレスへ、宛先IPアドレスを第四SN114のIPアドレスからサーバ103のIPアドレスへ、書き換える。
【0040】
以上、端末から、ローカルマスタ、第一SN107、第二SN108、第三SN112そして第四SN114を通じてサーバ103まで、静的NATとリバースプロキシを伴って接続する接続形態を、VPCと呼ぶ。そして、図1の点線で示す、端末とサーバ103との間にVPCによって形成される、静的NATとリバースプロキシで構成された接続経路を、VPCトンネルと呼ぶ。
VPCトンネルの特徴は、端末(第一端末105及び第二端末106)はサーバ103の本当のIPアドレスを知らず、またサーバ103も接続してきた端末の本当のIPアドレスを知らない、という点である。端末はローカルマスタが提供する仮想IPアドレスに対して通信を行い、サーバ103は第四SN114と通信を行う。端末にとってサーバ103はローカルマスタが提供する仮想IPアドレスが割り振られているように見え、サーバ103にとって端末は第四SN114であるように見える。
【0041】
第二SN108と第三SN112には、更にコンダクタ115が接続されている。仮想接続制御装置ともいえるコンダクタ115は端末及びローカルマスタの認証を実行すると共に、ローカルマスタの要求に応じて、VPCトンネルを形成するための経路情報をローカルマスタに提供する。
図1には図示されていないが、ステッピングノードは図1に示される第一SN107、第二SN108、第三SN112及び第四SN114以外にも存在し得る。そのような状況の中で、端末がサーバ103にVPCで接続する為に辿るステッピングノードの情報が、経路情報である。
経路情報の詳細については後述する。
【0042】
端末はローカルマスタBOX109又はソフトローカルマスタ113を介在することで、LAN102に接続することが許される。
ローカルマスタは第一SN107とはIPリーチャブルであるが、第二SN108、第三SN112及び第四SN114、そしてサーバ103とはIPリーチャブルではない。また、コンダクタ115ともIPリーチャブルではない。
図1において、第一SN107、ローカルマスタBOX109及び第二端末106が接続されている、相互にIPリーチャブルなサブネットは、第一のネットワークともいえる。
【0043】
第一SN107はローカルマスタ及び第二SN108とはIPリーチャブルであるが、端末、第三SN112及び第四SN114、そしてサーバ103とはIPリーチャブルではない。また、コンダクタ115ともIPリーチャブルではない。
第二SN108は第一SN107、第三SN112及びコンダクタ115とはIPリーチャブルであるが、端末、第一SN107及び第四SN114、そしてサーバ103とはIPリーチャブルではない。
第三SN112は第二SN108、第四SN114及びコンダクタ115とはIPリーチャブルであるが、端末、第一SN107、そしてサーバ103とはIPリーチャブルではない。
【0044】
第四SN114は第三SN112及びサーバ103とはIPリーチャブルであるが、端末、第一SN107、第二SN108とはIPリーチャブルではない。また、コンダクタ115ともIPリーチャブルではない。
図1において、第四SN114及びサーバ103が接続されている、相互にIPリーチャブルなサブネットは、第一のネットワークからはIPリーチャブルでない、第二のネットワークともいえる。
【0045】
このように、本実施形態のネットワークシステム101は、端末とサーバ103との間のIPリーチャブルではない環境で、IPリーチャブルな箇所にステッピングノードを配置し、ステッピングノードが静的NAT或はリバースプロキシでIPリーチャブルな接続相手同士を接続することで、IPリーチャブルではない機器同士を仮想的にIPリーチャブルにする。
【0046】
図2は第一端末105に注目したネットワークシステム101の概略図である。紙面の都合上、図2及び後述する図3では第三SN112の表記は省略している。
第一端末105にはOS201がインストールされており、OS201の一部であるシェル202を通じて第三アプリケーション203等のアプリケーションプログラムが実行される。第一端末105にはこの他にプレイヤ111がインストールされており、所定の操作によって実行される。
OS201は第一端末105のハードウェアである、ハードディスク等のストレージ204、キーボード及びマウス等の操作部205、液晶ディスプレイ等の表示部206、そして内蔵USBインターフェース207とのデータの入出力を掌握し、アプリケーションがこれらのハードウェアを容易に利用できるためのAPIを提供する。
【0047】
プレイヤ111は個人認証を完遂すると、OS201の幾つかのAPIをフックして、第一端末105全体の挙動を大幅に制限する。また、異常を検出したらその際の発生状況等をローカルマスタBOX109、第一SN107及び第二SN108を通じてコンダクタ115に報告する。
【0048】
更に、プレイヤ111はアプリケーション起動制御部ともいえるシェルとしての機能も提供する。ユーザがサーバ103に接続するために、プレイヤ111が提供するユーザインターフェースが、専用シェル208である。個人認証が正常に終了すると、プレイヤ111の専用シェル208は第一端末105の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ(コマンドライン)を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバ103のサーバ名或はローカルマスタBOXが提供する仮想IPアドレス等が、アプリケーションの引数として指定されている。このようにして、プレイヤ111の子プロセスとして起動されたアプリケーションプログラムが、図2の第一アプリケーション209及び第二アプリケーション210である。プレイヤ111の子プロセスとしてアプリケーションが起動されるので、プレイヤ111はアプリケーションの挙動を容易に把握できる。
【0049】
図2では、専用シェル208から起動された第一アプリケーション209及び第二アプリケーション210が表示されている。一方、第一端末105が個人認証を完了するまでに既に実行されているOS201のシェル202と第三アプリケーション203が、別途起動された状態である。これらはプレイヤ111の専用シェル208の子プロセスとして起動されたアプリケーションではないので、プレイヤ111のAPIフック機能でその挙動が大幅に制限される。また、実行を禁じられているアプリケーション、「ファイルを開く」動作が禁じられているファイルに対するアプリケーションの起動はプレイヤ111によって阻害され、実行できなくなる。
【0050】
第一端末105の内蔵USBインターフェース207には、ローカルマスタBOX109が接続されている。ローカルマスタBOX109には後述するDHCPクライアントが内蔵されており、DHCPサーバ110によってLAN102に接続し、第一SN107等のIPリーチャブルな機器と通信ができるようになる。
【0051】
図3は第二端末106に注目したネットワークシステム101の概略図である。
第二端末106の、第一端末105との相違点は、第二端末106にはローカルマスタBOX109の代わりにソフトローカルマスタ113がインストールされており、OS201とプレイヤ111との間に介在している点と、第二端末106はLAN102と内蔵NIC301で接続される点である。したがって、第一端末105ではDHCPサーバ110がローカルマスタBOX109に動的IPアドレスを付与していたが、第二端末106ではDHCPサーバ110が、第二端末106に内蔵されている内蔵NIC301に直接、動的IPアドレスを付与することとなる。ソフトローカルマスタ113は第二端末106内にインストールされているので、第一端末105とローカルマスタBOX109の場合のように、IPネットワーク経由で所定の制御情報の送受信を行わずとも、メッセージパッシング、共有メモリ或は名前付きパイプ等、一般的なプロセス間通信の仕組みが利用可能である。
【0052】
[ローカルマスタBOX109]
図4は、ローカルマスタBOX109の外観斜視図である。ローカルマスタBOX109の裏面にはUSB−Bコネクタ403が一つと、ネットワークコネクタ404が一つ設けられている。USB−Bコネクタ403は、図示しないUSB−Bケーブルを通じて端末が接続される。ネットワークコネクタ404にはLANケーブルが接続され、その先にはDHCPサーバ110が接続される。
【0053】
図5はローカルマスタBOX109のハードウェア構成を示すブロック図である。
マイクロコンピュータよりなるローカルマスタBOX109は、CPU502、RAM503、ROMを兼用する不揮発性ストレージとしてのフラッシュメモリ504、USBインターフェース505、そして第一NIC507が、バス508に接続されている。
フラッシュメモリ504にはOS201のカーネルやライブラリ、そして管理用コマンド等の主要部分が格納されている。OS201は例えばLinux(登録商標)である。
ローカルマスタBOX109はパソコンである第一端末105からUSBケーブルを通じて電源供給を受ける。つまり、ローカルマスタBOX109はバスパワードデバイスである。
図6にて後述する、図5に記されていない第二NIC601は、フラッシュメモリ504内に格納されているOS201及びアプリケーションプログラムによって仮想的に作成される。
【0054】
図6はローカルマスタBOX109の機能ブロック図である。
ローカルマスタBOX109は、二つのネットワークインターフェースを具備する。
第一NIC507は、図5で図示したようにハードウェアとして構成されるNICであり、LAN102に接続されることで、第一SN107とIPリーチャブルになる。
第二NIC601は、図5では図示されていないが、フラッシュメモリ504内に格納されているOS及びアプリケーションプログラムによって仮想的に作成される。第一端末105から見ると、第二NIC601はUSB接続される外付けNICとして認識される。つまり、第二NIC601は第一端末105のネットワークシステム101が構成するサブネットに含まれ、第一端末105から直接的にアクセスが可能なデバイスである。
【0055】
ローカルマスタBOX109の第一NIC507がLAN102に接続されると、DHCPクライアント602は、DHCPサーバ110から、IPアドレス、ネットマスク、(IPネットワークにおける)デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、第一NIC507がLAN102上の機器とIPリーチャブルな状態になるように、第一NIC507を設定する。
【0056】
次に、アドレス重複回避部603は、DHCPクライアント602が取得したネットワーク構成情報を参照して、第二NIC601に付与しようとするIPアドレスが第一NIC507のサブネットに属する場合には、第二NIC601が第一NIC507とは異なるサブネットのネットワークに属するようにするために、DHCPサーバ604の起動パラメータを調整する。具体的には、第一NIC507にグローバルIPアドレスが付与される場合は、第二NIC601には既定値として、ネットワークアドレス192.168.0.0/24に属するIPアドレスである192.168.0.1を付与するが、もしも第一NIC507のネットワークアドレスが192.168.0.0/24であった場合は、192.168.1.0/24のIPアドレスである192.168.1.1を付与する。
【0057】
ローカルマスタBOX109の第一NIC507がDHCPサーバ110によって設定され、第二NIC601にもDHCPサーバ604によってプライベートIPアドレスが付与された状態では、NAT設定部605は一般的な動的NATを構成する。これにより、第一NIC507と第二NIC601との間は支障なくネットワーク接続が成立する。なお、この時点では、暗号化通信処理部606は第二NIC601と第一NIC507との間を流れるパケットのペイロード部分の暗号化処理及び復号化処理は行わない。
【0058】
一方、コントロールセッション管理部609は、第一NIC507がネットワークに接続したことを知ると、直ちにコンダクタ115に対して機器認証を試みる。コンダクタ115へ送信する機器特定ID608は、デフォルトゲートウェイアドレス612に記述されているステッピングノードへ送信される。本実施形態では図1に示したように、第一SN107である。
機器認証に用いる機器特定ID608は、暗号化通信処理部606によって暗号化されて、第一SN107及び第二SN108を通じてコンダクタ115に送信される。コンダクタ115から暗号化通信処理部606を通じて機器認証の成功の通知及びセッションID(以下「SSID」)を受信すると、コントロールセッション管理部はSSIDをSSIDメモリ613に記憶する。
この時点で、ローカルマスタBOX109と第一SN107、第二SN108及びコンダクタ115との間にはコントロールセッションが形成される。
なお、本実施形態で記す「デフォルトゲートウェイ」は、一般的なIPネットワークのデフォルトゲートウェイとは異なる意味であり、コンダクタ115に繋ぐ為に辿る、IPリーチャブルな機器のIPアドレス又はホスト名を指す。
【0059】
コントロールセッションは、コネクション型のTCPの一種であり、ペイロードが暗号化通信処理部606によって暗号化されている。発明者が独自に開発したプロトコルであり、SSL−TELNET(SSLによって暗号化されたTELNETプロトコル)に類似する。SSL−TELNETとの相違点は、画面制御を行わない点である。コマンドとデータの送受信だけが実現できればよいので、VT端末等のエスケープシーケンスを用いた画面制御の機能を持たない。
ローカルマスタとコンダクタ115との間のコントロールセッションの形成は、TELNETの多重接続に類似する。つまり、ローカルマスタから第一SN107にTELNETログインした後、第一SN107を踏み台にして第二SN108にTELNETログインし、更に第二SN108を踏み台にしてコンダクタ115にTELNETログインする、という接続形態である。
【0060】
第一端末105のプレイヤ111は、起動すると、接続されているローカルマスタBOX109に対し、コントロールセッションを通じてSSIDを要求する。この動作は、ローカルマスタBOX109がSSIDを返信するまで繰り返される。つまり、プレイヤ111はSSIDの要求をポーリングする。
コントロールセッション管理部609は、プレイヤ111からSSIDの要求を受けると、SSIDメモリ613にSSIDが格納されていればこれを返信する。そうでない場合、つまりコンダクタ115に対する機器認証が完遂しておらず、コンダクタ115からSSIDを受け取っていない時点では、プレイヤ111に対しエラーを返信する。
プレイヤ111は、ローカルマスタBOX109からSSIDを受信すると、ローカルマスタBOX109が機器認証を成功したことを認識する。受信したSSIDを図示しないRAMに記憶すると、プレイヤ111は次に第一端末105の表示部206にログイン画面を表示する。
ユーザは第一端末105のICカードリーダ104或は操作部205等を用いてユーザの個人認証を実行する。ユーザが入力する個人認証の情報はプレイヤ111によってコントロールセッションを通じてローカルマスタBOX109に送信される。なお、個人認証の情報は、様々である。操作部205を用いる場合は、一般的なユーザIDとパスワードである。この他、指紋認証機器やICカードリーダ104等の、個人認証を実現する機器から得られる個人認証に用いる情報を利用する方法もある。これ以降、これらの端末を使用するユーザを認証するための情報を個人認証情報と総括して呼ぶ。
【0061】
個人認証情報は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、コンダクタ115に送信される。コンダクタ115から返信される個人認証の成功の通知は、第一端末105に到達する。
プレイヤ111はコンダクタ115から個人認証の成功の通知を受信すると、ユーザが利用可能なサービスに関する情報をコンダクタ115に要求する。コンダクタ115はこれに呼応して、ユーザが享受できるサービスに関する情報と、第一端末105及びローカルマスタBOX109の挙動を制限するための情報を送信する。
ユーザが享受できるサービスに関する情報はサービスメニュー情報614として、プレイヤ111に記憶されると共に、ローカルマスタBOX109も転送する際にサービスメニュー情報614を記憶する。
第一端末105及びローカルマスタBOX109の挙動を制限するための情報は制限設定情報610として、プレイヤ111に記憶されると共に、ローカルマスタBOX109も転送する際に制限設定情報610を記憶する。
【0062】
ローカルマスタBOX109のコントロールセッション管理部609は、コンダクタ115から受信した制限設定情報610に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部611を制御する。パケットフィルタ設定部611は、コントロールセッション管理部609から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
【0063】
次に、ローカルマスタBOX109のコントロールセッション管理部609は、記憶したサービスメニュー情報614に基づいて、データセッションを形成するポート番号を監視するように、パケット監視部615を設定する。
パケット監視部615は、第二NIC601に割り当てられたIPアドレスの、データセッションの対象となるポート番号に、TCP SYNパケットが来たら、これをコントロールセッション管理部609に報告する。コントロールセッション管理部609は、この報告を受けて、データセッションを形成するための通信を開始する。
【0064】
また、パケット監視部615は、設定されるデータセッションがコネクション型の通信である場合は、TCP FINパケットも監視する。RDPやSSHのような、クライアントの終了によって初めてTCP FINパケットが送信されるプロトコルの場合は、TCP FINパケットの入来を検出することで、直ちにデータセッションを終了(クローズ)させることができる。
逆に、設定されるデータセッションがHTTPのようなコネクションレス型のプロトコルの場合は、一つのデータストリームが送信される度にTCP FINパケットが送信される。従って、コネクションレス型プロトコルの場合は、TCP FINパケットをデータセッションをクローズさせるきっかけとしてはならない。つまり、HTTPを通すVPCトンネルはTCP FINパケットも正しく転送しなければならない。この場合は、端末がコントロールセッションを通じて、当該データセッションの終了を明示的に通知する。
【0065】
[ソフトローカルマスタ113]
図7は、ソフトローカルマスタ113の機能ブロック図である。
ソフトローカルマスタ113は、二つのネットワークインターフェースを具備する。
内蔵NIC301は、第二端末106にハードウェアとして内蔵されるNICであり、LAN102に接続される。
ループバック仮想NIC701は、第二端末106にインストールされている、IPv4プロトコルのネットワークOS201には標準として備わっている、周知のループバックインターフェースである。仮に端末にNICが装備されていなくても、OS201がIPv4プロトコルをサポートする限り、必ず127.0.0.1というIPアドレスが付与されているループバックインターフェースがOS201内に構成される。特別な設定を施していない限り、ループバックインターフェース宛に送信したパケットは、端末自身のパケット受信対象に送付される。つまり、「loop back」、送信したパケットが輪を描くように出発点、つまり端末自身に戻る。
【0066】
ローカルマスタBOX109の場合は、第一NIC507は第一端末105から直接的にアクセスが可能なデバイスでは無かった。しかし、ソフトローカルマスタ113の場合、内蔵NIC301もループバック仮想NIC701も、第二端末106のOS201及びアプリケーションから等しくアクセスが可能なデバイスである。
【0067】
ソフトローカルマスタ113の内蔵NIC301がLAN102に接続されると、OS201が内蔵するDHCPクライアント702は、内蔵NIC301を通じてDHCPサーバ110から、IPアドレス、ネットマスク、デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、内蔵NIC301がネットワークに接続できるように内蔵NIC301を設定する。
【0068】
ローカルマスタBOX109の場合は、この手順の次に、第一NIC507と第二NIC601のサブネットが重複しないための処理が必要だったが、ループバック仮想NIC701は、グローバル或はプライベートのIPアドレスが付与される内蔵NIC301とは必ずネットワークセグメントが重複しないので、アドレス重複回避部603を設ける必要はない。また、ループバックアドレスは固定であるので、DHCPサーバ604も不要である。
【0069】
ソフトローカルマスタ113の内蔵NIC301がLAN102に接続された状態では、NAT設定部705は何もしない。また、パケットフィルタ設定部706も何もしない。これにより、OS201及びアプリケーションは内蔵NIC301を通じて支障なくネットワークに接続できる。なお、この時点では、暗号化通信処理部606はループバック仮想NIC701と内蔵NIC301との間を流れるパケットの暗号化処理及び復号化処理は行わない。
【0070】
一方、コントロールセッション管理部609は、内蔵NIC301がネットワークに接続したことを知ると、直ちにコンダクタ115に対して機器認証を試みる。コンダクタ115へ送信する機器特定ID608は、デフォルトゲートウェイアドレス612に記述されているステッピングノードへ送信される。本実施形態では図1に示したように、第一SN107である。
機器認証に用いる機器特定ID608は、暗号化通信処理部606によって暗号化されて、第一SN107及び第二SN108を通じてコンダクタ115に送信される。コンダクタ115から暗号化通信処理部606を通じて機器認証の成功の通知及びセッションID(以下「SSID」)を受信すると、コントロールセッション管理部609はSSIDをSSIDメモリ613に記憶する。
この時点で、ソフトローカルマスタ113と第一SN107、第二SN108及びコンダクタ115との間にはコントロールセッションが形成される。
【0071】
第一端末105のプレイヤ111は、起動すると、接続されているローカルマスタBOX109に対し、コントロールセッションを通じてSSIDを要求する。この動作は、ローカルマスタBOX109がSSIDを返信するまで繰り返される。つまり、プレイヤ111はSSIDの要求をポーリングする。
コントロールセッション管理部609は、プレイヤ111からSSIDの要求を受けると、SSIDメモリ613にSSIDが格納されていればこれを返信する。そうでない場合、つまりコンダクタ115に対する機器認証が完遂しておらず、コンダクタ115からSSIDを受け取っていない時点では、プレイヤ111に対しエラーを返信する。
プレイヤ111は、ソフトローカルマスタ113からSSIDを受信すると、ソフトローカルマスタ113が機器認証を成功したことを認識する。受信したSSIDを図示しないRAMに記憶すると、プレイヤ111は次に第一端末105の表示部206にログイン画面を表示する。
ユーザは第一端末105のICカードリーダ104或は操作部205等を用いて個人認証を実行する。個人認証情報はプレイヤ111によってコントロールセッションを通じてローカルマスタBOX109に送信される。
【0072】
個人認証情報は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、コンダクタ115に送信される。コンダクタ115から返信される個人認証の成功の通知は、第一端末105に転送される。
プレイヤ111はコンダクタ115から個人認証の成功の通知を受信すると、ユーザが利用可能なサービスに関する情報をコンダクタ115に要求する。コンダクタ115はこれに呼応して、ユーザが享受できるサービスに関する情報と、第一端末105及びローカルマスタBOX109の挙動を制限するための情報を送信する。
ユーザが享受できるサービスに関する情報はサービスメニュー情報として、プレイヤ111に記憶される。このサービスメニュー情報はソフトローカルマスタ113も利用する。
第一端末105及びローカルマスタBOX109の挙動を制限するための情報は制限設定情報610として、プレイヤ111に記憶される。この制限設定情報610はソフトローカルマスタ113も利用する。
【0073】
ローカルマスタBOX109の場合、プレイヤ111に転送される制限設定情報610及びサービスメニュー情報614を、プレイヤ111に転送する際にローカルマスタBOX109も取得して記憶する手順を踏むが、ソフトローカルマスタ113の場合、ソフトローカルマスタ113とプレイヤ111が第二端末106内に共存しているので、コンダクタ115から受信した制限設定情報610は直ちにプレイヤ111も参照可能である。したがって、ソフトローカルマスタ113が制限設定情報610を第二端末106のプレイヤ111に送信する手順は、本質的に生じ得ない。
【0074】
ソフトローカルマスタ113のコントロールセッション管理部609は、コンダクタ115から受信した制限設定情報610に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部706を制御する。パケットフィルタ設定部706は、コントロールセッション管理部609から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
【0075】
次に、ソフトローカルマスタ113のコントロールセッション管理部609は、記憶したサービスメニュー情報に基づいて、データセッションを形成するポート番号を監視するように、パケット監視部615を設定する。
パケット監視部615は、第二NIC601に割り当てられたIPアドレスの、データセッションの対象となるポート番号に、TCP SYNパケットが来たら、これをコントロールセッション管理部609に報告する。コントロールセッション管理部609は、この報告を受けて、データセッションを形成するための通信を開始する。
【0076】
また、パケット監視部615は、設定されるデータセッションがコネクション型の通信である場合は、TCP FINパケットも監視する。RDP(Remote Desktop Protocol)やSSHのような、クライアントの終了によって初めてTCP FINパケットが送信されるプロトコルの場合は、TCP FINパケットの入来を検出することで、直ちにデータセッションを終了(クローズ)させることができる。
逆に、設定されるデータセッションがHTTPのようなコネクションレス型のプロトコルの場合は、一つのデータストリームが送信される度にTCP FINパケットが送信される。従って、コネクションレス型プロトコルの場合は、TCP FINパケットをデータセッションをクローズさせるきっかけとしてはならない。つまり、HTTPを通すVPCトンネルはTCP FINパケットも正しく転送しなければならない。この場合は、端末がコントロールセッションを通じて、当該データセッションの終了を明示的に通知する。
【0077】
以上、ローカルマスタBOX109とソフトローカルマスタ113を説明した。
これまでの説明で明らかなように、ローカルマスタはコンダクタ115の指示、具体的にはコンダクタ115が作成する制限設定情報610に基づいて、端末で稼働するOS201或はそのOS201を通じて動作するアプリケーションから発生する通信に対し、パケットフィルタで制限を加える。そして、ユーザが許可されたサーバ103に対する仮想的な接続を実現するために、直近のステッピングノードに対する静的NATを設定する。
静的NATを行うことで、端末はあたかもLAN102内のサーバ103に接続する時と同等の状態で、インターネット107及びファイアウォールを介したサーバ103に接続することができる。
【0078】
[プレイヤ111]
図8は、プレイヤ111の機能ブロック図である。
プレイヤ111は、コンダクタ115の指示、具体的にはコンダクタ115から送信される制限設定情報610に基づいて、端末で起動するアプリケーションと、アプリケーションの動作に連れて使用されるデバイスに対して監視を行い、必要に応じて動作を制限する等の制御を行い、ログ記録等の管理を行う。このような機能を実現するために、プレイヤ111はOS201に備わっているAPIをフックして、アプリケーション及びOS201の挙動を常時監視する。そして、APIが制限設定情報610に記述されている制限条件に合致した場合、プレイヤ111は当該APIの起動を阻止し、ローカルマスタを通じてコンダクタ115に報告する。
【0079】
図8では、プレイヤ111を説明する際に必要不可欠な、OS201とアプリケーションについても機能ブロックとして表記している。
OS201には様々な機能が含まれているが、本実施形態を説明するに際し、OS201はハードウェアをアプリケーションから扱い易くするためのデバイスドライバの集合体と考えることができる。そして、デバイスドライバはAPIの集合体ともいえる。図8では、主にこれらハードウェアとデバイスドライバに着目して、機能ブロックを記述した。
【0080】
端末に備わっている主要なハードウェアとしては、キーボード及びマウス等のポインティングデバイスである操作部205、液晶ディスプレイ等の表示部206、ハードディスク等のストレージ204、そしてNICが挙げられる。但し、前述の第一端末105の場合は、NICはローカルマスタBOX109の内部に、第二NIC601として仮想的に設けられた。何れの場合においても、ネットワークに接続する以上、NICは存在する。
操作ドライバ801は、操作部205が発する操作情報及びICカードリーダ104が出力する個人認証情報を、アプリケーションやシェル202やコントロールセッション管理部807等に引き渡す。
表示制御部802は、アプリケーションやシェル202等から発生する画面描画指示情報を実際の画面描画情報に変換して表示部206に引き渡す。
【0081】
ファイルシステム803は、ストレージ204にファイル及びディレクトリを構成し、アプリケーションやシェル202の指示に従ってファイル及びディレクトリを操作する。
プロセス制御部804は、アプリケーションやシェル202等を通じてストレージ204内に存在するアプリケーションやライブラリ等の実行及び終了を制御する。
クリップボードバッファ805は、アプリケーションやシェル202同士でデータオブジェクトの複写、移動、削除等の一時バッファとして機能する。
TCP/IPプロトコルスタックとも呼べるネットワークドライバ806は、アプリケーションやシェル202とネットワークとの間で通信ができる環境を構築し、その通信を制御する。
【0082】
ネットワークドライバ806はDHCPクライアント702も含む。
ローカルマスタBOX109を利用する場合、ローカルマスタBOX109内のDHCPクライアント602は、ローカルマスタBOX109内の第一NIC507に、LAN102のDHCPサーバ110から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。また、ネットワークドライバ806の一機能であるDHCPクライアント702は、ローカルマスタBOX109内の第二NIC601に、ローカルマスタBOX109内のDHCPサーバ604から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。
ソフトローカルマスタ113を利用する場合、ネットワークドライバ806の一機能であるDHCPクライアント702は、内蔵NIC301に、LAN102のDHCPサーバ110から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。
【0083】
プレイヤ111は、OS201の初期起動プロセスやシェル202を通じたユーザの操作、或はUSBメモリ内に格納された状態でUSBメモリを端末に接続して自動実行される等で起動されると、最初にコントロールセッション管理部807がローカルマスタBOX109又はソフトローカルマスタ113に対してSSIDを要求する。
ローカルマスタBOX109又はソフトローカルマスタ113からSSIDの取得に成功すると、コントロールセッション管理部807は次に個人認証を実行する。コントロールセッション管理部807は、ICカードリーダ104或は操作部205等で取得した個人認証情報をコンダクタ115に送信し、個人認証の結果を待つ。
【0084】
コンダクタ115からローカルマスタBOX109又はソフトローカルマスタ113を通じて個人認証が成功した旨の報告を受けたら、コントロールセッション管理部807は次にコンダクタ115に対して制限設定情報610及びサービスメニュー情報614を要求する。
ソフトローカルマスタ113を使用している場合、個人認証が成功した後、プレイヤ111がコンダクタ115から制限設定情報610及びサービスメニュー情報614をダウンロードして、端末の図示しないRAM内に制限設定情報610を保持する。保持した制限設定情報610及びサービスメニュー情報614はソフトローカルマスタ113と共用することとなる。
【0085】
ローカルマスタBOX109を使用している場合、個人認証が成功した後、プレイヤ111がコンダクタ115から制限設定情報610及びサービスメニュー情報614をダウンロードして、端末の図示しないRAM内に制限設定情報610を保持する際、ローカルマスタBOX109は端末とは別個のハードウェアで構成されているので、ローカルマスタBOX109は別途制限設定情報610及びサービスメニュー情報614を取得する必要がある。このため、本実施形態ではプレイヤ111とコンダクタ115との通信の間に介在して、制限設定情報610及びサービスメニュー情報614をプレイヤ111が受信する寸前に、一旦ローカルマスタBOX109が保持してから、プレイヤ111に送信する、という方法で取得している。勿論、この方法に限られず、プレイヤ111が受信した制限設定情報610及びサービスメニュー情報614を明示的にローカルマスタBOX109に送信する方法でも良い。
【0086】
コンダクタ115から制限設定情報610を得ると、プレイヤ111のコントロールセッション管理部807は、制限設定情報610に従って、操作情報取得部808、画面キャプチャ処理部809、ファイルシステム監視部810、プロセス監視部811、クリップボード監視部812、そしてAPIフック処理部813に設定を行う。
【0087】
ファイルシステム監視部810は、制限設定情報610で指定された特定のファイルやディレクトリに対する挙動として、コピー、移動、削除、名称変更を監視する。
プロセス監視部811は、制限設定情報610で指定された特定のアプリケーション等のプロセスの起動及び自己プロセス隠蔽行為を監視する。
クリップボード監視部812は、制限設定情報610で指定された特定のアプリケーション等が、クリップボードバッファ805に対する、データオブジェクトの複写、移動、削除等の操作を監視する。
【0088】
APIフック処理部813は、ファイルシステム監視部810がファイルシステム803に対するAPIフック処理を、プロセス監視部811がプロセス制御部804に対するAPIフック処理を、クリップボード監視部812がクリップボードバッファ805に対するAPIフック処理を、それぞれ実現する。APIフック処理部813によって、シェル202やアプリケーションがファイルやプロセスに対して何らかの動作を起こそうとすると、ファイルシステム監視部810やプロセス監視部811がその都度呼び出されて、対応するAPIを実行すべきか否かが判定される。
【0089】
操作情報取得部808は、制限設定情報610に記述されている情報に従って、当該情報に記されている条件に合致したら、操作ドライバ801から得られる操作情報を、ローカルマスタBOX109又はソフトローカルマスタ113を通じてコンダクタ115へ報告する。
画面キャプチャ処理部809は、制限設定情報610に記述されている情報に従って、当該情報に記されている条件に合致したら、表示制御部802から得られるビットマップ画面情報を、ローカルマスタBOX109又はソフトローカルマスタ113を通じてコンダクタ115へ報告する。
【0090】
専用シェル208は、制限設定情報610の記述に従って、ユーザが実行を許可されるアプリケーションのアプリケーションプログラム名と、ユーザがアクセスを許可されるサーバ103のリソース名(resource:「情報資源」の意)を含むアイコンを作成する。アイコンの中身はコマンドライン文字列であり、実行するアプリケーションプログラム名と、その引数としてサーバ103のリソース名が記述される。また、アプリケーションプログラムによっては、起動時に必要な種々のオプションスイッチも含まれる。このアイコンをマウス等のポインティングデバイス等でクリックすることで起動したアプリケーションプログラムが、図8の第一アプリケーション209及び第二アプリケーション210である。第一アプリケーション209及び第二アプリケーション210は専用シェル208の子プロセスとして起動されるので、第一アプリケーション209及び第二アプリケーション210の挙動は専用シェル208を通じて完全に把握可能である。
【0091】
一方、OS201には標準で備わっているシェル202が存在する。また、そのシェル202から起動するアプリケーションプログラムも当然存在する。プロセス監視部811はこれら専用シェル208を経由しないシェル202及びアプリケーション(図8では第三アプリケーション203がこれに該当する。)については、ファイルシステム監視部810、プロセス監視部811及びクリップボード監視部812が厳しくその挙動を監視し、サーバ103に対するセキュリティ面の脅威となる可能性のある操作は直ちに中止する。また、起動自体が禁じられているアプリケーションプログラムについては、プロセス監視部811によって強制終了させられる。
【0092】
[ステッピングノード]
ステッピングノードは、ファイアウォールを伴わない形式の装置と、ファイアウォールを伴う形式の装置との、二種類が存在する。以下、それぞれの機能を説明する。
図9は、ステッピングノードの機能ブロック図である。図9に開示するステッピングノードは、ファイアウォールを伴わない形式の装置である。
ステッピングノード901はネットワークOSが稼働するコンピュータである。OSは一例としてはLinux(登録商標)等の、POSIX系OSが好ましい。
本実施形態のステッピングノード901は、LAN102の要所に配置され、IPリーチャブルなステッピングノード同士或はサーバとのゲートウェイに特化している。
LAN102に接続される第五NIC902には固定のIPアドレスが付与されている。
【0093】
第五NIC902に接続されている暗号化通信処理部904は、ローカルマスタBOX109及びソフトローカルマスタ113に設けられている暗号化通信処理部606と対をなす。つまり、プレイヤ111及びローカルマスタと認証情報の送受信と、コントロールセッション及びデータセッションの暗号化を施す。
【0094】
コントロールセッション管理部909は、ローカルマスタBOX109及びソフトローカルマスタ113に設けられているコントロールセッション管理部609、及びプレイヤ111に設けられているコントロールセッション管理部807と対をなす。つまり、ローカルマスタとの間にコントロールセッションを形成し、ローカルマスタ或はプレイヤ111と様々な制御情報の送受信を行う。このために、デフォルトゲートウェイアドレス612或はコンダクタアドレス908が記憶されている。
【0095】
データセッション管理部910は、コントロールセッション管理部909を通じて、ローカルマスタから来たサーバ103に対する接続要求に応じて、当該サーバ103に対応するリバースプロキシを起動するか、又は静的NATを設定して、IPリーチャブルなローカルマスタ、他のステッピングノード或はサーバ103との間にデータセッションを形成する。
データセッション管理部910によって起動されるリバースプロキシのプロセスは、図9に示すように、第一リバースプロキシ911、第二リバースプロキシ912、…と、端末との間に形成されるデータセッションの数に応じて増減する。
同様に、データセッション管理部910によって設定される静的NATの設定は、図9に示すように、第一NAT914、図示しない第二NAT、…と、端末との間に形成されるデータセッションの数に応じて増減する。
【0096】
データセッションは、端末から形成される数に応じて増減すると共に、端末の数、ひいてはその端末を使用するユーザの人数によっても増減する。例えば、ユーザAのHTTPデータセッションと、ユーザAのRDPデータセッションは独立である。ユーザBのHTTPデータセッションと、ユーザBのRDPデータセッションも独立である。これらデータセッションは全て独立して形成される。特に、SSHのようなプロトコルの場合は、接続しようとするSSHサーバの数に応じて、一人のユーザで複数のデータセッションが形成される。それらデータセッションにおいて、ステッピングノードが終端であればリバースプロキシのプロセスが起動され、終端でなければ静的NATが設定される。
なお、「静的NATの設定」とは、ステッピングノードのOSの機能に対して設定を行って静的NATを設定する場合を想定して言及している。例えばLinux(登録商標)の場合は、カーネルのNetfilterドライバに対してiptablesユーティリティを用いて静的NATを設定する作業を指す。もし、静的NATも独立したプログラムで構成し、且つデータセッションの数に応じて多重起動するのであれば、その場合は「静的NATプログラムの起動」となる。つまり、静的NATを実現する方法に応じて表現は変わる。
【0097】
データセッション管理部910は、ローカルマスタと他のステッピングノード、又はステッピングノード同士との接続には、静的NATを設定する。パケットのペイロード部分の暗号化を解く必要がなく、パケットのIPヘッダ部分に記述されているIPアドレス及びポート番号の書き換えだけで済むからである。
これに対して、データセッション管理部910は、ローカルマスタ又は他のステッピングノードとサーバ103との接続には、リバースプロキシを設定する。サーバ103との通信にはパケットのペイロード部分の暗号化を解く必要があり、またTCP/IP第四層(アプリケーション)に従う処理が要求される場合があるからである。一例としては、HTTPのエラー処理として、サーバ103に代わって、URLの呼び出し方法や構文に誤りがある場合にwebサーバが返す「400 Bad Request」を返送することで、サーバ103の負荷を軽減する、等の機能が考えられる。
【0098】
パケットモニタ905は、データセッションに入来するTCP ACK+SYNパケットを監視する。
VPCトンネルは、端末が発したTCP SYNパケットに呼応してローカルマスタが送信したVPC確立要求コマンドに従って、静的NAT或はリバースプロキシで形成するが、サーバ103が何らかの障害等で端末の要求に応えられない場合は、設定したVPCトンネルを破棄しなければならない。そこで、ローカルマスタが送信したVPC確立要求コマンドに従って仮に設定した静的NAT或はリバースプロキシは、タイマを用いて制限時間を設けている。図9では、データセッション管理部910は第一リバースプロキシ911を起動する際に、同時に第一タイマ906も起動する。同様に、データセッション管理部910は第二リバースプロキシ912を起動する際に、同時に第二タイマ907も起動し、第一NAT914を設定する際に、同時に第三タイマ913も起動する。
これらタイマは、仮に起動したリバースプロキシ、或は仮に設定した静的NATをそのまま維持して良いか否かを判断するために用いられる。
リバースプロキシ或は静的NATにて設けられたVPCトンネルに、サーバ103からTCP ACK+SYNパケットが入来したら、サーバ103は端末と通信が可能な状態にあることが判る。そこで、パケットモニタ905はこのTCP ACK+SYNパケットの入来を監視し、TCP ACK+SYNパケットが来たら、対応するリバースプロキシ或は静的NATに連動して動作しているタイマの計時動作を停止する。
もし、タイマに設定された時間内にTCP ACK+SYNパケットが来ないと、タイマは所定の時間を計時した後、該当するリバースプロキシ或は静的NATを停止する。つまり、仮に設定したVPCトンネルは時間切れで破棄される。
【0099】
図示しないリバースプロキシサーバプログラムは、サーバ103にアクセスする際に利用するプロトコルに応じて用意される。HTTPであれば、プロキシモードのリザルトコードを実装する。CIFS(Common Internet File System:Windows(登録商標)のファイル共有サービスのプロトコル(SMB:Server Message Block)が拡張されたプロトコル)やRDPの場合は、IPアドレスの書き換えのみ行う。
【0100】
コントロールセッション管理部909には、ステッピングノードを一意に識別するための情報であるSNID915が接続されている。SNID915は、本実施形態で説明するVPCトンネルを形成する手順において、リバースプロキシを設定するために用いる情報であると共に、後述するコンダクタ115が経路情報を作成する際に用いる情報として重要である。
【0101】
図10は、ステッピングノードの機能ブロック図である。図10に開示するステッピングノード1001は、図9のステッピングノード901とは異なり、ファイアウォールを伴う形式の装置である。
本実施形態のステッピングノード1001は、LAN102のうち、隣接する異なるサブネットの間に配置され、IPリーチャブルなステッピングノード1001同士或はサーバ103とのゲートウェイを兼用する。
【0102】
LAN102に接続される第三NIC1002には固定のIPアドレスが付与されている。
LAN102に接続される第四NIC1003には、第三NIC1002とは異なる固定のIPアドレスが付与されている。
【0103】
第三NIC1002と第四NIC1003との間には、LAN102に接続されている端末が第四NIC1003側のサブネットに接続されているホスト(端末やサーバ103等)が第三NIC1002側のサブネットに接続するための動的NATの機能と、ネットワークのセキュリティ上の脅威から第四NIC1003側のホストを保護するためのパケットフィルタリングの機能を備えたファイアウォール1004が設けられている。
【0104】
図10のステッピングノード1001は、特に社内LANがインターネットに接続するためのファイアウォールとして設置する際に好適である。この場合、第三NIC1002側のネットワークがインターネットであり、第四NIC1003側のネットワークが社内LANになる。そして、第四NIC1003のIPアドレスは社内LANのゲートウェイアドレスとなる。
図10のステッピングノード1001は、ファイアウォール1004と第四NIC1003の存在以外は図9のステッピングノード1001と動作は同じである。第一リバースプロキシ911或は第二リバースプロキシ912等の、データセッション管理部910から起動されるリバースプロキシは、第四NIC1003側に配置されるサーバ103と、第三NIC1002側に配置されるローカルマスタ或はステッピングノード1001との通信を実現する。第一NAT914等の、データセッション管理部910によって設定される静的NATは、第三NIC1002側に配置されるローカルマスタとステッピングノード1001、或はステッピングノード1001同士の通信を実現する。
【0105】
端末が、単にファイアウォール1004の向こう側に存在するサーバ103に対して接続を行うのであれば、LAN102のゲートウェイ或はLAN102とインターネット107との境界に配置される機器に、リバースプロキシを設定すればよい。しかし、この場合、端末はリバースプロキシが稼働するマシンのIPアドレスに対して接続を行うこととなる。このような接続形態は、アプリケーションに元々から備わっているセキュリティ設定によって様々な悪影響を生じる虞がある。
【0106】
具体的には、例えばマイクロソフト社のWindows(登録商標)に標準的に備わっているwebブラウザ「インターネットエクスプローラ」(以下「IE」と略す)では、接続しようとするwebサーバのIPアドレス、FQDN(Full Qualified Domain Name:完全修飾ドメイン名)或はドメイン名を含まないホスト名に応じて、HTML(Hyper Text Markup Language)文書内に埋め込まれたスクリプトや外部アプリケーション等を実行するか否か等のセキュリティ設定を変更する機能が備わっている。LAN102内のwebサーバはLAN102内の端末からアクセスされることを前提にwebアプリケーションが構築されており、インターネット107上のwebサーバでは危険で実行が許されないようなスクリプト等も、利便性を優先してHTML文書内に含まれている。つまり、リバースプロキシだけでは、インターネット107からLAN102内のサーバ103に接続しても、IEを始めとする所望のアプリケーションが正常に動作することが保証できないどころか、異常終了する等の弊害を生じる可能性が高い。
【0107】
この問題を解決するためには、IE等の端末上で動作するアプリケーションに対して、「あたかもLAN内のサーバに接続していると錯覚させる」仕組みが必要である。このための解決策が、静的NATである。静的NATを通じてサーバ103に接続する、ということは、ローカルマスタBOX109の場合では端末と同一サブネットのプライベートアドレスに対して、ソフトローカルマスタ113の場合ではループバックアドレスに対して、接続する、ということとなる。何れの場合も、IEから見ると、パケットに付される宛先IPアドレスはアプリケーションのセキュリティ設定を低い状態にできる「ローカルイントラネット」に属する。こうして、端末はインターネット107を越えてファイアウォール1004の向こう側にあるサーバ103に対し、制限のない「ローカルイントラネット」としてのアクセスを実現する。
【0108】
IPアドレスを変換するメリットは、上述の例に限られない。
企業が合併したり、企業や団体が業務提携をする等の事情で、相互のLAN同士を接続したい場合がある。この場合、夫々の企業は、予め合併することを前提に社内LANを構築していた訳ではないのだから、夫々のLANで使用するプライベートIPアドレスが重複する可能性が十分考えられる。
また、複数の企業や団体に対してネットワークサービスを提供する業者の場合、サービスを提供しようとする企業や団体のLANのIPアドレスが重複する可能性は飛躍的に高くなる。IPアドレスの重複を避けるために、保守サービスの度にネットワークの繋ぎ換えを行うことは非効率的である。
本実施形態のネットワークシステムを用いて、静的NAT及びリバースプロキシを用いてIPアドレスを変換し、ネットワーク接続を仮想化することで、複数のネットワークを接続する際に、IPアドレスの重複に悩む必要がなくなる。
【0109】
[コンダクタ115]
図11はコンダクタ115の機能ブロック図である。
図12はコンダクタ115に含まれるテーブルのフィールド構成を示す図である。
本実施形態のコンダクタ115は、コントロールセッションを通じた、端末のプレイヤ111及びローカルマスタとの通信に特化している。ステッピングノードとは異なり、データセッションは形成しない。
コンダクタ115はネットワークOSが稼働するコンピュータである。OSは一例としてはLinux(登録商標)等の、POSIX系OSが好ましい。
LAN102に接続される第六NIC1101には固定のIPアドレスが付与されている。
【0110】
第六NIC1101に接続されている暗号化通信処理部1102は、ローカルマスタBOX109及びソフトローカルマスタ113に設けられている暗号化通信処理部606と対をなす。つまり、ローカルマスタと認証情報の送受信と、コントロールセッションの暗号化を施す。
認証処理部1103は、機器特定IDマスタ1105及びユーザマスタ1106を参照して、機器認証及び個人認証を遂行する。認証処理部1103は更に、機器認証が成功したローカルマスタに対してはSSIDという、機器特定IDに代わりセッション毎に変化する認証情報を生成し、機器特定IDとSSIDの組をSSIDテーブル1113に書き出す。そして、個人認証が成功したプレイヤ111に対しては、SSIDとユーザIDの組をSSIDテーブル1113に書き出す。つまり、機器認証と個人認証が正常に完遂した場合、SSIDテーブル1113には機器特定ID、SSID及びユーザIDの組のレコードが形成され、機器特定ID、SSID及びユーザIDが紐付けられる。そして、SSID認証を行うことで、機器認証及び個人認証を代行することができる。
【0111】
経路設定部1104は、SNサーバマスタ1110、SNマップマスタ1111及びLM・SNマスタ1112を用いて経路情報を作成し、経路テーブル1114に記録する。また、機器特定IDマスタ1105を参照して、経路テーブル1114に仮想IPアドレスを記述する。
【0112】
機器特定IDマスタ1105は、コンダクタ115が接続を許可するローカルマスタの機器特定IDと、仮想IPアドレス範囲が列挙されているテーブルである。
仮想IPアドレス範囲は、端末のアプリケーションプログラムがサーバ103にアクセスしようとする際に、アプリケーションプログラムがアクセスを試みようとする対象のIPアドレスである。
【0113】
本実施形態のネットワークシステム101は、IPリーチャブルでない端末とサーバを、VPCトンネルで仮想的に接続する。
アプリケーションプログラムがサーバ103にアクセスする際、アプリケーションプログラムは、サーバ103に付されている本来のIPアドレスではない、仮想IPアドレスに対してアクセスを行う。この仮想IPアドレスは、端末からIPリーチャブルであるローカルマスタに付されるように構成する。
図6のローカルマスタBOX109の場合、仮想IPアドレスは第二NIC601のサブネットに属する。例えば、第二NIC601のサブネットが192.168.1.0/24で、第二NIC601のIPアドレスが192.168.1.2である場合、仮想IPアドレスは192.168.1.1から192.168.1.254迄のIPアドレスが用いられる。
図7のソフトローカルマスタ113の場合、仮想IPアドレスはループバック仮想NIC701のサブネットに属する。殆どのネットワークOSの場合、ループバック仮想NIC701には127.0.0.1が付与され、サブネットは127.0.0.0/8であるので、仮想IPアドレスは127.0.0.1から127.255.255.254迄のIPアドレスを用いることができる。
【0114】
機器特定IDマスタ1105の仮想IPアドレス範囲フィールドは、ローカルマスタの構成に基づいて、最適な仮想IPアドレスをローカルマスタ、ひいては端末に提供できるように設けている。ユーザにサービスメニュー情報614を送信する際、仮想IPアドレスの設定はこの仮想IPアドレス範囲フィールドに記されている範囲から記述される。
【0115】
ユーザマスタ1106は、コンダクタ115が接続を許可するユーザのユーザID及びパスワード等の個人認証情報と、当該ユーザの制限設定情報が格納されている。
【0116】
サーバマスタ1107は、仮想サーバIDXと、サーバ名又はサーバのIPアドレスと、当該サーバ103のアクセスに用いられるプロトコル種別と、ポート番号と、端末用リソース文字列等が格納されている。
仮想サーバIDXとは、サーバマスタ1107のレコードを一意に識別するための情報である。これは、異なる拠点に同じサブネットが存在し、そのサブネット上に同じIPアドレス及び同じサービスを提供するサーバがそれぞれ存在する可能性を考慮して、サーバ名等に代わり、サーバを一意に識別するための索引情報を設けている。
また、仮想サーバIDXは、サービスメニュー情報614に含まれる情報であり、端末のアプリケーションがサーバ103に対して接続要求を送信することに呼応して開始するVPC確立シーケンスにおいて、ローカルマスタがコンダクタ115にVPCトンネルの作成を要求するコマンドの中に含まれる。
【0117】
サーバ名又はサーバのIPアドレスは、ポート番号と共にサーバに直近のステッピングノードがサーバにIP接続する際に必要な情報である。当該ステッピングノードにおいて名前解決ができるなら、サーバ名が用いられる。名前解決ができるなら、サーバ名はFQDNであっても、ホスト名だけであってもよい。そうでない場合は、IPアドレスが用いられる。
プロトコル種別は、例えばRDP、HTTP、SSH等の、周知のプロトコルの名称、或はこれに準じる識別情報が格納される。
ポート番号は、当該サーバのアクセスに用いられるポート番号である。HTTPであれば80番、RDPであれば3389番、SSHであれば22番、VNCであれば5900番から5906番迄等と、多くの場合、プロトコル毎に決められている。但し、サーバの設定によっては意図的にポート番号をずらす等の設定変更を行うこともあるので、その際はサーバの設定に合わせる。
【0118】
端末用リソース文字列は、端末がサーバにアクセスする際に用いる、端末のアプリケーションプログラムが接続相手の情報資源を特定する文字列であり、プレイヤ111の専用シェルが設けるアイコンに埋め込まれる、アプリケーションの引数でもある。例えばHTTPであればURLであり、CIFSであればサーバがリソースを提供するルートを示すリソース名称である。
多くの場合、端末用リソース文字列はその全て或は一部に、サーバ名又はサーバのIPアドレスが含まれる。したがって、端末用リソース文字列は、プロトコルによってはその全て或は一部が仮想IPアドレスによって置換される場合がある。
【0119】
例えば、RDPやSSHの場合、端末用リソース文字列はサーバ名又はサーバのIPアドレスと一致する。したがって、このようなプロトコルの場合、端末用リソース文字列は仮想IPアドレスによって全部置換される。
CIFSの場合、端末用リソース文字列の一部はサーバ名又はサーバのIPアドレスと一致する場合がある。したがって、このようなプロトコルの場合、端末用リソース文字列は仮想IPアドレスによって一部置換される。
HTTPの場合、webブラウザは一つのhtml文書に埋め込まれているハイパーリンクに基づいて、不特定多数のwebサーバに接続する可能性が高いので、webブラウザのプロキシサーバの設定に、VPCトンネルの仮想IPアドレスを設定する。このようにwebブラウザを設定すると、webブラウザ自身は全く名前解決を行わず、端末用リソース文字列をそのままプロキシサーバであるVPCトンネルに送信する。実際のwebコンテンツを取得する動作は、webサーバ直近のステッピングノードにて稼働するリバースプロキシが実行する。したがって、このようなプロトコルの場合、端末用リソース文字列は仮想IPアドレスによって置換されない。
【0120】
ユーザサーバマスタ1108は、ユーザIDと、当該ユーザIDのユーザが利用できるサーバ103の仮想サーバIDXの組が格納されている。したがって、ユーザサーバマスタ1108をユーザIDで絞り込み、得られた仮想サーバIDXをキーにしてサーバマスタ1107を検索して得られたレコードが、当該ユーザが利用可能なサーバ103と、そのサーバ103を利用するために必要な情報を含むこととなる。
【0121】
SNマスタ1109は、ステッピングノードを一意に識別するためのSNIDと、ステッピングノードのホスト名(SNホスト名)又はIPアドレスの組と、当該ステッピングノードのIPリーチャブルな範囲にサーバが存在するか否かを示す終端フラグよりなるテーブルである。
経路設定部1104は、後述するSNサーバマスタ1110、SNマップマスタ1111及びLM・SNマスタ1112を用いて経路情報を作成する際、SNIDで経路情報の元データを作成する。そして、最後にSNIDをSNホスト名又はIPアドレスに変換して、経路情報を完成し、ローカルマスタに送信する。
【0122】
SNサーバマスタ1110は、サーバ直近のステッピングノードのSNIDと、仮想サーバIDXの組よりなるテーブルである。
サーバ直近のステッピングノードとは、前述のSNマスタ1109の終端フラグフィールドの値が論理の「真」であるステッピングノードである。
【0123】
一つのサーバに対して、IPリーチャブルなステッピングノードは一つだけとは限らない。つまり、あるサーバに対して接続可能なステッピングノードは、複数存在し得る。また、一つのステッピングノードに対して、IPリーチャブルなサーバは一つだけとは限らない。つまり、あるステッピングノードから接続可能なサーバは、複数存在し得る。つまり、あるローカルマスタからあるサーバへ到達するための経路は、複数存在し得る。
このようなネットワークにおいて、最適な経路をどのように選択すべきかを判断する要素は、ネットワークの距離もさることながら、ネットワークのトラフィックが重要な位置を占める。
そこで、本実施形態のネットワークシステム101は、あるサーバに対してIPリーチャブルなステッピングノードが複数存在し得るように設計した。この、サーバとIPリーチャブルなステッピングノードとの関係を記述するテーブルが、SNサーバマスタ1110である。
あるサーバに接続できるステッピングノードの負荷が増大しているとき、別のステッピングノードから当該サーバに接続するようにVPCトンネルを切り替えることが出来れば、ネットワーク上の負荷を瞬時且つ適切に分散させることができる。
【0124】
SNマップマスタ1111は、ステッピングノードのSNIDと、当該ステッピングノードに隣接するステッピングノードのSNIDの組よりなるテーブルである。
SNマップマスタ1111をSNIDで検索すると、あるステッピングノードに隣接する全てのステッピングノードのSNIDが得られる。
【0125】
LM・SNマスタ1112は、ローカルマスタの機器特定IDと、当該ローカルマスタに隣接するステッピングノードのSNIDの組よりなるテーブルである。
LM・SNマスタ1112をSNIDで検索すると、あるローカルマスタに隣接する全てのステッピングノードのSNIDが得られる。
【0126】
経路設定部1104は、ダイクストラ法等の周知の経路探索アルゴリズムを用いて、ローカルマスタからサーバに到達するための経路情報を作成する。その際、LM・SNマスタ1112を用いて、発信元のローカルマスタに至る全てのステッピングノードのSNIDを得る。同様に、SNサーバマスタ1110を用いて、目的のサーバに至る全てのステッピングノードのSNID、そしてそれに対応する仮想サーバIDXを得る。それら複数の始点と終点の組み合わせを作成した後、夫々の組み合わせにおいて最適な経路情報を作成する。そして、別途ステッピングノードから報告されるトラフィック情報等に基づいて、最適な経路情報を選択する。
なお、構成が単純なLANにおいては、複数の経路情報を予め作成しておき、ローカルマスタから経路情報の要求があった時に、最適な経路情報を読み出して返信する、という方法もある。
【0127】
経路テーブル1114は、SSIDと、仮想サーバIDXと、仮想IPアドレスと、サーバ名又はサーバのIPアドレスと、プロトコル種別と、ポート番号と、経路情報の組よりなるテーブルである。
【0128】
端末が個人認証を完遂した後、サービスメニュー情報614を要求すると、認証処理部1103は、端末から送信されたSSIDでSSIDテーブル1113を検索し、対応するユーザIDを取得する。次に、認証処理部1103はこのユーザIDでユーザサーバマスタ1108を検索し、当該ユーザが利用可能なサーバ103の仮想サーバIDXの一覧を作成する。そして、この仮想サーバIDXの一覧情報を検索キーとしてサーバマスタ1107を検索し、当該ユーザが利用可能なサーバ103を利用するために必要な情報を形成する。更に、経路設定部1104に問い合わせて、現時点で最適な経路情報を算出し、サーバマスタ1107の検索結果に追加する。これがサービスメニュー情報614である。
【0129】
図11及び図12では図示していないが、サービスメニュー情報614は、SSIDと、仮想サーバIDXと、仮想IPアドレスと、サーバ名又はサーバのIPアドレスと、プロトコル種別と、ポート番号と、端末用リソース文字列の組よりなるテーブルである。
【0130】
コンダクタ115は、端末(プレイヤ111)のサービスメニュー情報取得要求に呼応して、サービスメニュー情報614を形成する。形成したサービスメニュー情報614は、一旦経路テーブル1114に記憶する。この時、経路情報は空欄のままにする。そして、要求元の端末にサービスメニュー情報614を返信する。
次に、コンダクタ115は、ローカルマスタの経路情報取得要求に呼応して、経路設定部1104を稼働させ、経路情報を作成する。ローカルマスタはSSIDと仮想サーバIDXを送信してくるので、この仮想サーバIDXを検索キーとして当該サーバに隣接するステッピングノードを検索すると共に、SSIDを検索キーとしてSSIDテーブル1113を検索して機器特定ID608を取得し、機器特定ID608を検索キーとしてLM・SNマスタ1112を検索してローカルマスタに隣接するステッピングノードを検索する。SNマップマスタ1111を用いて、最適な経路情報を算出したら、経路テーブル1114の経路情報フィールドに当該経路情報を書き込むと共に、ローカルマスタに返信する。
【0131】
ローカルマスタがVPCトンネルの作成を要求するコマンドを送信すると、当該コマンドに含まれている経路情報に基づいて、当該経路情報に存在するステッピングノードに静的NATが設定される。そして、当該コマンドがサーバ直近のステッピングノードに到達したら、当該ステッピングノードはコンダクタ115に対して再度の認証と、サーバの諸元を示す情報を要求する。コンダクタ115は当該ステッピングノードがリバースプロキシを設定するために必要な情報である、サーバのホスト名又はIPアドレス、プロトコル種別、ポート番号を返信する。
なお、コンダクタ115は、ローカルマスタが発する問い合わせと、サーバ直近のステッピングノードが発する問い合わせとを区別するため、当該問い合わせの中にSNIDが含まれているか否かを確認する。
問い合わせにSNIDがなければローカルマスタが発する問い合わせであるので、経路情報を返信する。
問い合わせにSNIDがあればサーバ直近のステッピングノードが発する問い合わせであるので、サーバのホスト名又はIPアドレス、プロトコル種別、ポート番号を返信する。
【0132】
これまでの説明で明らかなように、コンダクタ115は、ローカルマスタに対して機器認証と個人認証の二重の認証を行い、ローカルマスタとの間にコントロールセッションを形成する。そして、端末を操作するユーザにサーバ103との接続を実現するために、端末の要求に応じて、ローカルマスタから適切なステッピングノードを経由して目的のサーバ103に到達するための経路情報を形成し、ローカルマスタに送信する。
また、VPCトンネルを形成する手順においては、VPCトンネルの始端であるローカルマスタと、終端に位置するステッピングノードに、それぞれSSID認証を行う。ローカルマスタのSSID認証が成功したら、経路情報をローカルマスタに送信する。ステッピングノードのSSID認証が成功したら、リバースプロキシを設定してサーバ103に接続するための、サーバ103の情報をステッピングノードに送信する。
【0133】
[動作の概略]
図13以降、図19を除いて図21迄は、本実施形態のネットワークシステム101において、端末がネットワーク的に遠隔に配置されるサーバ103に接続して、サーバ103の資源が利用可能になり、その後サービスを終了する迄の動作の流れを示すタイムチャートである。
先ず、動作の流れの概要を説明する。
図13は、本実施形態のネットワークシステム101の、全体的な動作の流れを示すタイムチャートである。
ローカルマスタは、起動すると、直ちにコンダクタ115に対してコントロールセッションを通じて機器特定ID608の認証を試みる。これが機器特定ID認証シーケンス(S1301)である。
端末のプレイヤ111は、ローカルマスタが機器特定ID認証シーケンスで機器特定ID608の認証に成功すると、ログイン画面を表示部206に表示する。ユーザはこの状態から、個人認証を実行する。個人認証情報はコントロールセッションを通じてコンダクタ115に送信され、認証結果が端末のプレイヤ111に返送される。これが個人認証シーケンス(S1302)である。
個人認証シーケンスが正常終了すると、プレイヤ111は直ちにサービスメニュー情報614を取得すべく、コントロールセッションを通じてコンダクタ115に要求する。コンダクタ115は、サービスメニュー情報614と制限設定情報610をプレイヤ111に返信する。これがメニュー取得シーケンス(S1303)である。
【0134】
ユーザが端末の画面に表示されているアイコンをクリックする等の操作を実行すると、アイコンに埋め込まれているコマンドライン文字列に記述されているアプリケーションプログラムが実行される。アプリケーションプログラムは、ローカルマスタに接続要求パケット(TCP SYNパケット)を送信する。ローカルマスタはこの接続要求パケットを確認すると、コントロールセッションを通じてコンダクタ115に対して経路情報を要求する。コンダクタ115は経路情報をローカルマスタに返信する。コンダクタ115は受信した経路情報を含むVPC確立要求コマンドを作成し、コントロールセッションを通じて経路情報に従ってステッピングノードに送信する。最後のステッピングノードを除く、経路情報に記述されているステッピングノードはVPC確立要求コマンドを転送すると共に、VPC、つまりデータセッションを形成するための静的NATを設定する。経路情報に記述されている最後のステッピングノードは、自らが経路情報の最後に位置するステッピングノードであることを認識すると、コンダクタに対して接続するサーバに関する情報を問い合わせて、コンダクタからサーバのIPアドレス、ポート番号、プロトコル種別を取得する。そして、これら情報に基づいて、適切なリバースプロキシを実行する。そして、端末が発した接続要求パケットが経路情報に記述されている最後のステッピングノードによってサーバ103に到達する。サーバ103が返信する応答パケットは、仮に形成されたVPCトンネルを確定させて、端末に到達する。これがVPC確立シーケンス(S1304)である。
VPC確立シーケンスが遂行された後は、形成されたVPCトンネルを用いて端末とサーバ103が仮想的な接続状態の中で通信を実行する。これがVPCデータ転送状態(S1305)である。
【0135】
VPCトンネルの破棄は、基本的に端末の能動的な終了を示す情報の送信によって行われる。これがVPC切断シーケンス(S1306)である。
ユーザが端末の使用を停止したい場合は、ログアウトを宣言する。ログアウトの宣言はコントロールセッションを通じてコンダクタ115に送信され、端末に返送される。これがユーザログアウトシーケンス(S1307)である。
端末を通じてローカルマスタBOX109の電源を落とすか、ソフトローカルマスタ113がインストールされている端末をシャットダウンする等でローカルマスタの動作を終了させると、その情報はコンダクタ115に通知される。これがローカルマスタシャットダウン(S1308)である。
【0136】
[機器特定ID認証シーケンス]
図14は、機器特定ID認証シーケンスのタイムチャートである。図13のステップS1301の詳細である。
ローカルマスタは、起動して(S1401)、LAN102と接続されてIPリーチャブルになったことを認識すると、直ちにコンダクタ115に対してコントロールセッションを通じて機器特定ID608の認証要求を送信する(S1402)。
ローカルマスタは、コンダクタ115のアドレスを直接的には知らない。しかし、コンダクタ115に通信を行う際、どのIPリーチャブルなステッピングノードに通信を試みればよいのかを示す、「デフォルトゲートウェイ」のホスト名或はIPアドレスを内部に保持している。本実施形態では、デフォルトゲートウェイは第一SN107である。そこで、ローカルマスタは第一SN107にコンダクタ115に対する機器認証要求を、コントロールセッションを通じて送信する。
【0137】
第一SN107はローカルマスタから機器特定ID608の認証要求を受信すると、それがコンダクタ115に対する要求であることをコントロールセッション管理部609が認識する。そして、デフォルトゲートウェイアドレス612に記されているステッピングノード(本実施形態では第二SN108)に、機器特定ID608の認証要求を転送する(S1403)。
【0138】
第二SN108は、コンダクタ115とIPリーチャブルである。このため、ローカルマスタBOX109や第一SN107とは異なり、「デフォルトゲートウェイ」の代わりに、コンダクタアドレス908にコンダクタ115のホスト名或はIPアドレスを保持している。
第二SN108も第一SN107と同様に、第一SN107から機器特定ID608の認証要求を受信すると、コンダクタアドレス908に記されているコンダクタ115に、機器特定ID608の認証要求を転送する(S1404)。こうして、コンダクタ115はローカルマスタが送信した機器特定ID608の認証要求を受信する。
【0139】
コンダクタ115は、第二SN108から受信したローカルマスタの機器特定ID608で機器特定IDマスタ1105を検索し、当該機器特定ID608が正規のローカルマスタを示す情報であるか否か、確認する(S1405)。検索結果(機器特定ID認証結果)は直前に受信した相手、つまり第二SN108へ返信する(S1406)。
第二SN108のコントロールセッション管理部609は、コンダクタ115から受信した機器特定ID認証結果を第一SN107に転送する(S1407)。
第一SN107のコントロールセッション管理部609は、第二SN108から受信した機器特定ID認証結果をローカルマスタに転送する(S1408)。
ローカルマスタは、第一SN107から受信した機器特定ID認証結果を見て、正常に認証が行われたか否かを確認する(S1409)。正常に認証できなかった場合(S1409のNO)は異常終了となり、以降の操作は不可能になる(S1410)。正常に認証できた場合(S1409のYES)は、ローカルマスタのコントロールセッション管理部609は、機器特定ID認証結果に含まれているSSIDをSSIDメモリ613に記憶する(S1411)。
【0140】
一方、端末のプレイヤ111は起動すると(S1412)、ローカルマスタに対してSSIDの転送を要求する。
ローカルマスタがSSIDをコンダクタ115から取得して記憶していない状態では、SSIDの転送要求は失敗する(S1413)が、ローカルマスタがSSIDをコンダクタ115から取得して記憶した以降では、SSIDの転送要求(S1414)に対して、ローカルマスタはSSIDメモリ613に格納されているSSIDを読み出して(S1415)、端末に応答する(S1416)ので、プレイヤ111はSSIDを受信し(S1417)、これを記憶する(S1418)。
なお、ソフトローカルマスタ113の場合、SSIDメモリ613はプレイヤ111と共用することとなるので、ステップS1417及びS1418は省略される。
プレイヤ111は、SSIDの取得が正常に終了できたことに呼応して、表示部206にログイン画面を表示する(S1419)。
以上が、機器特定ID認証シーケンスである。
【0141】
機器特定ID認証シーケンスが正常終了すると、これ以降はローカルマスタが機器特定ID608を送信する代わりに、SSIDでローカルマスタを特定することができる。機器特定ID608は固定であるが、SSIDはローカルマスタが起動する度に変化するので、セキュリティの向上に寄与する。
【0142】
[個人認証シーケンス及びメニュー取得シーケンス]
図15(a)及び(b)は、個人認証シーケンスとメニュー取得シーケンスのタイムチャートである。図16は、メニュー取得シーケンスのタイムチャートである。図13のステップS1302とステップS1303の詳細である。
図15(a)は、個人認証シーケンスを示す。
ユーザは端末のICカードリーダ104或はキーボード等を操作して、ユーザID及びパスワード等の、個人認証情報を入力する。個人認証情報はSSIDを伴って、プレイヤ111によってコントロールセッションを通じてローカルマスタに転送される(S1501)。
プレイヤ111から個人認証情報及びSSIDを受信したローカルマスタは、デフォルトゲートウェイアドレス612に従って第一SN107に転送する(S1502)。
ローカルマスタから個人認証情報及びSSIDを受信した第一SN107は、デフォルトゲートウェイアドレス612に従って第二SN108に転送する(S1503)。
第一SN107から個人認証情報及びSSIDを受信した第二SN108は、コンダクタアドレス908に従ってコンダクタ115に転送する(S1504)。
【0143】
第二SN108から個人認証情報及びSSIDを受信したコンダクタ115は、個人認証情報でユーザマスタ1106を検索し(S1505)、検索結果(ユーザID認証結果)を直前に受信した相手、つまり第二SN108へ返信する(S1506)。そして、ユーザID認証結果が正常であれば、SSIDテーブル1113にユーザIDを記述する(S1507)。
第二SN108は、コンダクタ115から受信したユーザID認証結果を第一SN107に転送する(S1508)。
第一SN107は、第二SN108から受信したユーザID認証結果をローカルマスタに転送する(S1509)。
ローカルマスタは、第一SN107から受信したユーザID認証結果を端末に転送する(S1510)。
【0144】
端末のプレイヤ111は、ローカルマスタから受信したユーザID認証結果を見て、正常に認証が行われたか否かを確認する(S1511)。正常に認証できなかった場合(S1511のNO)は表示部206にエラーメッセージを表示した(S1512)後、再びログイン画面を表示する(図14のS1419)。
正常に認証できた場合(S1511のYES)は、メニュー取得シーケンスに移行する。
以上が、個人認証シーケンスである。
【0145】
個人認証シーケンスが正常終了すると、これ以降は(ステップS1507において)ユーザIDとSSIDの紐付けが行われたこと、つまり「誰がどの端末を使用しているのか」が明らかになったことを意味する。したがって、SSIDの認証を行うと、機器の特定と個人認証も同時に実行出来ることとなる。個人認証情報は固定であるが、SSIDはローカルマスタが起動する度に変化するので、セキュリティの向上に寄与する。
【0146】
図15(b)及び図16は、メニュー取得シーケンスを示す。
端末のプレイヤ111は、ローカルマスタから受信したユーザID認証結果を見て、正常に認証が行われたか否かを確認した結果(S1511)、正常に認証できた場合(S1511のYES)は、最初にコンダクタ115に対してコントロールセッションを通じてSSIDの認証を要求する(S1513)。
SSID認証要求は、ローカルマスタ(S1514)、第一SN107(S1515)、第二SN108(S1516)と転送されて、コンダクタ115に到達する。コンダクタ115は受信したSSIDでSSIDテーブル1113を検索し(S1517)、検索結果(SSID認証結果)を直前に受信した相手、つまり第二SN108へ返信する(S1518)。
コンダクタ115から返信されるSSID認証結果は、第二SN108(S1519)、第一SN107(S1520)、ローカルマスタ(S1521)と転送されて、端末のプレイヤ111に戻される。
端末のプレイヤ111は、ローカルマスタから受信したSSID認証結果を見て、正常に認証が行われたか否かを確認する(S1522)。正常に認証できなかった場合(S1522のNO)は表示部206にエラーメッセージを表示した(S1523)後、再びログイン画面を表示する(図14のS1419)。
【0147】
図16を参照して、メニュー取得シーケンスの説明を続ける。
ステップS1511で、正常に認証できた場合(S1511のYES)は、プレイヤ111はコンダクタ115に対してサービスメニュー情報614の送信を要求する(S1624)。
プレイヤ111が送信するサービスメニュー情報要求は、ローカルマスタ(S1625)、第一SN107(S1626)、第二SN108(S1627)と転送されて、コンダクタ115に到達する。コンダクタ115はSSIDテーブル1113とユーザサーバマスタ1108とサーバマスタ1107を検索し(S1628)、検索結果(サービスメニュー情報614)を直前に受信した相手、つまり第二SN108へ返信する(S1629)。なお、この時、ユーザマスタ1106から制限設定情報610も読み出して、サービスメニュー情報614と共に返信する。
コンダクタ115から返信されるサービスメニュー情報614と制限設定情報610は、第二SN108(S1630)、第一SN107(S1631)と転送される。
【0148】
ローカルマスタは、第一SN107からサービスメニュー情報614と制限設定情報610を受信すると、内部に記憶して、端末に転送する(S1632)。そして、サービスメニュー情報614と制限設定情報610に基づいて種々の設定を行う(S1633)。
端末のプレイヤ111は、ローカルマスタからサービスメニュー情報614と制限設定情報610を受信すると、内部に記憶する(S1634)。そして、サービスメニュー情報614と制限設定情報610に基づいて種々の設定を行う(S1635)。
【0149】
ステップS1624からステップS1635迄の動作(P1636)は、サービスに対応するプロトコル毎に繰り返して実行される(P1637)。例えば、ユーザが利用可能なプロトコルがRDPとHTTPである場合は、先ずRDPについて手順P1636が実行された後、次にHTTPについて手順P1636が実行される。
ユーザが享受できる全てのサービスに対応するサービスメニュー情報614の取得が完遂すると、端末はメニューを表示部206に表示する(S1638)。
以上が、メニュー取得シーケンスである。
【0150】
[VPC確立シーケンス及びVPCデータ転送状態]
図17は、VPC確立シーケンスのタイムチャートである。図18は、VPC確立シーケンスとVPCデータ転送状態のタイムチャートである。図13のステップS1304とステップS1305の詳細である。
ユーザは端末のプレイヤ111の専用シェル208によって形成され、表示部206に表示されているアイコンを操作して、アプリケーションプログラムを起動すると、アプリケーションプログラムからTCP SYNパケットが発生する(S1701)。ローカルマスタのパケット監視部615は、TCP SYNパケットを捕捉すると、TCP SYNパケットの宛先IPアドレス及びポート番号から、アプリケーションプログラムが要求するサーバ103とプロトコルを判別する。そして、コンダクタ115に対して経路情報の取得を要求する。但し、経路情報の取得に先立って、認証が必要であるので、先ずはコンダクタ115に対し、SSID認証を要求する(S1702)。
【0151】
ステップS1702において、ローカルマスタのパケット監視部615は、TCP SYNパケットの宛先IPアドレス及びポート番号から、アプリケーションプログラムが要求するサーバ103とプロトコルを判別する必要がある。したがって、サービスメニュー情報614に列挙されるサービスの各レコードは、宛先IPアドレス及びポート番号の組み合わせにおいて一意でなければならない。ある一つのプロトコルで複数のサーバが提供するサービスをユーザに提供する場合は、仮想IPアドレスを異ならせるか、可能であればポート番号を異ならせることによって、サービスメニュー情報614の各レコードの一意性を確保する。
【0152】
ローカルマスタから発されるSSID認証要求は、第一SN107(S1703)、第二SN108(S1704)と転送され、コンダクタ115に到達する。コンダクタ115はSSIDテーブル1113を検索し(S1705)、SSID認証結果を返信する(S1706)。SSID認証結果は、第二SN108(S1707)、第一SN107(S1708)と転送され、ローカルマスタに到達する。
ローカルマスタは、SSID認証結果が異常値であれば(S1709のNO)、端末にその旨を報告する。この場合、端末は表示部206にエラーを表示する(S1710)。
SSID認証結果が正常値であれば(S1709のYES)、ステップS1702から始まったSSID認証シーケンスは終了する。
【0153】
ローカルマスタは、SSID認証シーケンスが正常終了したことを認識すると、次にコンダクタ115に対して目的とするサーバ103への経路情報の取得を要求する(S1711)。
ローカルマスタから発される経路情報取得要求は、第一SN107(S1712)、第二SN108(S1713)と転送され、コンダクタ115に到達する。
コンダクタ115の経路設定部1104は、ダイクストラ法等の周知の経路探索アルゴリズムを用いて、ローカルマスタからサーバに到達するための経路情報を作成し、返信する(S1715)。経路情報は、第二SN108(S1716)、第一SN107(S1717)と転送され、ローカルマスタに到達する。ローカルマスタは、受信した経路情報を一旦RAMに記憶する(S1718)。この時点で、ステップS1711から始まった経路情報取得シーケンスは終了する。
【0154】
図18を参照して、VPC確立シーケンスの説明を続ける。
ローカルマスタは、コンダクタ115から受信した経路情報を基に、VPC確立要求コマンドを作成し、経路情報に基づいて最初のステッピングノードである第一SN107に送信する(S1819)。
【0155】
第一SN107は、ローカルマスタからVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードでないことが判ったら、ローカルマスタと経路情報の隣に位置する第二SN108との間に静的NATを設定する。そして、経路情報に基づいて最初のステッピングノードである第二SN108に送信する(S1820)。
【0156】
第二SN108は、第一SN107からVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードでないことが判ったら、第一SN107と経路情報の隣に位置する第三SN112との間に静的NATを設定する。そして、経路情報に基づいて最初のステッピングノードである第三SN112に送信する(S1821)。
【0157】
第三SN112は、第二SN108からVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードでないことが判ったら、第二SN108と経路情報の隣に位置する第四SN114との間に静的NATを設定する。そして、経路情報に基づいて最初のステッピングノードである第四SN114に送信する(S1822)。
【0158】
第四SN114は、第三SN112からVPC確立要求コマンドを受信すると、自らが経路情報の最後であるか否かを確認する。経路情報の最後のステッピングノードであることが判ったら(S1823)、VPC確立要求コマンドに含まれているSSIDを用いて、コンダクタ115に対し、SSID認証を要求する(S1824)。
【0159】
第四SN114から発されるSSID認証要求は、第三SN112(S1825)によって転送され、コンダクタ115に到達する。コンダクタ115はSSIDテーブル1113を検索し(S1826)、SSID認証結果を返信する(S1827)。SSID認証結果は、第三SN112(S1828)によって転送され、第四SN114に到達する。
第四SN114は、SSID認証結果が異常値であれば(S1829のNO)、異常終了する(S1830)。この場合、ステップS1820において第一SN107が、ステップS1821において第二SN108が、そしてステップS1822において第三SN112が設定したNAT設定は、NAT設定の際に同時に設定したタイマがタイムアウトを計時することによって消滅する。
SSID認証結果が正常値であれば(S1829のYES)、次にコンダクタ115に対して、目的とするサーバ103に対してリバースプロキシを設定するために必要な情報である、サーバ103のIPアドレス、ポート番号及びプロトコル種別を要求する(S1831)。
第四SN114から発されるサーバ情報要求は、第三SN112(S1832)によって転送され、コンダクタ115に到達する。
コンダクタ115の経路設定部1104は、サーバ情報要求を受信すると、サーバ情報要求に含まれている仮想サーバIDXを用いて経路テーブル1114を検索して、サーバ103のIPアドレス、ポート番号及びプロトコル種別を第四SN114へ返信する(S1834)。
コンダクタ115が送信するサーバ情報は、第三SN112(S1835)によって転送され、第四SN114に到達する。
第四SN114は、サーバ103のIPアドレス、ポート番号及びプロトコル種別を用いて、第三SN112とサーバ103との間にリバースプロキシを設定する(S1836)。そして、サーバ103のホスト名又はIPアドレス、そしてポート番号に対し、TCP SYNパケットを送信する(S1837)。
こうして、図17のステップS1701において端末のアプリケーションプログラムが発したTCP SYNパケットは、ステップS1838にてサーバ103に到達する。
【0160】
第四SN114からTCP SYNパケットを受信したサーバ103は、VPC等とは一切関係なく、周知のTCPの3ウェイハンドシェイクに則り、TCP ACK+SYNパケットを、第四SN114へ返信する(S1826)。TCP ACK+SYNパケットは、第四SN114、第三SN112、第二SN108、第一SN107及びローカルマスタに仮に設定されている、データセッション(VPCトンネル)を通過する(S1839からS1845へ)。
【0161】
第四SN114のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当するリバースプロキシに設定されているタイマを停止し、ステップS1836にて仮に実行したリバースプロキシを確定させる(S1840)。
【0162】
第三SN112のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当する静的NATに設定されているタイマを停止し、ステップS1822にて仮に実行した静的NATを確定させる(S1841)。
【0163】
第二SN108のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当する静的NATに設定されているタイマを停止し、ステップS1821にて仮に実行した静的NATを確定させる(S1842)。
【0164】
第一SN107のパケットモニタ905は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をデータセッション管理部910に報告する。データセッション管理部910は、該当する静的NATに設定されているタイマを停止し、ステップS1820にて仮に実行した静的NATを確定させる(S1843)。
【0165】
ローカルマスタのパケット監視部615は、データセッションを通過するTCP ACK+SYNパケットを検出すると、その旨をコントロールセッション管理部609に報告する。コントロールセッション管理部609は、該当する静的NATを確定させる(S1844)。
この時点で、端末とサーバ103の間に存在する、ローカルマスタ、第一SN107、第二SN108、第三SN112及び第四SN114が形成するVPCトンネルが確定する(S1846)。
【0166】
端末は、サーバ103からVPCトンネルを介して返信されたTCP ACK+SYNパケットを受信すると、周知のTCPの3ウェイハンドシェイクに則り、TCP ACKパケットを、VPCトンネルを介してサーバ103へ返信する(S1845)。これ以降は、端末はTCP/IP第四層(アプリケーション)に従う処理でVPCトンネルを介してサーバ103にアクセスし(S1847)、サーバ103も同様にクライアントのアクセスに応答する(S1848)。
【0167】
図19は、VPC確立シーケンスに流れるパケット及びVPC確立要求コマンドの概要を示す概略図である。
第一端末105から送信されるTCP SYNパケットは、データセッションで送信される。
ローカルマスタBOX109は、TCP SYNパケットを受信すると、VPC確立要求コマンドを作成して、コントロールセッションを通じて第一SN107に送信する。
VPC確立要求コマンドに含まれている経路情報は、ステッピングノードのホスト名又はIPアドレスで構成される。
VPCトンネルを形成するステッピングノードの最終地点である第四SN114は、コントロールセッションで受信したVPC確立要求コマンドを受けると、データセッションからサーバ103に向けてTCP SYNパケットを送信する。
TCP SYNパケットを受信すると、サーバ103はデータセッションを通じてTCP ACK+SYNパケットを返信する。このTCP ACK+SYNパケットは、各ステッピングノードに既に仮に形成されているリバースプロキシ及び静的NATで成り立つデータセッション、つまりVPCトンネルを通過して、第一端末105に到達する。そして、このTCP ACK+SYNパケットが、仮設定状態である各ステッピングノードのリバースプロキシ又は静的NATを確定させる。
【0168】
図17、図18及び図19を見て判るように、本実施形態のネットワークシステムは、周知のTCPの3ウェイハンドシェイクの、最初のTCP SYNパケットの転送に介在する。
ローカルマスタがTCP SYNパケットを検出すると(S1702)、SSID認証シーケンス(S1702からS1709まで)の後、コンダクタ115に経路情報を要求する(S1711)。
すると、コンダクタ115はその時点で最良の経路情報を作成し(S1714)、ローカルマスタに送信する(S1715)。
ローカルマスタは経路情報を含んだVPC確立コマンドを、経路情報の最初に記述されているステッピングノードに送信する(S1819)。
VPC確立コマンドを受信した、経路情報の最後でないステッピングノードは、コマンドに含まれている経路情報に従って、当該コマンドを次のステッピングノードに転送すると共に、データセッションに静的NATを設定する(S1820、S1821、S1822)。
VPC確立コマンドを受信した、経路情報の最後に位置するステッピングノードは、自らが経路情報の最後であることを認識すると(S1823)、VPC確立コマンドに含まれているSSIDを用いてSSID認証シーケンス(S1824からS1829まで)を実行した後、コンダクタ115にサーバ情報を要求する(S1831)。すると、コンダクタ115はサーバ情報を検索し(S1833)、経路情報の最後に位置するステッピングノードに送信する(S1834)。
経路情報の最後に位置するステッピングノードはサーバ情報に基づいてリバースプロキシを設定して(S1836)、当該サーバにTCP SYNパケットを送信する(S1837)。
【0169】
従来技術のVPN製品では、アプリケーションプログラムに介在する形式で、ユーザ認証を行い、VPNのトンネルを形成する。このため、VPN接続したいアプリケーションプログラムが増えれば、そのプログラムに対応する個人認証のためのプログラム等を別途用意する必要がある。
しかし、本実施形態のネットワークシステムでは、機器認証及び個人認証と、VPCトンネルを形成する手順が完全に分離している。最初の認証手順で機器認証及び個人認証が成功すれば、その後はサービスメニュー情報614に列挙されているサーバに接続するアプリケーションプログラムは、何ら特別なプログラムを伴う必要もなく、単に指定されたコマンドライン文字列に記述されているリソースに対してアクセスを行えばよい。VPC確立シーケンスではSSIDを用いた認証が、VPCトンネルの始端であるローカルマスタと、終端に位置するステッピングノードで実行されるが、ユーザもアプリケーションプログラムも全くこれを意識する必要はない。
【0170】
[VPC切断シーケンス]
図20は、VPCトンネルを通過する通信のプロトコルがコネクション型の通信である場合における、VPC切断シーケンスを示すタイムチャートである。図13のステップS1306の詳細である。
VPCトンネルを通過させる通信のプロトコルが、HTTPのようなコネクションレス型の場合は、TCP FINパケットも含めて全てのパケットを滞り無く転送させる必要があるが、RDPやSSHのようなコネクション型の場合は、TCP FINパケットが送信されるとアプリケーションプログラムが終了したことを意味する。つまり、切断のための専用のコマンドをコントロールセッションを通じて送らずとも、通常のTCPにおける通信終了の手続きをモニタして、VPCトンネルの終了のきっかけにすることができる。
ユーザが端末のアプリケーションプログラムを操作して通信を終了させると、アプリケーションプログラムは周知のTCPにおける通信終了の手続きを行う(S2001)。この時にアプリケーションプログラムが送信するTCP FINパケットがローカルマスタに到達すると、ローカルマスタもTCPにおける通信終了の手続きを行う(S2002)。ローカルマスタは、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2003)。
【0171】
ローカルマスタは、第一SN107に対してもTCPにおける通信終了の手続きを行う。この時にローカルマスタが送信するTCP FINパケットが第一SN107に到達すると、第一SN107もTCPにおける通信終了の手続きを行う(S2004)。第一SN107は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2005)。
【0172】
第一SN107は、第二SN108に対してもTCPにおける通信終了の手続きを行う。この時に第一SN107が送信するTCP FINパケットが第二SN108に到達すると、第二SN108もTCPにおける通信終了の手続きを行う(S2006)。第二SN108は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2007)。
【0173】
第二SN108は、第三SN112に対してもTCPにおける通信終了の手続きを行う。この時に第二SN108が送信するTCP FINパケットが第三SN112に到達すると、第三SN112もTCPにおける通信終了の手続きを行う(S2008)。第三SN112は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していた静的NATの設定を解除する(S2009)。
【0174】
第三SN112は、第四SN114に対してもTCPにおける通信終了の手続きを行う。この時に第三SN112が送信するTCP FINパケットが第四SN114に到達すると、第四SN114もTCPにおける通信終了の手続きを行う(S2010)。第四SN114は、TCPの通信終了の手続きを終えると、VPCトンネルを形成していたリバースプロキシの設定を解除する(S2011)。
サーバ103は、第四SN114が送信するTCP FINパケットに呼応して、通信の終了の手続きを行う(S2012)。
【0175】
[ユーザログアウトシーケンス及びローカルマスタシャットダウン]
図21(a)及び(b)は、ユーザログアウトシーケンス及びローカルマスタシャットダウンを示すタイムチャートである。図13のステップS1307及びステップS1308の詳細である。
ユーザが端末の使用を停止したい場合は、ユーザは端末の専用シェル208を操作して、ログアウトを宣言する(S2101)。ログアウトの宣言はコントロールセッションを通じてコンダクタ115に送信され(S2102)、第一SN107(S2103)及び第二SN108(S2104)にて転送された後、端末に到達する(S2105)。コンダクタ115は、ユーザログアウト処理として、SSIDテーブル1113に記述されている当該ユーザのユーザIDを抹消する(S2105)。つまり、SSIDとユーザIDとの紐付けが解除される。ログアウト処理の完遂報告は、コンダクタ115から送信され(S2106)、第二SN108(S2107)、第一SN107(S2108)、ローカルマスタ(S2109)を経て、端末に到達する(S2111)。
この時、ローカルマスタではユーザログアウトを受けてサービスメニュー情報614及び制限設定情報610を破棄する(S2110)。
同様に、端末のプレイヤ111はユーザログアウトを受けてサービスメニュー情報614及び制限設定情報610を破棄する(S2112)。
【0176】
端末を通じてローカルマスタBOX109の電源を落とすか、ソフトローカルマスタ113がインストールされている端末をシャットダウンする等でローカルマスタの動作を終了させると(S2113)、その情報は第一SN107(S2114)及び第二SN108(S2115)を通じてコンダクタ115に通知される。コンダクタ115は、この通知を受けて、SSIDテーブル1113のSSIDを抹消する(S2116)。
【0177】
以上の説明から解るように、本実施形態のネットワークシステム101では、端末のアプリケーションプログラムがサーバ103へ接続しようとすると、初めてコントロールセッションとは異なるポートでデータセッションを形成する。端末が接続しようとするサーバが異なれば、その都度異なるデータセッションが形成される。コンダクタ115がユーザ毎に利用できるサーバ103の資源を経路テーブル1114で管理しているので、データセッションの重複等の事故を引き起こすことなく、多数のユーザに対して容易に仮想接続サービスを提供することができる。
【0178】
本実施形態は、以下のような応用例が可能である。
(1)コンダクタ115の機器特定IDマスタ1105及びユーザマスタ1106は、コンダクタ115とは異なるサーバ103に置いて、ネットワークを通じて認証処理部1103が参照してもよい。
【0179】
(2)ローカルマスタが複数のコンダクタ115に対して同時にアクセスすることもできる。この場合、ローカルマスタは後から接続するステッピングノードに対して、個人認証を完了した直後に、既に先に接続済みのステッピングノードで割り当て済みの端末用ターゲットアドレスを報告し、それぞれのステッピングノードで端末用ターゲットアドレスが重複しないように調停する必要がある。
【0180】
(3)ソフトローカルマスタ113の機能構成を、ローカルマスタBOX109と同等の構成にすることができる。
図7のソフトローカルマスタ113は、ループバック仮想NIC701をVPCを用いたアクセスに用いていたが、ループバック仮想NIC701の代わりに、図6のローカルマスタBOX109の第二NIC601のように、ソフトウェアで構成するNICに代えることができる。このようなソフトウェアのNICは、Windows(登録商標)の場合、非特許文献1に開示されているソフトウェア製品の他、TAP−Win32(http://cipe-win32.sourceforge.net/)等、公知のプログラムが幾つか存在する。Linux(登録商標)の場合、カーネルのドライバに「Universal TUN/TAP device driver」という名称で備わっている。
【0181】
(4)端末が据え置き型であり、LAN102から移動する可能性が極めて低い場合は、プレイヤ111のAPIフック処理部813を稼働させて、端末の挙動を制限しなくても良い。この場合、ネットワークシステム101にとって、プレイヤ111は、サービスメニュー情報614を保持し、専用シェル208を起動する機能が求められる。
【0182】
(5)ステッピングノードは、自身が接続されているネットワーク上にIPリーチャブルなサーバが存在しない場合は、リバースプロキシを起動する機能を持たなくても良い。
【0183】
本実施形態では、ネットワークドライバ806と、これに使用する静的NAT形成装置(ローカルマスタBOX109、ソフトローカルマスタ113)、端末管理装置(プレイヤ111)、リバースプロキシサーバ(ステッピングノード)、仮想ネットワーク接続制御装置(コンダクタ115)を開示した。
ローカルマスタBOX109或はソフトローカルマスタ113とステッピングノードがコントロールセッションを通じて機器認証及び個人認証を実行した後、端末のアプリケーションプログラムがコンダクタ115の先に存在するプライベートネットワーク内のサーバ103に対する接続を要求したら、ローカルマスタBOX109或はソフトローカルマスタ113及び経路途中のステッピングノードは静的NATを、サーバ103直近のステッピングノードはリバースプロキシを設定して、端末とサーバ103との間にデータセッションを形成する。このようにネットワークシステム101を構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、直接的にはIPリーチャブルでない端末とサーバ103との接続が実現できる。更に、接続の際にはプレイヤ111が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
【0184】
一般的に、サーバを構成する際のBSDソケットプログラミングの作法は、クライアントの接続を待機するポートを開けて、クライアントが接続してきたら、次のクライアントの接続を待つために再度ポートを開ける、という作法である。つまり、サーバは常時特定のポートが開いていることとなる。ポートが開けっ放しである、ということは、悪意ある第三者がそのポートを通じて当該サーバプログラムの脆弱性を探査するきっかけになり得る。
【0185】
発明者は、ステッピングノードが擁する複数のプロトコルに対応する複数のリバースプロキシプログラムに存在するかもしれない脆弱性を、第三者から突かれる可能性を排除するために、常時開けるポートと実際に端末とデータとを接続するポートを別にした。ステッピングノードが形成するデータセッションは、本来のBSDソケットプログラミングにおけるサーバの作法とは異なり、データセッションが確立しても同じデータセッションに該当するポートは開かない。あくまでも端末から接続要求がない限り、データセッションは形成されないし、そのためのポートも開くことはない。第三者がステッピングノードをポートスキャンすると、コントロールセッションのためのポートしか開いていないように見える。
【0186】
更に、本実施形態に係るネットワークシステム101に接続されるローカルマスタには、各ローカルマスタを一意に識別するための機器特定ID608が与えられている。この機器特定ID608は、IPアドレスとは別であり、コントロールセッションで認証情報としてのみ使用される。
ここで翻って、本実施形態のネットワークシステム101のデータセッションに流れるパケットについて考察し、説明する。
【0187】
端末から発されるパケットは、ソフトローカルマスタ113の場合、送信元IPアドレスはループバックアドレス(127.0.0.1)であり、送信先IPアドレスはループバックアドレスが属するクラスCのサブネットに含まれるアドレス(127.0.0.x)である。ローカルマスタBOX109の場合、送信元IPアドレスはプライベートアドレス(一例として192.168.0.1)であり、送信先IPアドレスはプライベートアドレスが属するクラスCのサブネットに含まれるアドレス(192.168.0.x)である。
これらパケットは、ソフトローカルマスタ113又はローカルマスタBOX109で、静的NATによって送信元IPアドレス及び送信先IPアドレス(と、必要であればポート番号も)が書き換えられる。送信元IPアドレスはDHCPサーバからソフトローカルマスタ113又はローカルマスタBOX109に付与されたIPアドレスが、送信先IPアドレスとポート番号は、直近のステッピングノードのIPアドレスとデータセッションのためのポート番号に、それぞれ書き換えられる。
【0188】
更に、これらパケットは、複数のステッピングノードを通過する。パケットは、VPCトンネルを構成するステッピングノードが設定する静的NAT或はリバースプロキシによって、送信元IPアドレス及び送信先IPアドレス(と、必要であればポート番号も)が次々と書き換えられる。最終的にサーバ103に到達するパケットは、送信元IPアドレスはサーバ103に直近のステッピングノードのIPアドレスが、送信先IPアドレスとポート番号は、サーバ103のプライベートアドレスとポート番号に、それぞれ書き換えられる。
このように、通信路を通過するパケットのIPアドレスが拠点を通過する度に次々に書き換えられる状況において、端末の一意性を保証する情報である機器特定ID608は何のために使用されなければならないのかを考えると、機器特定ID608は「端末が当該サーバ103に接続する資格を有する」ことを示す情報である、ということが判る。そして、この情報は必ずしも端末にサービスを提供するサーバ103が抱えていなければならないものではなく、所定の認証を実行できる機器(コンダクタ115)が存在していればよいのである。
【0189】
周知の通り、IPv4はアドレスが枯渇しつつある、という喫緊の問題に直面している。では何故アドレスが枯渇しつつあるのか。一見すれば、IPアドレスのビット数が足りないから、と、普通なら考えるだろう。しかし、もっと根源的な問題は、通信路を行き交うパケットの行き先を決めるIPアドレスに、端末の一意性を求めようとしたことである。IPアドレスはプロトコルとして定められ、パケットに必ず付されるビット列であるから、固定長でなければならず、容易にそのビット列を拡大させるようなことはできない。これがそもそもの間違いの元だった、と、発明者は考えた。
【0190】
端末の一意性を求める情報は、端末の一意性を求める状況、つまり認証行為にのみ使用すればよく、パケットの行き先を定める情報とは明確に区別するべきである。この技術思想に立脚して、発明者は、IPアドレスから端末の一意性を求めることを否定し、IPアドレスはパケットの行き先にのみ使用される情報と割り切って、通信路の仮想化と、認証行為を基に、ネットワークシステムの再構築を試みた。これが、本実施形態である。
【0191】
本実施形態のローカルマスタに含まれる機器特定ID608は、プロトコルとして定められ、パケットのヘッダとして組み込まれているIPアドレスではなく、認証にのみ使用されるデータである。したがって、ネットワークドライバ806の規模や必要に応じて、幾らでもビット列を拡大させたり、フォーマットを変更する等の行為をしても、パケットのフォーマットは変わらないので、全く問題は発生しない。本実施形態において、発明者は試作品を作成した際、機器特定ID608に12バイトを割り当てたが、勿論、もっと長大なビット列にしてもよい。
【0192】
図1を見て判るように、本実施形態のネットワークシステム101は、IPリーチャブルでないサブネット間を、ステッピングノードを辿ることで安全に越える事ができる。この技術を応用すると、隣り合ってさえいなければ、複数の同じサブネットが経路上に存在していても、本実施形態のネットワークシステム101は成立する。つまり、原理的にはプライベートIPアドレスだけでほぼ無限大に広大なネットワークを構築することができる。
以上のように、本実施形態のネットワークシステム101は、IPv4プロトコルの可能性を拡大する技術としての一面も備えている。
【0193】
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【0194】
101…ネットワークシステム、102…LAN、103…サーバ、104…ICカードリーダ、105…第一端末、106…第二端末、107…インターネット、109…ローカルマスタBOX、110…DHCPサーバ、111…プレイヤ、113…ソフトローカルマスタ、115…コンダクタ、201…ネットワークOS、202…シェル、203…第三アプリケーション、204…ストレージ、205…操作部、206…表示部、207…内蔵USBインターフェース、208…専用シェル、209…第一アプリケーション、210…第二アプリケーション、301…内蔵NIC、403…USB−Bコネクタ、404…ネットワークコネクタ、502…CPU、503…RAM、504…フラッシュメモリ、505…USBインターフェース、507…第一NIC、508…バス、601…第二NIC、602…DHCPクライアント、603…アドレス重複回避部、604…DHCPサーバ、605…NAT設定部、606…暗号化通信処理部、608…機器特定ID、609…コントロールセッション管理部、610…制限設定情報、611…パケットフィルタ設定部、612…デフォルトゲートウェイアドレス、613…SSIDメモリ、614…サービスメニュー情報、615…パケット監視部、701…ループバック仮想NIC、702…DHCPクライアント、705…NAT設定部、706…パケットフィルタ設定部、801…操作ドライバ、802…表示制御部、803…ファイルシステム、804…プロセス制御部、805…クリップボードバッファ、806…ネットワークドライバ、807…コントロールセッション管理部、808…操作情報取得部、809…画面キャプチャ処理部、810…ファイルシステム監視部、811…プロセス監視部、812…クリップボード監視部、813…APIフック処理部、901…ステッピングノード、902…第五NIC、904…暗号化通信処理部、905…パケットモニタ、906…第一タイマ、907…第二タイマ、908…コンダクタアドレス、909…コントロールセッション管理部、910…データセッション管理部、911…第一リバースプロキシ、912…第二リバースプロキシ、913…第三タイマ、914…第一NAT、915…SNID、1001…ステッピングノード、1002…第三NIC、1003…第四NIC、1004…ファイアウォール、1101…第六NIC、1102…暗号化通信処理部、1103…認証処理部、1104…経路設定部、1105…機器特定IDマスタ、1106…ユーザマスタ、1107…サーバマスタ、1108…ユーザサーバマスタ、1109…SNマスタ、1110…SNサーバマスタ、1111…SNマップマスタ、1112…LM・SNマスタ、1113…SSIDテーブル、1114…経路テーブル
【特許請求の範囲】
【請求項1】
直近の第一のネットワークに接続される第一のNICと、
前記第一のNICに対してIPリーチャブルでない第二のネットワーク上に配置されるサーバに対して、端末が静的NATを用いた接続を行うために用いられる第二のNICと、
前記第二のNICと前記第一のNICとの間に介在し、前記端末が前記第二のネットワーク上に存在するリバースプロキシサーバを通じて前記サーバと通信するパケットに適用する前記静的NATを設定するNAT設定部と
よりなる静的NAT形成装置。
【請求項2】
更に、
各装置を一意に識別可能な機器特定IDと、
前記リバースプロキシサーバに接続する際、所定の認証手順を実行する仮想接続制御装置に対してコントロールセッションを形成し、前記コントロールセッションを通じて前記機器特定IDを用いて機器認証を行うと共に、前記機器認証が成功すると前記コントロールセッションを通じて前記仮想接続制御装置と制御情報を送受信するコントロールセッション管理部と
を備える、請求項1記載の静的NAT形成装置。
【請求項3】
前記コントロールセッション管理部は、前記機器認証を完遂した後、前記端末が使用するユーザを認証する個人認証を行い、前記個人認証が成功すると、前記ユーザが利用可能な前記サーバと前記サーバに対応する仮想IPアドレスの情報を前記仮想接続制御装置から受信する、請求項2記載の静的NAT形成装置。
【請求項4】
ネットワークに接続される第一のNICと、
端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、
前記端末がサーバに接続するためにリバースプロキシを起動して前記第一のNICを通じて前記端末とデータセッションを形成すると共に、前記端末がサーバに到達するために必要な他の装置に接続するために静的NATを設定して前記第一のNICを通じて前記端末とデータセッションを形成するデータセッション管理部と
よりなるリバースプロキシサーバ。
【請求項5】
ネットワークに接続される第一のNICと、
端末が接続しようとするサーバが存在するネットワークに接続される第二のNICと、
前記端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、
前記端末がサーバに接続するためにリバースプロキシを起動して前記第一のNICと前記第二のNICとの間にデータセッションを形成すると共に、前記端末がサーバに到達するために必要な他の装置に接続するために静的NATを設定して前記第一のNICを通じて前記端末とデータセッションを形成するデータセッション管理部と
よりなるリバースプロキシサーバ。
【請求項6】
静的NAT形成装置が内包する機器特定IDが格納される機器特定IDマスタと、
前記静的NAT形成装置に接続されるか又は前記静的NAT形成装置を内蔵する端末を使用するユーザの個人認証情報が格納されるユーザマスタと、
前記静的NAT形成装置から前記機器特定IDを受信して前記機器特定IDマスタを用いて機器認証を行うと共に、前記端末から前記ユーザの前記個人認証情報を受信して前記ユーザマスタを用いて個人認証を行う認証処理部と、
前記機器認証及び前記個人認証が正常終了した前記端末に接続されるか又は内蔵される前記静的NAT形成装置の要求に応じて、前記端末が所望のサーバに仮想接続を実施するための経路情報を作成する経路設定部と
よりなる仮想接続制御装置。
【請求項7】
前記機器特定IDマスタは更に、前記端末にて実行されるアプリケーションプログラムが接続しようとする仮想IPアドレスの範囲が格納される、請求項6記載の仮想接続制御装置。
【請求項1】
直近の第一のネットワークに接続される第一のNICと、
前記第一のNICに対してIPリーチャブルでない第二のネットワーク上に配置されるサーバに対して、端末が静的NATを用いた接続を行うために用いられる第二のNICと、
前記第二のNICと前記第一のNICとの間に介在し、前記端末が前記第二のネットワーク上に存在するリバースプロキシサーバを通じて前記サーバと通信するパケットに適用する前記静的NATを設定するNAT設定部と
よりなる静的NAT形成装置。
【請求項2】
更に、
各装置を一意に識別可能な機器特定IDと、
前記リバースプロキシサーバに接続する際、所定の認証手順を実行する仮想接続制御装置に対してコントロールセッションを形成し、前記コントロールセッションを通じて前記機器特定IDを用いて機器認証を行うと共に、前記機器認証が成功すると前記コントロールセッションを通じて前記仮想接続制御装置と制御情報を送受信するコントロールセッション管理部と
を備える、請求項1記載の静的NAT形成装置。
【請求項3】
前記コントロールセッション管理部は、前記機器認証を完遂した後、前記端末が使用するユーザを認証する個人認証を行い、前記個人認証が成功すると、前記ユーザが利用可能な前記サーバと前記サーバに対応する仮想IPアドレスの情報を前記仮想接続制御装置から受信する、請求項2記載の静的NAT形成装置。
【請求項4】
ネットワークに接続される第一のNICと、
端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、
前記端末がサーバに接続するためにリバースプロキシを起動して前記第一のNICを通じて前記端末とデータセッションを形成すると共に、前記端末がサーバに到達するために必要な他の装置に接続するために静的NATを設定して前記第一のNICを通じて前記端末とデータセッションを形成するデータセッション管理部と
よりなるリバースプロキシサーバ。
【請求項5】
ネットワークに接続される第一のNICと、
端末が接続しようとするサーバが存在するネットワークに接続される第二のNICと、
前記端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、
前記端末がサーバに接続するためにリバースプロキシを起動して前記第一のNICと前記第二のNICとの間にデータセッションを形成すると共に、前記端末がサーバに到達するために必要な他の装置に接続するために静的NATを設定して前記第一のNICを通じて前記端末とデータセッションを形成するデータセッション管理部と
よりなるリバースプロキシサーバ。
【請求項6】
静的NAT形成装置が内包する機器特定IDが格納される機器特定IDマスタと、
前記静的NAT形成装置に接続されるか又は前記静的NAT形成装置を内蔵する端末を使用するユーザの個人認証情報が格納されるユーザマスタと、
前記静的NAT形成装置から前記機器特定IDを受信して前記機器特定IDマスタを用いて機器認証を行うと共に、前記端末から前記ユーザの前記個人認証情報を受信して前記ユーザマスタを用いて個人認証を行う認証処理部と、
前記機器認証及び前記個人認証が正常終了した前記端末に接続されるか又は内蔵される前記静的NAT形成装置の要求に応じて、前記端末が所望のサーバに仮想接続を実施するための経路情報を作成する経路設定部と
よりなる仮想接続制御装置。
【請求項7】
前記機器特定IDマスタは更に、前記端末にて実行されるアプリケーションプログラムが接続しようとする仮想IPアドレスの範囲が格納される、請求項6記載の仮想接続制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2012−54909(P2012−54909A)
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願番号】特願2011−155512(P2011−155512)
【出願日】平成23年7月14日(2011.7.14)
【分割の表示】特願2010−194959(P2010−194959)の分割
【原出願日】平成22年8月31日(2010.8.31)
【出願人】(508132481)株式会社スプリングソフト (6)
【Fターム(参考)】
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願日】平成23年7月14日(2011.7.14)
【分割の表示】特願2010−194959(P2010−194959)の分割
【原出願日】平成22年8月31日(2010.8.31)
【出願人】(508132481)株式会社スプリングソフト (6)
【Fターム(参考)】
[ Back to top ]