JP2011223636A - ポートフォワード形成装置及びリバースプロキシサーバ - Google Patents

ポートフォワード形成装置及びリバースプロキシサーバ Download PDF

Info

Publication number
JP2011223636A
JP2011223636A JP2011166336A JP2011166336A JP2011223636A JP 2011223636 A JP2011223636 A JP 2011223636A JP 2011166336 A JP2011166336 A JP 2011166336A JP 2011166336 A JP2011166336 A JP 2011166336A JP 2011223636 A JP2011223636 A JP 2011223636A
Authority
JP
Japan
Prior art keywords
terminal
server
ini
authentication
reverse proxy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011166336A
Other languages
English (en)
Inventor
Fumihiko Sugiyama
文彦 杉山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Springsoft Inc
Original Assignee
Springsoft Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Springsoft Inc filed Critical Springsoft Inc
Priority to JP2011166336A priority Critical patent/JP2011223636A/ja
Publication of JP2011223636A publication Critical patent/JP2011223636A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムに使用するネットワーク接続装置及びリバースプロキシ装置を提供する。
【解決手段】ポートフォワード形成装置がコントロールセッションを通じて認証を実行した後、端末がリバースプロキシサーバの先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、ポートフォワード形成装置はポートフォワーディングを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。更に、接続の際には挙動制限部が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
【選択図】図1

Description

本発明は、ポートフォワード形成装置及びリバースプロキシサーバに関する。
より詳細には、従来の仮想プライベートネットワーク(Virtual Private Network:以下「VPN」)の問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規な仮想プライベートネットワークシステムに使用するポートフォワード形成装置、そしてリバースプロキシサーバに関する。
今日、インターネットから端を発するIPネットワークは、我々の社会生活及び企業活動に必要不可欠な存在である。企業には社屋内にLANが張られており、このLANには企業の機密情報等も含まれるファイルサーバ等のサーバも接続されている。従業員はLANに接続されたパソコン等の端末を用いて、サーバが提供する情報資源を利用して業務を遂行する。一般的に、企業のLANは機密情報を含むサーバ等を守るため、LANのインターネットとの接続点にはファイアウォールが設けられている。こうして、LANは悪意ある第三者がインターネットから容易に企業のLAN内に侵入できないように構成されている。
従業員が外出先でもノートパソコン等の端末を用いて企業内LANに接続して業務を遂行したい場合、このファイアウォールが邪魔になる。インターネットからファイアウォールを越えて企業のLANに安全に接続するための技術として、VPNが用いられている。
VPNはその接続形態によって様々な種類があるが、大別すると二通りの技術に分類できる。
一つは、LANの外に存在する端末にLANのサブネットに属するIPアドレスを付与する手法である。
もう一つは、ポートフォワーディング又は静的NAT(Network Address Translation)と呼ばれる手法である。
特開2009−272771号公報
「PacketiX VPN 入門 - PacketiXVPN の特徴」ソフトイーサ株式会社[2010年3月25日検索]、インターネット<URL:http://www.softether.co.jp/jp/vpn2/introduction/about_vpn.aspx> 「特集 : ブロードバンド・ルータ徹底攻略ガイド」アイティメディア株式会社[2010年3月25日検索]、インターネット<URL:http://www.atmarkit.co.jp/fpc/special/bbrouter_desc/portforward_dmz.html> 「インターネットごしにsshでサーバ管理をしてみよう −@IT」アイティメディア株式会社[2010年3月25日検索]、インターネット<URL:http://www.atmarkit.co.jp/fnetwork/rensai/tcp27/01.html>
先ず、前者の、LANの外に存在する端末にLANのサブネットに属するIPアドレスを付与する手法について説明する。これは非特許文献1に開示される技術である。
殆どの企業内LANはIPv4のプライベートアドレスを用いている。そこで、LANの外、つまりインターネットに接続されている端末にも企業内LANのサブネットに属するプライベートアドレスを付与する。しかし、端末に備えられているネットワークインターフェースカード(Network Interface Card:以下「NIC」)には、既にインターネットサービスプロバイダ(Internet Service Provider:以下「ISP」)によってグローバルIPアドレスが付与されている。そこで、仮想的なNICをソフトウェアで実現し、これに企業内LANのサブネットに属するIPアドレスを付与する。そして、この仮想NICに対する通信は暗号化してファイアウォールを通過させる。
この手法の問題点は、当該端末はLANのサブネットに属していながらファイアウォールで守られていない、インターネットに直に接続している、という点である。つまり、セキュリティ面で非常に問題がある。当該端末は、コンピュータウィルスやワーム、またDoSと呼ばれるサービス不能攻撃等の脅威に晒される。また、情報漏洩の可能性も高い。
更に、ISPが付与するIPアドレスがプライベートアドレスである場合、ISPが付与するIPアドレスと、VPNが付与するIPアドレスが衝突する可能性がある。現在でもケーブルテレビ系列のISPやネットカフェ等の公衆インターネット接続拠点では、端末にプライベートアドレスを付与している。またこれに留まらず、今後IPv4アドレスの枯渇に伴って普及が予測される「キャリアグレードNAT」(http://itpro.nikkeibp.co.jp/article/COLUMN/20080625/309452/)が広く実施されると、IPアドレスの衝突の可能性は飛躍的に高まることが予想できる。
次に、後者のポートフォワーディング又は静的NATと呼ばれる手法について説明する。これは非特許文献2及び非特許文献3に開示される技術である。
例えば、ある家庭に192.168.0.0/24というプライベートネットワークが構築されているとする。この家庭内LAN内にwebサーバを構築し、ブロードバンドルータを介してインターネットに公開したい場合、ブロードバンドルータに「ポートフォワード設定」或は「静的NAT設定」と呼ばれる、特定のポート番号のパケットをLAN内の特定のマシン(サーバ)に振り向ける設定を施す。
今、ブロードバンドルータには家庭内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のカーネルの機能(ドライバ)として実装されていることが多い。
ブロードバンドルータは単にインターネットから来るパケットをLAN内に振り向けることしかしないので、セキュリティ面に問題がある。そこで、通信経路の暗号化と認証を伴ってセキュリティの向上を図った手法が、OpenSSH(http://www.openssh.com/ja/)等のアプリケーションである。これは非特許文献3に開示されている。
しかし、OpenSSHは、接続するユーザ毎に公開鍵を生成して配布する手間が生じると共に、クライアントである端末にSSHクライアントと公開鍵をインストールする必要がある。また、OpenSSHのような技術は潜在的なセキュリティのリスクを完全に払拭できてはいない。つまり、OpenSSH自身のセキュリティ面の脆弱性の大小に依存する。そして、OpenSSHのサーバであるsshdは、既定値ではポート22番を開放するので、ポート22番に対するDoS攻撃等のリスクも存在する。更に、OpenSSHはクライアントである端末自体のセキュリティについては何もしないので、別途端末のセキュリティ面を考慮して対策を施す必要がある。
以上に述べたVPNの手法は、いずれも「インターネットからLAN内のサーバに繋げる」という目的にのみ特化して構築されている。また、その接続の技術も設定項目が多く面倒であったり、接続不能になる可能性が払拭できない等、完全ではない。そして、セキュリティ面の対策は別途考慮して対策を施さなければならない。
本発明はかかる課題を解決し、上述した従来のVPNの問題点を解消し、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムに使用するポートフォワード形成装置及びリバースプロキシサーバを提供することを目的とする。
上記課題を解決するために、本発明のポートフォワード形成装置は、インターネットに接続される第一のNICと、インターネットの先に存在するプライベートネットワーク上に配置されるサーバに対して、端末がポートフォワーディングを用いた接続を行うために用いられる第二のNICと、第一のNICを通じて送受信されるパケットの通過を制限するパケットフィルタと、端末がサーバに接続するためのリバースプロキシを形成するリバースプロキシサーバに接続するためのポートフォワーディングを、第二のNICに設定するポートフォワード設定部とよりなる。
また、上記課題を解決するために、本発明のリバースプロキシサーバは、インターネットに接続される第一のNICと、端末が接続しようとするサーバが存在するプライベートネットワークに接続される第二のNICと、端末に対して認証を行う認証部と、認証を完遂した端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、端末がサーバに接続するために第一のNICと第二のNICを接続するリバースプロキシを起動して端末とデータセッションを形成するデータセッション管理部とよりなる。
ポートフォワード形成装置がコントロールセッションを通じて認証を実行した後、端末がリバースプロキシサーバの先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、ポートフォワード形成装置はポートフォワーディングを、リバースプロキシサーバはリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステムを構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォールを越えた端末のサーバに対する接続が実現できる。更に、接続の際には挙動制限部が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
本発明により、極めて軽量なソフトウェア及びハードウェアの追加で、柔軟な運用性且つ強固なセキュリティを実現する、新規なネットワークシステムに使用するポートフォワード形成装置及びリバースプロキシサーバを提供できる。
本実施形態のネットワークシステムの概略図である。 第一端末に注目したネットワークシステムの概略図である。 第二端末に注目したネットワークシステムの概略図である。 INI−BOXの外観斜視図である。 INI−BOXのハードウェア構成を示すブロック図である。 INI−BOXの機能ブロック図である。 ソフトINIの機能ブロック図である。 RTAの機能ブロック図である。 NCの機能ブロック図である。 端末がインターネットに接続して、認証を完遂する迄の動作の流れを示すタイムチャートである。 端末がインターネットに接続して、認証を完遂する迄の動作の流れを示すタイムチャートである。 端末からアプリケーションを起動して、LAN内のサーバに接続する動作の流れを示すタイムチャートである。 サーバテーブルと、仮想資源テーブルと、ユーザ資源テーブルの概略図である。
[実施形態の概要]
本実施形態の概略を説明する。
本発明は、インターネットを通じてLAN内のサーバに安全に接続する仕組みを提供する。一例としては、従業員が、外出先或は自宅からインターネットを通じて、企業内LANに接続されているサーバに安全に接続するための仕組みである。この仕組みを実現するために、以下の装置及びプログラムを新たに設ける。これより説明する三種類の装置及びプログラムは、全て従来のネットワーク技術には同等の機能を提供する装置等が存在しないので、発明者及び出願人が独自に名称を付している。
・ネットワークセンタ(Network Center:以下「NC」と略)
リバースプロキシサーバとも呼べるNCは、LANとインターネットとの間に設けられ、必要に応じてリバースプロキシを起動し、インターネットに接続される端末とLAN内のサーバを接続する。一見すると、NCはリバースプロキシサーバが稼働するゲートウェイであるように見えるが、端末の認証を通じて、端末から接続要求があった時だけリバースプロキシのプロセスを起動する。したがって、NCは通常のサーバとは異なり、不必要にポートを開けないので、セキュリティ面で有利である。
・インテリジェントネットワークインターフェース(Intelligent Network Interface:以下「INI」と略)
ポートフォワード形成装置とも呼べるINIは、自身がNCに接続できる資格を有する装置であることを示す機器特定IDを内包しており、NCに対して端末認証(個体認証)とユーザ認証(個人認証)の二重の認証を実行する。先ず、端末認証が完遂すると、INIはNCと制御用の通信路を形成する。これをコントロールセッションと呼ぶ。コントロールセッションが形成されると、INIは次にユーザ認証を実行する。ユーザ認証が完遂すると、INIは端末に対してユーザが接続可能なサーバに関する情報(仮想資源テーブル)及び様々な制御を行うための情報(制限情報)よりなる制御設定情報をNCから受信する。
ユーザが端末を操作して当該サーバに接続する要求を発すると、INIはコントロールセッションを通じてNCに対してサーバへの接続要求を送信する。そして、NCによって要求が認められると、NCと当該サーバのための暗号化された通信路(データセッション)を形成すると共に、パケットフィルタとポートフォワーディングの設定を行う。
パケットフィルタは、端末の動作をサーバとの接続にのみ制限し、不用意にインターネット上の任意のサーバに接続する等の事故発生要因を排除するために設定する。NCから送信される制限情報には、送受信を禁止される(又は送受信を許可される)IPアドレスの範囲が列挙され、この制限情報に従ってパケットフィルタは設定される。
ポートフォワーディングによって、リバースプロキシであるNCを介して送受信するサーバとのパケットは、端末のローカル側に位置するNICに対するパケットとして、相手側を示すアドレスが、また必要に応じてポート番号も書き換えられる。端末はあたかもローカルのNICと通信しているような状態で、LAN内のサーバと通信することができる。
INIは、端末に接続されるハードウェアとして構成されるもの(以下「INI−BOX」)と、端末内にインストールされるソフトウェアとして構成されるもの(以下「ソフトINI」)と、二通りの形態がある。いずれも、提供する機能は同じである。違いは、INI−BOXは内蔵するローカル側NICにポートフォワーディングをする一方、ソフトINIはネットワークOSが標準で内蔵するループバック仮想NICにポートフォワーディングをする、という点である。
INIは、発明者が過去に発明して出願した特許文献1に開示される技術を基に、更に機能の整理と改良を施した装置及びプログラムである。
これ以降、単に「INI」と記す場合は、INI−BOXとソフトINIの両者を指す単語であると定義する。
・リアルタイムエージェント(RealTime Agent:以下「RTA」と略)
端末がインターネットに接続された状態で、更にINIとNCを通じてLAN内のサーバに接続すると、様々なセキュリティ面の懸念が生じる。そこで、端末の動作を強力に制限するために、端末にはこのRTAをインストールしておく。
挙動制限部とも呼べるRTAはINIと通信を行い、ユーザ認証のためのユーザインターフェースを提供すると共に、INIとNCとの通信が成立すると、OSの幾つかのアプリケーションプログラムインターフェース(Application Program Interface:以下「API」)をフックする。
NCから送信され、INIを通じて与えられる制限情報には、実行を禁止される(又は実行を許可される)アプリケーションプログラムや、閲覧、編集、移動又は削除を禁止されるファイル等が列挙されている。RTAはこの制限情報に従ってフックしたAPIを監視し、端末の挙動を強力に制限する。
また、RTAはシェルとしての機能も提供する。ユーザ認証が正常に終了すると、RTAは端末の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ(コマンドライン)を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバのサーバ名がアプリケーションの引数として指定されている。RTAの子プロセスとしてアプリケーションが起動されるので、RTAはアプリケーションの挙動を容易に把握できる。
RTAはウィルスチェッカやマルウェア等のAPIフックの技術を応用している。RTAはNCの制御下にあるので、フックしたAPIで異常な挙動を検出したら、直ちに実行を停止してNCに報告することもできる。この技術を高度に応用すると、未知のウィルスに対しても防御が可能になるので、昨今問題になっている「ゼロデイ攻撃」(プログラムのセキュリティホールが発表され、当該プログラムのセキュリティホールを修正するパッチが提供されるよりも以前の時点で、悪意ある者によって実際に当該セキュリティホールを突いた攻撃が行われたり、当該セキュリティホールを悪用する不正プログラムが出現すること)にも対応が可能になる。また、端末に誤ってウィルスが混入してしまっても、一旦RTAが起動してNCと接続されると、APIフックの結果から不審な挙動が直ちに判明するので、NCは当該端末の接続を強制切断する等の緊急措置を瞬時に実行することができる。
以上、三つの装置及びプログラムで、インターネット上に存在する端末は、INIによるポートフォワーディングとNCによるリバースプロキシを通じてLAN内のサーバに接続することができる。その際、端末の挙動はRTAによってサーバに対する通信のみ許可され、それ以外の挙動は大幅に制限される。
この接続形態では、ポートフォワーディングとリバースプロキシのそれぞれにおいて、パケットに付されるIPアドレスは二回書き換えられる。その結果、端末は非特許文献1に開示されるような、LAN内のIPアドレスを付与されるような状態にはならず、非特許文献3に開示されるポートフォワーディングの接続形態に近い状態になる。
[全体構成]
図1は、本実施形態のネットワークシステムの概略図である。
ある企業の図示しない社屋内にはLAN102が敷設され、LAN102には第一サーバ103、第二サーバ104、第一端末105及び第二端末106が接続されている。また、LAN102とインターネット107との間にはファイアウォールを兼用するNC108が接続されている。
第一端末105及び第二端末106はノートパソコンであり、従業員が外出先或は自宅に持ち出すことが可能である。
今、図示しない従業員Aが第一端末105を社屋から持ち出し、図示しない自宅で作業を継続しようとする。従業員Aは第一端末105にINI−BOX109を接続して、INI−BOX109を第一ISP110が提供する図示しないモデムに接続する。すると、第一端末105はINI−BOX109と第一ISP110を通じてインターネット107に接続される。INI−BOX109はインターネット107に接続されると、直ちにNC108に対して端末認証を試みる。但し、端末認証が正常に終了しても、ユーザ認証が行われない限り、第一端末105は通常の状態と同様にインターネット接続及びインターネット107上の所望のwebサーバ等の接続は可能であり、また逆にNC108を通じたLAN102内の第一サーバ103又は第二サーバ104との接続はできない。
従業員Aは第一端末105を操作してユーザ認証を実行すると、第一端末105にインストールされたRTA111とINI−BOX109の作用によって、第一端末105はNC108と接続される。そして、第一端末105はこの時点でそれまでは実行できていたインターネット107上の所望のwebサーバ等の接続ができなくなる。次に、従業員AはRTA111によって表示される、第一サーバ103に接続するためのアイコンをクリックすると、アイコンに埋め込まれているコマンド名のアプリケーションが起動し、アプリケーションからINI−BOX109を通じてNC108に第一サーバ103に対する接続要求が送信される。NC108はINI−BOX109から接続要求を受信すると、第一サーバ103を第一端末105に接続するためのリバースプロキシを起動し、NC108とINI−BOX109との間にデータセッションを形成する。一方、INI−BOX109はポートフォワーディングを設定して、第一端末105から第一サーバ103に接続するための通信路を形成する。こうして、従業員Aは第一端末105を操作して第一サーバ103に接続し、所望の作業を継続することが可能になる。
次に、従業員Bが第二端末106を社屋から持ち出し、外出先からインターネット接続を用いて作業を継続しようとする。従業員Bは第二端末106を第二ISP112が提供するインターネット接続サービスに接続する。すると、第二端末106は第二ISP112を通じてインターネット107に接続される。第二端末106にインストールされているソフトINI113は、第二端末106がインターネット107に接続されると、直ちにNC108に対して端末認証を試みる。但し、端末認証が正常に終了しても、ユーザ認証が行われない限り、第二端末106は通常の状態と同様にインターネット接続及びインターネット107上の所望のwebサーバ等の接続は可能であり、また逆にNC108を通じたLAN102内の第一サーバ103又は第二サーバ104との接続はできない。
従業員Bは第二端末106を操作してユーザ認証を実行すると、第二端末106にインストールされたRTA111とソフトINI113の作用によって、第二端末106はNC108と接続される。そして、第二端末106はこの時点でそれまでは実行できていたインターネット107上の所望のwebサーバ等の接続ができなくなる。次に、従業員BはRTA111によって表示される、第二サーバ104に接続するためのアイコンをクリックすると、アイコンに埋め込まれているコマンド名のアプリケーションが起動し、アプリケーションからソフトINI113を通じてNC108に第二サーバ104に対する接続要求が送信される。NC108はソフトINI113から接続要求を受信すると、第二サーバ104を第二端末106に接続するためのリバースプロキシを起動し、NC108とソフトINI113との間にデータセッションを形成する。一方、ソフトINI113はポートフォワーディングを設定して、第二端末106から第二サーバ104に接続するための通信路を形成する。こうして、従業員Bは第二端末106を操作して第二サーバ104に接続し、所望の作業を継続することが可能になる。
第一端末105はINI−BOX109を介してインターネット107に接続した。一方、第二端末106はソフトINI113がインストールされているので、OS内に構成されているネットワークシステムが直にインターネット107に接続した。何れの場合においてもLAN102内の第一サーバ103及び第二サーバ104に接続することが可能になる。
図2は第一端末105に注目したネットワークシステムの概略図である。紙面の都合上、図2及び後述する図3ではNC108が接続されるインターネット107の表記は省略している。
第一端末105にはOS201がインストールされており、OS201の一部であるシェル202を通じて第三アプリケーション203等のアプリケーションプログラムが実行される。第一端末105にはこの他にRTA111がインストールされており、所定の操作によって実行される。
OS201は一般的なマルチタスクのネットワークOSであり、一例としてはWindows(登録商標)である。これ以降、第一端末105及び第二端末106にはWindows(登録商標)がインストールされていることを前提として説明するが、OS201はWindows(登録商標)に限定されず、例えばLinux(登録商標)等のPOSIX系OSであってもよい。
OS201は第一端末105のハードウェアである、ハードディスク等のストレージ204、キーボード及びマウス等の操作部205、液晶ディスプレイ等の表示部206、そして内蔵USBインターフェース207とのデータの入出力を掌握し、アプリケーションがこれらのハードウェアを容易に利用できるためのAPIを提供する。
RTA111は、INI−BOX109がユーザ認証を完遂すると、OS201の幾つかのAPIをフックして、第一端末105全体の挙動を大幅に制限する。また、異常を検出したらその際の発生状況等をINI−BOX109を通じてNC108に報告する。
更に、RTA111はシェル202としての機能も提供する。ユーザが第一サーバ103に接続するために、RTA111がユーザ提供するユーザインターフェースが、専用シェル208である。ユーザ認証が正常に終了すると、RTA111の専用シェル208は端末の画面にウィンドウを表示し、そのウィンドウの中にアイコンを表示する。アイコンはアプリケーションの起動パラメータ(コマンドライン)を内包しており、実行を許可するアプリケーション名と、アクセスを許可するサーバのサーバ名がアプリケーションの引数として指定されている。このようにして、RTA111の子プロセスとして起動されたアプリケーションプログラムが、図2の第一アプリケーション209及び第二アプリケーション210である。RTA111の子プロセスとしてアプリケーションが起動されるので、RTA111はアプリケーションの挙動を容易に把握できる。
図2では、専用シェル208から起動された第一アプリケーション209及び第二アプリケーション210が表示されている。一方、第一端末105がユーザ認証を完了するまでに既に実行されているOS201のシェル202と第三アプリケーション203が、別途起動された状態である。これらはRTA111の専用シェル208の子プロセスとして起動されたアプリケーションではないので、RTA111のAPIフック機能でその挙動が大幅に制限される。また、実行を禁じられているアプリケーション、「ファイルを開く」動作が禁じられているファイルに対するアプリケーションの起動はRTA111によって阻害され、実行できなくなる。
第一端末105の内蔵USBインターフェース207には、INI−BOX109が接続されている。INI−BOX109には後述するDHCPクライアントが内蔵されており、第一ISP110と接続されることでインターネット接続ができるようになる。第一ISP110はインターネット接続環境をエンドユーザに提供する事業者であるが、説明の都合上、インターネット接続のために動的グローバルIPアドレスを提供するDHCPサーバとインターネット107とのゲートウェイであると仮定する。
INI−BOX109が第一ISP110を通じてインターネット107に接続されると、NC108とも接続できるようになる。INI−BOX109はインターネット107と接続されることを認識すると、直ちにNC108に対して端末認証を試みる。NC108は後述する端末テーブルを内蔵し、端末テーブルにはINI−BOX109に内包されている機器特定IDが列挙されている。NC108は、端末認証を要求してきたINI−BOX109或はソフトINI113が、NC108がサーバと接続することを許可する端末であることを、端末テーブル内に当該INI−BOX109或はソフトINI113の機器特定IDが存在することで認識し、正常に認証したことを相手に通知する。
INI−BOX109が端末認証に成功すると、INI−BOX109は内蔵USBインターフェース207を通じてRTA111に端末認証の成功を報告する。この時、RTA111は内蔵USBインターフェース207上に構築されるIPネットワークを通じて、INI−BOX109と所定の制御情報等の送受信を行う。RTA111は端末認証の成功を受けて表示部206にユーザ認証のための入力画面を表示し、ユーザによる操作部205の操作を受け入れる。
図3は第二端末106に注目したネットワークシステムの概略図である。
第二端末106の、第一端末105との相違点は、第二端末106にはINI−BOX109の代わりにソフトINI113がインストールされており、OS201とRTA111との間に介在している点と、第二端末106は第二ISP112と内蔵NIC301で接続される点である。したがって、第一端末105では第一ISP110がINI−BOX109に動的グローバルIPアドレスを付与していたが、第二端末106では第二ISP112が第二端末106が内蔵する内蔵NIC301に直接動的グローバルIPアドレスを付与することとなる。ソフトINI113は第二端末106内にインストールされているので、第一端末105とINI−BOX109の場合のように、IPネットワーク経由で所定の制御情報の送受信を行わずとも、メッセージパッシング、共有メモリ或は名前付きパイプ等、一般的なプロセス間通信の仕組みが利用可能である。
[INI−BOX109]
図4(a)及び(b)は、INI−BOX109の外観斜視図である。
図4(a)はINI−BOX109を斜め正面から見た外観斜視図である。INI−BOX109の前面にはUSB−Aコネクタ402が二つ設けられている。このUSB−Aコネクタ402には、図示しない個人認証情報生成装置が接続される。
図4(b)はINI−BOX109を斜め裏面から見た外観斜視図である。INI−BOX109の裏面にはUSB−Bコネクタ403が一つと、ネットワークコネクタ404が一つ設けられている。USB−Bコネクタ403は、図示しないUSB−Bケーブルを通じて端末が接続される。ネットワークコネクタ404はLANケーブルが接続され、その先には第一ISP110が提供する図示しないモデムが接続される。
図5はINI−BOX109のハードウェア構成を示すブロック図である。
マイクロコンピュータよりなるINI−BOX109は、CPU502、RAM503、ROMを兼用する不揮発性ストレージとしてのフラッシュメモリ504、第一USBインターフェース505、第二USBインターフェース506、そして第一NIC507が、バス508に接続されている。
フラッシュメモリ504にはOSのカーネルやライブラリ、そして管理用コマンド等の主要部分が格納されている。OSは例えばLinux(登録商標)である。
INI−BOX109はパソコンである第一端末105からUSBケーブルを通じて電源供給を受ける。つまり、INI−BOX109はバスパワードデバイスである。
図6にて後述する、図5に記されていない第二NICは、フラッシュメモリ504内に格納されているOS及びアプリケーションプログラムによって仮想的に作成される。
図6はINI−BOX109の機能ブロック図である。
INI−BOX109は、二つのネットワークインターフェースを具備する。
第一NIC507は、図5で図示したようにハードウェアとして構成されるNICであり、第一ISP110を経由してインターネット107に接続される。
第二NIC601は、図5では図示されていないが、フラッシュメモリ504内に格納されているOS及びアプリケーションプログラムによって仮想的に作成される。第一端末105から見ると、第二NIC601はUSB接続される外付けNICとして認識される。つまり、第二NIC601は第一端末105のネットワークシステムが構成するサブネットに含まれ、第一端末105から直接的にアクセスが可能なデバイスである。
INI−BOX109の第一NIC507が第一ISP110に接続されると、DHCPクライアント602は、第一NIC507を通じて第一ISP110の図示しないDHCPサーバから、IPアドレス、ネットマスク、デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、第一NIC507がネットワークに接続できるように第一NIC507を設定する。
次に、アドレス重複回避部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を付与する。
INI−BOX109の第一NIC507が第一ISP110に接続されて、第二NIC601にもプライベートIPアドレスが付与された状態では、ポートフォワード設定部605は一般的な動的NATを構成する。これにより、第一NIC507と第二NIC601との間は支障なくインターネット接続が成立する。なお、この時点では、暗号化通信処理部606は第二NIC601と第一NIC507との間を流れるパケットの暗号化処理及び復号化処理は行わない。
一方、認証制御部607は、第一NIC507と第二NIC601との間でインターネット接続が完遂したことを知ると、直ちにNC108に対して端末認証を試みる。端末認証に用いる機器特定ID608は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、NC108に送信される。NC108から暗号化通信処理部606を通じて端末認証の成功の通知を受けると、認証制御部607は第一端末105のRTA111に対して、端末認証の成功を通知する。この時点で、INI−BOX109とNC108との間にはコントロールセッションが形成される。
認証制御部607は、RTA111から第二NIC601を通じて、又は第二USBインターフェース506に接続された外部個人認証機器からユーザ認証の情報を受信すると、この情報を暗号化通信処理部606を通じて再びNC108に送信し、ユーザ認証を試みる。ユーザ認証の情報は、様々である。RTA111から受け取る場合は、一般的なユーザIDとパスワードである。第二USBインターフェース506から受け取る場合は、第二USBインターフェース506には指紋認証機器やICカードリーダ等の、個人認証を実現する機器が接続されて、それら機器から個人認証に用いる情報が得られる。更に、RTA111からユーザIDとパスワードを受け取り、ICカードリーダから認証データを受け取り、これらをまとめてNC108に送信する場合もある。以下、これらの端末を使用するユーザを認証するための情報を個人認証情報と総括して呼ぶ。
個人認証情報は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、NC108に送信される。NC108から暗号化通信処理部606を通じて個人認証の成功の通知を受けると、認証制御部607はこの通知をRTA111へ転送する。そして、RTA111から個人認証が正常終了した旨の通知を受けると、認証制御部607はコントロールセッション管理部609に個人認証の成功を通知する。そして、INI−BOX109全体の制御をコントロールセッション管理部609に委ねる。
コントロールセッション管理部609は、認証制御部607から制御の移譲の通知を受けると、NC108に対し、コントロールセッションを通じて第一端末105を現在使用しているユーザに係る制御設定情報610の送信を依頼する。NC108は制御設定情報610の送信依頼を受けて、個人認証を行ったユーザに対応する制御設定情報610を、後述するユーザテーブルとサーバテーブルから作成して、INI−BOX109に送信する。コントロールセッション管理部609は、NC108から制御設定情報610を受信すると、これをRAM503内に格納する。
次に、コントロールセッション管理部609は、NC108から受信した制御設定情報610の一部である制限情報に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部611を制御する。パケットフィルタ設定部611は、コントロールセッション管理部609から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
次にコントロールセッション管理部609は、NC108から受信した制御設定情報610を第一端末105のRTA111に送信する。RTA111は、制御設定情報610の一部である制限情報に記述されているAPIフックの設定情報を読み出して、APIのフックを設定する。また、アイコンを設けて、ユーザがアクセスを許可されているサーバにアクセスするためのリンク情報をアイコンに埋め込む。図1の場合、第一端末105のユーザは第一サーバ103に対するアクセスが許可されているので、第一サーバ103にアクセスするためのアプリケーションと、第一サーバ103にアクセスするためのリンク情報が、アイコンとしてRTA111のGUI画面内に設けられる。
リンク情報の形態は、プロトコルによって異なる。HTTPであればURL(Uniform Resource Locator)であり、CIFS(Common Internet File System:Windows(登録商標)のファイル共有サービスのプロトコル(SMB:Server Message Block)が拡張されたプロトコル)であれば、サーバ名或はサーバのIPアドレスにファイルのフルパス名を追加した形式の文字列であり、RDP(Remote Desktop Protocol)であれば、サーバ名或はサーバのIPアドレスだけである。
ユーザが、RTA111が設けたアイコンをマウス等のポインティングデバイスでクリックすると、アイコンにアプリケーションプログラム名として埋め込まれているアプリケーションがRTA111の専用シェル208を通じて起動され、アプリケーションは起動パラメータとして記述されているリンク情報にしたがって、アクセス要求を示すパケットを発生する。このパケットをINI−BOX109が受信すると、コントロールセッション管理部609はNC108に当該パケットに対応するサーバとの接続を要求する。NC108はユーザが要求したサーバに対応するリバースプロキシを起動する。一方、コントロールセッション管理部609はポートフォワード設定部605を制御して、当該パケットがNC108のリバースプロキシを通じてサーバに届くように、ポートフォワーディングの設定を行わせる。
こうして第一端末105は、INI−BOX109とNC108を介して、第一サーバ103に接続することができる。
[ソフトINI]
図7は、ソフトINI113の機能ブロック図である。
ソフトINI113は、二つのネットワークインターフェースを具備する。
内蔵NIC301は、第二端末106にハードウェアとして内蔵されるNICであり、第二ISP112を経由してインターネット107に接続される。
ループバック仮想NIC701は、第二端末106にインストールされている、IPv4プロトコルのネットワークOSには標準として備わっている、周知のループバックインターフェースである。仮に端末にNICが装備されていなくても、OS201がIPv4プロトコルをサポートする限り、必ず127.0.0.1というIPアドレスが付与されているループバックインターフェースがOS201内に構成される。特別な設定を施していない限り、ループバックインターフェース宛に送信したパケットは、端末自身のパケット受信対象に送付される。つまり、「loop back」、送信したパケットが輪を描くように出発点、つまり端末自身に戻る。
INI−BOX109の場合は、第一NIC507は第一端末105から直接的にアクセスが可能なデバイスでは無かった。しかし、ソフトINI113の場合、内蔵NIC301もループバック仮想NIC701も、第二端末106のOS201及びアプリケーションから等しくアクセスが可能なデバイスである。
ソフトINI113の内蔵NIC301が第二ISP112に接続されると、OS201が内蔵するDHCPクライアント702は、内蔵NIC301を通じて第二ISP112の図示しないDHCPサーバから、IPアドレス、ネットマスク、デフォルトゲートウェイ、ネームリゾルバ等のネットワーク構成情報を受信し、内蔵NIC301がネットワークに接続できるように内蔵NIC301を設定する。
INI−BOX109の場合は、この手順の次に、第一NIC507と第二NIC601のサブネットが重複しないための処理が必要だったが、ループバック仮想NIC701は、グローバル或はプライベートのIPアドレスが付与される内蔵NIC301とは必ずネットワークセグメントが重複しないので、アドレス重複回避部603を設ける必要はない。また、ループバックアドレスは固定であるので、DHCPサーバ604も不要である。
ソフトINI113の内蔵NIC301が第二ISP112に接続された状態では、ポートフォワード設定部705は何もしない。また、パケットフィルタ設定部706も何もしない。これにより、OS201及びアプリケーションは内蔵NIC301を通じて支障なくインターネット接続ができる。なお、この時点では、暗号化通信処理部606はループバック仮想NIC701と内蔵NIC301との間を流れるパケットの暗号化処理及び復号化処理は行わない。
一方、認証制御部607は、内蔵NIC301のインターネット接続が完遂したことを知ると、直ちにNC108に対して端末認証を試みる。端末認証に用いる機器特定ID608は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、NC108に送信される。NC108から暗号化通信処理部606を通じて端末認証の成功の通知を受けると、認証制御部607は第二端末106のRTA111に対して、端末認証の成功を通知する。この時点で、ソフトINI113とNC108との間にはコントロールセッションが形成される。
認証制御部607は、RTA111から、又は内蔵USBインターフェース207に接続された外部個人認証機器から個人認証情報を受信すると、この情報を暗号化通信処理部606を通じて再びNC108に送信し、ユーザ認証を試みる。
個人認証情報は、コントロールセッション管理部609を通じて制御される暗号化通信処理部606によって暗号化されて、NC108に送信される。NC108から暗号化通信処理部606を通じて個人認証の成功の通知を受けると、認証制御部607はこの通知をRTA111へ転送する。そして、RTA111から個人認証が正常終了した旨の通知を受けると、認証制御部607はコントロールセッション管理部609に個人認証の成功を通知する。そして、ソフトINI113全体の制御をコントロールセッション管理部609に委ねる。
コントロールセッション管理部609は、認証制御部607から制御の移譲の通知を受けると、NC108に対し、コントロールセッションを通じて第二端末106を現在使用しているユーザに係る制御設定情報610の送信を依頼する。NC108は制御設定情報610の送信依頼を受けて、個人認証を行ったユーザに対応する制御設定情報610を、後述するユーザテーブル及びサーバテーブルから作成して、ソフトINI113に送信する。コントロールセッション管理部609は、NC108から制御設定情報610を受信すると、これを図示しないRAM503内に格納する。
次に、コントロールセッション管理部609は、NC108から受信した制御設定情報610の一部である制限情報に記述されているパケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部706を制御する。パケットフィルタ設定部706は、コントロールセッション管理部609から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する。
INI−BOX109の場合、この次には、コントロールセッション管理部609が制御設定情報610を第二端末106のRTA111に送信する手順を踏むが、ソフトINI113の場合、ソフトINI113とRTA111が第二端末106内に共存しているので、NC108から受信した制御設定情報610は直ちにRTA111も参照可能である。したがって、ソフトINI113が制御設定情報610を第二端末106のRTA111に送信する手順は、本質的に生じ得ない。
RTA111は、図示しないRAM503に保存されている制御設定情報610の一部である制限情報に記述されているAPIフックの設定情報を読み出して、APIのフックを設定する。また、アイコンを設けて、ユーザがアクセスを許可されているサーバにアクセスするためのリンク情報をアイコンに埋め込む。図1の場合、第二端末106のユーザは第二サーバ104に対するアクセスが許可されているので、第二サーバ104にアクセスするためのアプリケーションと、第二サーバ104にアクセスするためのリンク情報が、アイコンとしてRTA111のGUI画面内に設けられる。
ユーザが、RTA111が設けたアイコンをマウス等のポインティングデバイスでクリックすると、アイコンにアプリケーションプログラム名として埋め込まれているアプリケーションがRTA111の専用シェル208を通じて起動され、アプリケーションは起動パラメータとして記述されているリンク情報にしたがって、アクセス要求を示すパケットを発生する。このパケットの宛先IPアドレスはループバック仮想NIC701のそれか、ループバック仮想NIC701が属するサブネット(127.0.0.0/8)の範囲内のIPアドレスである。このパケットをソフトINI113のコントロールセッション管理部609が受信すると、コントロールセッション管理部609はNC108に当該パケットに対応するサーバとの接続を要求する。NC108はユーザが要求したサーバに対応するリバースプロキシを起動する。一方、コントロールセッション管理部609はポートフォワード設定部705を制御して、当該パケットがNC108のリバースプロキシを通じてサーバに届くように、ポートフォワーディングの設定を行わせる。すると、アプリケーションがループバック仮想NIC701或はループバック仮想NIC701が属するサブネット内の特定ポートと送受信するパケットは、ポートフォワード設定部705を通じてNC108へ送受信される。
こうして第二端末106は、ソフトINI113とNC108を介して、第二サーバ104に接続することができる。
以上、INI−BOX109とソフトINI113を説明した。
これまでの説明で明らかなように、INIはNC108の指示、具体的にはNC108が作成する制御設定情報610の一部である制限情報に基づいて、端末で稼働するOS201或はそのOS201を通じて動作するアプリケーションから発生する通信に対し、パケットフィルタで制限を加える。そして、ユーザが許可されたサーバに対する仮想的な接続を実現するために、NC108に対するポートフォワーディングを設定する。
ポートフォワーディングを行うことで、端末はあたかもLAN102内のサーバに接続する時と同等の状態で、インターネット107及びファイアウォールを介したサーバに接続することができる。
NC108が作成する制御設定情報610は、INIとRTA111の動作を制御するための設定情報である制限情報と、後述する名前解決に必要な仮想資源テーブルよりなる。これまで説明した制御設定情報610の役割の説明は、制限情報の役割であった。仮想資源テーブルについては、後述する名前解決の説明で詳述する。
[RTA111]
図8は、RTA111の機能ブロック図である。
これまでの説明で明らかなように、RTA111はNC108の指示、具体的にはNC108が作成する制御設定情報610の一部である制限情報に基づいて、端末で起動するアプリケーションと、アプリケーションの動作に連れて使用されるデバイスに対して監視を行い、必要に応じて動作を制限する等の制御を行い、ログ記録等の管理を行う。このような機能を実現するために、RTA111はOS201に備わっているAPIをフックして、アプリケーション及びOS201の挙動を常時監視する。そして、APIが制限情報に記述されている制限条件に合致した場合、RTA111は当該APIの起動を阻止し、INIを通じてNC108に報告する。
図8では、RTA111を説明する際に必要不可欠な、OS201とアプリケーションについても機能ブロックとして表記している。
OS201には様々な機能が含まれているが、本実施形態を説明するに際し、OS201はハードウェアをアプリケーションから扱い易くするためのデバイスドライバの集合体と考えることができる。そして、デバイスドライバはAPIの集合体ともいえる。図8では、主にこれらハードウェアとデバイスドライバに着目して、機能ブロックを記述した。
端末に備わっている主要なハードウェアとしては、キーボード及びマウス等のポインティングデバイスである操作部205、液晶ディスプレイ等の表示部206、ハードディスク等のストレージ204、そしてNICが挙げられる。但し、前述の第一端末105の場合は、NICはINI−BOX109に仮想的に設けられた。何れの場合においても、インターネット107に接続する以上、NICは存在する。
操作ドライバ801は、操作部205が発する操作情報をアプリケーションやシェル202に引き渡す。
表示制御部802は、アプリケーションやシェル202から発生する画面描画指示情報を実際の画面描画情報に変換して表示部206に引き渡す。
ファイルシステム803は、ストレージ204にファイル及びディレクトリを構成し、アプリケーションやシェル202の指示に従ってファイル及びディレクトリを操作する。
プロセス制御部804は、アプリケーションやシェル202を通じてストレージ204内に存在するアプリケーションやライブラリ等の実行及び終了を制御する。
クリップボードバッファ805は、アプリケーションやシェル202同士でデータオブジェクトの複写、移動、削除等の一時バッファとして機能する。
TCP/IPプロトコルスタックとも呼べるネットワークドライバ806は、アプリケーションやシェル202とネットワークとの間で通信ができる環境を構築し、その通信を制御する。
ネットワークドライバ806はDHCPクライアント702も含む。INI−BOX109を利用する場合、INI−BOX109内のDHCPクライアント602はINI−BOX109内の第二NIC601に、INI−BOX109内のDHCPサーバ604から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。ソフトINI113を利用する場合、ネットワークドライバ806の一機能であるDHCPクライアント702は内蔵NIC301に、第二ISP112のDHCPサーバ604から受信するネットワーク構成情報に基づいて動的IPアドレスを与える。
RTA111は、OS201の初期起動プロセスやシェル202を通じたユーザの操作、或はUSBメモリ内に格納された状態でUSBメモリを端末に接続して自動実行される等で起動されると、最初にAPIフック設定部807がINI−BOX109又はソフトINI113との通信を試みる。INI−BOX109又はソフトINI113との通信に成功すると、APIフック設定部807は次にINI−BOX109又はソフトINI113から端末認証が成功した旨の受信を待つ。INI−BOX109又はソフトINI113から、端末認証に成功した旨の報告が来たら、APIフック設定部807は次にユーザ認証を実行する。外部個人認証機器がINI−BOX109又は端末に接続されていればそれを優先し、そうでない場合はユーザID及びパスワードを入力するための画面を表示部206に表示し、ユーザの入力を待つ。
NC108からINI−BOX109又はソフトINI113を通じてユーザ認証が成功した旨の報告を受けたら、APIフック設定部807は次に制御設定情報610が存在するか否か確認する。
ソフトINI113の場合、ユーザ認証が成功するとソフトINI113がNC108から制御設定情報610をダウンロードして、端末の図示しないRAM内に制御設定情報610を保持しているので、APIフック設定部807は明示的に何らかの動作をすることなく、すぐに次の動作に移行できる。
INI−BOX109の場合、APIフック設定部807はINI−BOX109に対して制御設定情報610を要求する。INI−BOX109から制御設定情報610をダウンロードして、RAM503内に制御設定情報610を保持する。
NC108から制御設定情報610を得ると、APIフック設定部807は、制御設定情報610の一部である制限情報に記述されている情報に従って、操作情報取得部808、画面キャプチャ処理部809、ファイルシステム監視部810、プロセス監視部811、クリップボード監視部812、そしてAPIフック処理部813に設定を行う。
ファイルシステム監視部810は、制限情報で指定された特定のファイルやディレクトリに対する挙動として、コピー、移動、削除、名称変更を監視する。
プロセス監視部811は、制限情報で指定された特定のアプリケーション等のプロセスの起動及び自己プロセス隠蔽行為を監視する。
クリップボード監視部812は、制限情報で指定された特定のアプリケーション等が、クリップボードバッファ805に対する、データオブジェクトの複写、移動、削除等の操作を監視する。
APIフック処理部813は、ファイルシステム監視部810がファイルシステム803に対するAPIフック処理を、プロセス監視部811がプロセス制御部804に対するAPIフック処理を、クリップボード監視部812がクリップボードバッファ805に対するAPIフック処理を、それぞれ実現する。
APIフック処理部813によって、シェル202やアプリケーションがファイルやプロセスに対して何らかの動作を起こそうとすると、ファイルシステム監視部810やプロセス監視部811がその都度呼び出されて、対応するAPIを実行すべきか否かが判定される。
操作情報取得部808は、制限情報に記述されている情報に従って、当該情報に記されている条件に合致したら、操作ドライバ801から得られる操作情報を、INI−BOX109又はソフトINI113を通じてNC108へ報告する。
画面キャプチャ処理部809は、制限情報に記述されている情報に従って、当該情報に記されている条件に合致したら、表示制御部802から得られるビットマップ画面情報を、INI−BOX109又はソフトINI113を通じてNC108へ報告する。
専用シェル208は、制御設定情報610の記述に従って、ユーザが実行を許可されるアプリケーションのアプリケーションプログラム名と、ユーザがアクセスを許可されるサーバのリソース名(resource:「情報資源」の意)を含むアイコンを作成する。アイコンの中身はコマンドライン文字列であり、実行するアプリケーションプログラム名と、その引数としてサーバのリソース名が記述される。また、アプリケーションプログラムによっては、起動時に必要な種々のオプションスイッチも含まれる。このアイコンをマウス等のポインティングデバイス等でクリックすることで起動したアプリケーションプログラムが、図8の第一アプリケーション209及び第二アプリケーション210である。第一アプリケーション209及び第二アプリケーション210は専用シェル208の子プロセスとして起動されるので、第一アプリケーション209及び第二アプリケーション210の挙動は専用シェル208を通じて完全に把握可能である。
一方、OS201には標準で備わっているシェル202が存在する。また、そのシェル202から起動するアプリケーションプログラムも当然存在する。プロセス監視部811はこれら専用シェル208を経由しないシェル202及びアプリケーション(図8では第三アプリケーション203がこれに該当する。)については、ファイルシステム監視部810、プロセス監視部811及びクリップボード監視部812が厳しくその挙動を監視し、サーバに対するセキュリティ面の脅威となる可能性のある操作は直ちに中止する。また、起動自体が禁じられているアプリケーションプログラムについては、プロセス監視部811によって強制終了させられる。
[NC108]
図9は、NC108の機能ブロック図である。
本実施形態のNC108は、LAN102のゲートウェイを兼用する。インターネット107に接続される第三NIC901には固定のグローバルIPアドレスが、LAN102に接続される第四NIC902には、LAN102のゲートウェイアドレスとなる固定のプライベートIPアドレスが付与されている。第三NIC901と第四NIC902との間には、LAN102に接続されている端末がインターネット107に接続するための動的NATの機能と、インターネット107上のセキュリティ上の脅威からLAN102内の端末及びサーバを保護するためのパケットフィルタリングの機能を備えたファイアウォール903が設けられている。
第三NIC901に接続されている暗号化通信処理部904は、INI−BOX109及びソフトINI113に設けられている暗号化通信処理部606と対をなす。つまり、INIと認証情報の送受信と、コントロールセッション及びデータセッションの暗号化を施す。
認証部905は、端末テーブル906及びユーザテーブル907を参照して、端末認証及びユーザ認証を遂行する。認証部905は更に、ユーザ認証が正常に終了した端末については、その機器特定ID608とユーザIDの組みを認証済IDリスト908に書き出す。
コントロールセッション管理部909は、INI−BOX109及びソフトINI113に設けられているコントロールセッション管理部609と対をなす。つまり、INIとの間にコントロールセッションを形成し、端末に対する様々な制御情報の送受信を行う。特に、ユーザテーブル907には制限情報がユーザ毎に格納されており、コントロールセッション管理部909はINIの要求に応じてユーザテーブル907から当該ユーザの制限情報を読み出してINIへ送信する。
データセッション管理部910は、コントロールセッション管理部909を通じて、INIから来たサーバに対する接続要求に応じて、当該サーバに対応するリバースプロキシを起動して、INIとNC108との間にデータセッションを形成する。データセッション管理部910によって起動されるプロセスは、図9に示すように、第一リバースプロキシ911、第二リバースプロキシ912、…と、端末との間に形成されるデータセッションの数に応じて増減する。
端末テーブル906は、NC108が接続を許可するINIの機器特定ID608が列挙されているテーブルである。
ユーザテーブル907は、NC108が接続を許可するユーザのユーザID及びパスワード等の個人認証情報と、当該ユーザの制限情報と、当該ユーザが接続を許可されているサーバのサーバ名が格納されている。
サーバテーブル913は、ユーザIDと、当該ユーザIDのユーザが利用できるサーバのサーバ名と、当該サーバのアクセスに用いられるプロトコルの種類と、対応するリバースプロキシのプログラム名等が格納されている。このサーバテーブル913には、端末が接続したいサーバを正しく指定できるために必要な「名前解決」の仕組みに必要な情報が格納されている。
端末がユーザ認証を完遂すると、コントロールセッション管理部909は、サーバテーブル913から、ユーザがサーバにアクセスするために、端末に必要な情報である仮想資源テーブルと、リバースプロキシに必要な情報であるユーザ資源テーブルを作成する。
仮想資源テーブルはユーザテーブル907の制限情報と併せて制御設定情報610を構成し、INIに送信される。
ユーザ資源テーブルはユーザ毎に作成され、NC108の資源テーブルディレクトリ914に格納され、リバースプロキシの起動に利用される。
図示しないリバースプロキシサーバプログラムは、サーバにアクセスする際に利用するプロトコルに応じて用意される。HTTPであれば、プロキシモードのリザルトコードを実装する。CIFSやRDPの場合は、IPアドレスの書き換えのみ行う。
これまでの説明で明らかなように、NC108は、INIに対して端末認証とユーザ認証の二重の認証を行い、INIとの間にコントロールセッションを形成する。そして、端末を操作するユーザにサーバとの接続を実現するために、INIとNC108との間にデータセッションを形成し、サーバとINIとの間に当該データセッションに接続するリバースプロキシを起動する。
先のINIの説明で、INIがポートフォワーディングを行うことで、端末はあたかもLAN102内のサーバに接続する時と同等の状態で、インターネット107及びファイアウォール903を介したサーバに接続することができる、と説明した。このことについて詳述する。
端末が、単にファイアウォール903の向こう側に存在するサーバに対して接続を行うのであれば、LAN102のゲートウェイ或はLAN102とインターネット107との境界に配置される機器に、リバースプロキシを設定すればよい。しかし、この場合、端末はリバースプロキシが稼働するマシンのグローバルIPアドレスに対して接続を行うこととなる。このような接続形態は、アプリケーションに元々から備わっているセキュリティ設定によって様々な悪影響を生じる虞がある。
具体的には、例えばマイクロソフト社のWindows(登録商標)に標準的に備わっているwebブラウザ「インターネットエクスプローラ」(以下「IE」と略す)では、接続しようとするwebサーバのIPアドレス、FQDN(Full Qualified Domain Name:完全修飾ドメイン名)或はドメイン名を含まないホスト名に応じて、HTML(Hyper Text Markup Language)文書内に埋め込まれたスクリプトや外部アプリケーション等を実行するか否か等のセキュリティ設定を変更する機能が備わっている。LAN102内のwebサーバはLAN102内の端末からアクセスされることを前提にwebアプリケーションが構築されており、インターネット107上のwebサーバでは危険で実行が許されないようなスクリプト等も、利便性を優先してHTML文書内に含まれている。つまり、リバースプロキシだけでは、インターネット107からLAN102内のサーバに接続しても、IEを始めとする所望のアプリケーションが正常に動作することが保証できないどころか、異常終了する等の弊害を生じる可能性が高い。
この問題を解決するためには、IE等の端末上で動作するアプリケーションに対して、「あたかもLAN102内のサーバに接続していると錯覚させる」仕組みが必要である。このための解決策が、ポートフォワーディングである。ポートフォワーディングを通じてサーバに接続する、ということは、INI−BOX109の場合では端末と同一サブネットのプライベートアドレスに対して、ソフトINI113の場合ではループバックアドレスに対して、接続する、ということとなる。何れの場合も、IEから見ると、パケットに付される宛先IPアドレスはアプリケーションのセキュリティ設定を低い状態にできる「ローカルイントラネット」に属する。こうして、端末はインターネット107を越えてファイアウォール903の向こう側にあるサーバに対し、制限のない「ローカルイントラネット」としてのアクセスを実現する。
[動作]
図10及び図11は、端末がインターネット107に接続して、認証を完遂する迄の動作の流れを示すタイムチャートである。
端末がインターネット107に接続する動作は、INI−BOX109とソフトINI113とで若干異なる。
前述のINI−BOX109が接続されている第一端末105の場合は、INI−BOX109の第一NIC507を第一ISP110が提供するモデムに接続する。
前述のソフトINI113を内蔵する第二端末106の場合は、第二端末106の内蔵NIC301を第二ISP112が提供するモデムに接続する。
すると、INI−BOX109の場合はINI−BOX109に内蔵されるDHCPクライアント702が(S1001)、ソフトINI113の場合はOS201が内蔵するDHCPクライアント702が(S1002)起動して、ISPに備わっているDHCPサーバからネットワーク構成情報を受信してNICに所定の設定を施すことで(S1003)、端末はインターネット107との接続を確立する(S1004)。
INIの認証制御部607は、端末がインターネット107に接続したことを検出すると、NC108に機器特定ID608を送信して、端末認証を試みる(S1005)。NC108の認証部905は検証を行い(S1006)、端末認証の結果をINIに返す。
INIの認証制御部607は、NC108から返ってきた端末認証結果が「正常に認証した(認証OK)」であれば(S1007のYES)、その旨をRTA111に報告する(S1008)。そして、この時点でNC108とソフトINI113との間には、制御のための通信路、つまりコントロールセッションが形成される。
逆に、NC108から返ってきた認証結果が「正常に認証できなかった(認証NG)」であれば(S1007のNO)、異常終了する(S1009)。異常終了の場合は、端末がNC108に接続する資格を持たないので、これ以降処理する事項はない。
RTA111のAPIフック設定部807は、INIから端末認証が正常に終了した旨の報告を受けると、端末の表示部206にユーザID及びパスワードを入力するための画面、或は外部個人認証機器を用いたユーザ認証操作の案内画面を表示し(S1010)、個人認証情報の入力を待つ(S1011)。個人認証情報が入力されたら、APIフック設定部807はINIに個人認証情報を送信する(S1012)。INIの認証制御部607は受信した個人認証情報をNC108へ転送する(S1013)。
NC108の認証部905は、受信した個人認証情報でユーザテーブル907を検索し、当該個人認証情報が正当であるか否かを検証する(S1014)。認証部905は検証の結果をINIに返送する(S1015)。INIの認証制御部607は受信したユーザ認証結果をRTA111へ転送する(S1016)。
RTA111のAPIフック設定部807は、NC108から返ってきたユーザ認証結果が「正常に認証した(認証OK)」であれば(S1017のYES)、INIから制御設定情報610が送信されるのを待つ。逆に、NC108から返ってきた認証結果が「正常に認証できなかった(認証NG)」であれば(S1017のNO)、表示部206にエラー画面を表示して(S1018)、再度ユーザ認証画面を表示する(S1010)。つまり、端末認証は完了しているがユーザ認証が完了していないので、ユーザ認証が正常終了するまでユーザ認証の動作は繰り返される。
INIの認証制御部607は、NC108の認証部905から受信したユーザ認証の検証の結果が正当であれば、コントロールセッション管理部909に個人認証の成功を通知する。そして、ソフトINI113全体の制御をコントロールセッション管理部909に委ねる。
コントロールセッション管理部909は、認証制御部607から制御の移譲の通知を受けると、コントロールセッションを通じてNC108に、現在端末を使用しているユーザに係る制御設定情報610の送信を要求する(S1019)。
NC108のコントロールセッション管理部909は、INIが発した制御設定情報610の送信要求を受けて、個人認証を行ったユーザに対応する制御設定情報610をユーザテーブル907及びサーバテーブル913から作成して、INIに送信する(S1020)。
INIのコントロールセッション管理部909は、NC108から制御設定情報610を受信すると、これをRAM503に格納する。INI−BOX109の場合はINI−BOX109のRAM503であり、ソフトINI113の場合は端末が備えるRAM503である。
次に、INIのコントロールセッション管理部909は、NC108から受信した制御設定情報610に記述されている、パケットフィルタリングの設定情報を読み出して、パケットフィルタ設定部706を制御する。パケットフィルタ設定部706は、コントロールセッション管理部909から与えられたパケットフィルタリングの設定情報に従って、パケットフィルタを構成する(S1021)。
図11を参照して説明を続ける。
次に、INIのコントロールセッション管理部909は、NC108から受信した制御設定情報610をRTA111に送信する(S1122)。但し、この動作はINI−BOX109の場合だけである。ソフトINI113の場合は、ソフトINI113自身が受信した制御設定情報610がそのまま端末のRAM503に格納されているので、RTA111もその制御設定情報610に直接アクセスできるので、転送の必要がない。
RTA111は制御設定情報610の内容に従って、APIフック処理部813を始めとする各種機能ブロックに対して所定の設定を行う(S1123)。
こうして、RTA111はAPIフックを、INIはパケットフィルタを、それぞれ構成した。
これ以降は、ループ動作である。
RTA111のAPIフック設定部807は、ファイルシステム監視部810、プロセス監視部811及びクリップボード監視部812から、制御設定情報610に記述されている異常な操作を検出したら(S1124のYES)、呼び出されるAPIの起動を阻止して(S1125)、NC108に詳細な情報を通知する(S1126)。
INIのパケットフィルタは、制御設定情報610に記述されている異常なパケットを検出したら(S1127のYES)、当該パケットの流れを阻止して(S1128)、NC108に詳細な情報を通知する(S1129)。
NC108はこれら異常状態の報告を受けると、図示しないログに記録する(S1130)。
図12は、端末からアプリケーションを起動して、LAN102内のサーバに接続する動作の流れを示すタイムチャートである。
ユーザが端末を操作してサーバを利用しようとするアプリケーションを起動すると(S1201)、アプリケーションからサーバに対するアクセス要求を示すパケットが発生する(S1202)。
INIのコントロールセッション管理部909は、端末から生じたアクセス要求を示すパケットを検出すると、当該パケットの宛先IPアドレス及びポート番号から、端末のアプリケーションが接続を要求するサーバを割り出す。そして、コントロールセッションを通じてNC108に当該サーバに対するアクセス要求を送信する(S1203)。
NC108のコントロールセッション管理部909は、INIからサーバに対するアクセス要求を受信すると(S1204)、後述するユーザ資源テーブルを参照して、当該サーバに対応するリバースプロキシのプログラム名をデータセッション管理部910に引き渡す。データセッション管理部910はコントロールセッション管理部909から指定されたリバースプロキシプログラムを起動する(S1205)。
一方、INIのコントロールセッション管理部909は、ポートフォワーディングの設定を行う(S1206)。こうして、アプリケーションとINIとの仮想接続(S1207)、INIとNC108とのポートフォワーディング(S1208)、NC108とサーバとのリバースプロキシ接続(S1209)を経て、アプリケーションはサーバと仮想的な接続が成立する(S1210)。
[名前解決]
TCP/IPネットワークでは、クライアントがサーバに接続を行う際、殆どの場合、ネームリゾルバと呼ばれる、ホスト名或はFQDNから実際のIPアドレスに変換する、名前解決の仕組みが必要である。本実施形態の名前解決について、説明する。
図13(a)、(b)及び(c)は、サーバテーブル913と、仮想資源テーブルと、ユーザ資源テーブルの概略図である。
図13(a)は、サーバテーブル913の中身の一例を示す。
「ユーザID」フィールドは、ユーザテーブル907と共通の、ユーザIDが格納されるフィールドである。
「サーバ名」フィールドは、LAN102内で用いられるサーバの名称が格納されるフィールドである。この「サーバ名」フィールドに格納するサーバ名は、FQDNであってもよいし、ドメイン名を含まないホスト名であってもよい。
「プロトコル」フィールドは、当該サーバが提供するサービスのプロトコルの名称が格納されるフィールドである。
「リバースプロキシ用リソース文字列」フィールドは、リバースプロキシが当該サーバにアクセスする際に用いる、サーバが提供する情報資源を特定する文字列である。例えばHTTPであればサーバの起点ディレクトリを示す「ServerRoot」であり、CIFSであればサーバがリソースを提供するルートを示すリソース名称である。
「ポート番号」フィールドは、当該サーバが提供するサービスに用いられるポート番号である。
「端末用リソース文字列」フィールドは、端末がサーバにアクセスする際に用いる、端末のアプリケーションプログラムが接続相手の情報資源を特定する文字列であり、RTAの専用シェルが設けるアイコンに埋め込まれる、アプリケーションの引数でもある。例えばHTTPであればURLであり、CIFSであればサーバがリソースを提供するルートを示すリソース名称である。
「リバースプロキシプログラム名」フィールドは、端末とサーバを接続するために起動するリバースプロキシのプログラム名である。例えばHTTPやFTPならsquid(http://www.squid-cache.org/)、delegate(http://www.delegate.org/delegate/)、RDPやCIFSならstone(http://gw.gcd.org/sengoku/stone/Welcome.ja.html)等が挙げられる。
端末がユーザ認証を完遂すると、コントロールセッション管理部909は、当該ユーザのユーザIDを検索キーにして、サーバテーブル913を絞り込み検索する。すると、絞り込んで得られるレコードは当該ユーザが利用可能なサーバの一覧になる。なお、紙面の都合上、図13(a)では予めユーザID「sugiyama」で絞り込んだ場合の例を示している。したがって、サーバテーブル913は、「ユーザID」フィールドの内容のみ異なり、「ユーザID」フィールド以外のフィールドの内容が全く同じレコードも存在し得る。
次に、コントロールセッション管理部909は、サーバテーブル913の絞り込み検索で得られたレコードに対して、端末が利用する仮想IPアドレスを割り当てる。仮想IPアドレスの割り当て方は、ポートフォワーディングを行うNICのサブネットに属するIPアドレスを順番に割り当てる。この時、サブネットに属するIPアドレスのうち、ブロードキャストアドレスとネットワークアドレスと、通常デフォルトゲートウェイとして用いられることの多い、ホスト部の最下位ビットだけが「1」のIPアドレスは、割り当て対象のIPアドレスからは除外する。
INI−BOX109の場合は「192.168.0.2」から始まり、1ずつインクリメントして、「192.168.0.254」まで割り当てる。
ソフトINI113の場合は「127.0.0.2」から始まり、1ずつインクリメントして、「127.0.0.254」まで割り当てる。
これは、一般的なクラスCのIPアドレスの範囲であり、ネットワークアドレス、ブロードキャストアドレス、デフォルトゲートウェイを除いた、クラスCの範囲内で一般的に利用可能なアドレスが「2」から「254」迄の253個であることに起因する。
仮想IPアドレスを割り当てたら、それらレコードから、仮想資源テーブルと、ユーザ資源テーブルを作成する。
仮想資源テーブルは、サーバテーブル913の絞り込み検索で得られたレコードのうち、「ユーザID」フィールドと、「リバースプロキシ用リソース文字列」フィールドを除いたデータである。コントロールセッション管理部909は、これをユーザテーブル907の制限情報と併せて制御設定情報610を構成し、INIに送信する。
ユーザ資源テーブルは、サーバテーブル913の絞り込み検索で得られたレコードのうち、「ユーザID」フィールドと、「端末用リソース文字列」フィールドを除いたデータである。コントロールセッション管理部909は、これをユーザIDを用いたファイル名でファイルを作成し、資源テーブルディレクトリ914に格納する。
周知の通り、サーバは単一のサーバが単一のサービスを提供するとは限らない。また、特にHTTPではApache(http://httpd.apache.org/)の「virtualhost」機能のように、同じIPアドレスでありながら異なるFQDNでサーバにアクセスすると、あたかも全く別のサーバに接続されたように異なるコンテンツを得られる機能も存在し、広く利用されている。このような多様な「サービス」に対応するためには、サーバが提供する資源(リソース)に対するアクセス方法と、端末の仮想接続とをしっかり対応させなければならない。
「リバースプロキシ用リソース文字列」は、リバースプロキシプログラムがサーバに対するクライアントとしてサーバの資源にアクセスするための、リソースを指定する文字列である。図13ではサーバ名がそのまま使用されているが、これはLAN102内にプライベートなDNSサーバが稼働していることを想定している。もしも、LAN102内にLAN102上のサーバの名前解決を行うためのDNSサーバが稼働していない場合は、「リバースプロキシ用リソース文字列」のホスト名に代わり、サーバに付されているプライベートIPアドレスが直接記入されることとなる。
これに対し、「端末用リソース文字列」は、端末上で所定のプログラムを起動する際に、プログラムがサーバにアクセスするための、リソースを指定する文字列である。しかし、この文字列はリバースプロキシによって変換することができる。Apacheのvirtualhost機能を用いなくても、サーバテーブル913の「リバースプロキシ用リソース文字列」の設定と「端末用リソース文字列」の設定を工夫するだけで、virtualhostと同等の機能を実現することができる。
逆に、webサーバには既にApacheが稼働しており、virtualhostの設定がなされている場合、virtualhost機能が正しく稼働するために、「端末用リソース文字列」にはApacheに設定されている仮想ホスト名が含まれている必要がある。Apacheのvirtualhost機能は、HTTPの「GET」メソッドのオプションの「HOST」オプションで送信されるFQDNを、webサーバであるApacheが見て、どの仮想ホストを「ServerRoot」にするか判断するからである。
何れの場合においても、サーバテーブル913が「リバースプロキシ用リソース文字列」と「端末用リソース文字列」とを分けて管理することで、今日のwebサーバに求められる機能を過不足なく満たすことが出来る。
アプリケーションプログラムが引数に指定された「端末用リソース文字列」を読み込むと、アプリケーションプログラムは端末用リソース文字列の中からFQDN或はホスト名或はIPアドレスを抽出する。IPアドレスであればそのまま当該IPアドレスを宛先IPアドレスとする接続要求パケットを発する。そうでない場合は、アプリケーションプログラムは名前解決を試みる。
本実施形態の場合、名前解決の手段は幾つか挙げられる。
一つは、テキストファイルである「hosts」に、ユーザ資源テーブルの「端末用リソース文字列」から抽出したFQDN或はホスト名と「端末用ターゲットアドレス」との対応を記述することである。
もう一つは、INI或はRTAがDNSサーバを構成して、アプリケーションから生じるFQDN或はホスト名の問い合わせに対して、「端末用ターゲットアドレス」を返すことである。
もう一つは、INI或はRTAがネットワークのAPIをフックして、アプリケーションから生じるFQDN或はホスト名の問い合わせを検出したら、ネットワークシステムが参照するDNSサーバに代わって、「端末用ターゲットアドレス」を返すことである。
図12及び図13の説明から解るように、本実施形態のネットワークシステムでは、端末のアプリケーションがサーバへ接続しようとすると、初めてコントロールセッションとは異なるポートでデータセッションを形成する。端末が接続しようとするサーバが異なれば、その都度異なるデータセッションが形成される。NCがユーザ毎に利用できるサーバの資源をサーバテーブルで管理し、ユーザ認証が完遂した時点でサーバテーブルからポートフォワーディングのための仮想資源テーブルとリバースプロキシのためのユーザ資源テーブルを自動作成するので、データセッションの重複等の事故を引き起こすことなく、多数のユーザに対して容易に仮想接続サービスを提供することができる。
[webブラウザの仮想接続]
インターネット107の利用に留まらず、今日のLAN102においても、webの技術は必要不可欠である。webブラウザは単なる情報閲覧の道具に留まらず、webアプリケーションのユーザインターフェースをも構成する。本実施形態の仮想接続でも、webブラウザが支障なく動作することは必要条件である。
しかしながら、webの基盤技術であるHTMLには、「リンク」という技術が存在する。このリンク、具体的には「<a href="...">」という、URL文字列を記述する「Aタグ」は、HTML文書を出力したwebサーバ以外のwebサーバの情報源を指し示す場合が多々ある。
前述の通り、本実施形態の仮想接続では、端末が直接インターネット107に接続することが制限される。しかし、HTML文書内にはAタグでインターネット107上のリソースを示す場合が多々ある。このままでは、HTML文書を正しく表示することができない。
そこで、本実施形態では、RTA111の専用シェル208から起動するwebブラウザに細工を施す。具体的には、webブラウザを起動する際、強制的にプロキシサーバの設定を施す。プロキシサーバのアドレスは、仮想接続するポートフォワーディングの宛先のIPアドレスである。このようにwebブラウザを設定すると、webブラウザはAタグで指定される全てのコンテンツを、ポートフォワーディング及びリバースプロキシを通じて、遠隔地にあるLAN102から取得しようとする。インターネット107上のリソースも、NC108というゲートウェイを通じて取得できる。この接続方法の利点は、LAN102に適用されるセキュリティポリシがそのまま端末にも反映される、という点である。端末は、LAN102内に存在する時と同じセキュリティポリシが、インターネット107上でも適用されることとなる。
本実施形態は、以下のような応用例が可能である。
(1)NC108の端末テーブル906及びユーザテーブル907は、NC108とは異なるサーバに置いて、ネットワークを通じて認証部905が参照してもよい。
また、認証部905、端末テーブル906及びユーザテーブル907は、NC108とは異なる認証サーバとして設けてもよい。この場合、認証済IDリスト908には機器特定IDとユーザIDとの対応関係が記され、当該認証サーバから受信することとなる。
(2)NC108を複数設けて、多段リバースプロキシを構成することもできる。
(3)INIが複数のNC108に対して同時にアクセスすることもできる。この場合、INIは後から接続するNCに対して、ユーザ認証を完了した直後に、既に先に接続済みのNCで割り当て済みの端末用ターゲットアドレスを報告し、それぞれのNCで端末用ターゲットアドレスが重複しないように調停する必要がある。
図13(b)で付与する端末用ターゲットアドレスは、元のポート番号をそのまま流用している。この端末用ターゲットアドレスを1ずつインクリメントする代わりに、端末用ターゲットアドレスを固定にして、ポート番号を変化させることも可能である。特にHTTPの場合は、ポート番号を変更することが広く行われているので、HTTPに限っては異なるサーバに対する接続を、同一の端末用ターゲットアドレスで異なるポート番号を付与する、という処理を行うことで、端末用ターゲットアドレスの消費を低減することができる。
本実施形態では、ネットワークドライバ806と、これに使用するポートフォワード形成装置(INI−BOX109、ソフトINI113)、端末管理装置(RTA111)、リバースプロキシサーバ(NC108)を開示した。
INI−BOX109或はソフトINI113とNC108がコントロールセッションを通じて機器認証及びユーザ認証を実行した後、端末がNC108の先に存在するプライベートネットワーク内のサーバに対する接続を要求したら、INI−BOX109或はソフトINI113はポートフォワーディングを、NC108はリバースプロキシを設定して、端末とサーバとの間にデータセッションを形成する。このようにネットワークシステム101を構築することで、プライベートアドレスの衝突のない、仮想的な接続形態で、ファイアウォール903を越えた端末のサーバに対する接続が実現できる。更に、接続の際にはRTA111が端末の挙動を強力に制限するので、セキュリティ面の脆弱性を保護できる。
一般的に、サーバを構成する際のBSDソケットプログラミングの作法は、クライアントの接続を待機するポートを開けて、クライアントが接続してきたら、次のクライアントの接続を待つために再度ポートを開ける、という作法である。つまり、サーバは常時特定のポートが開いていることとなる。ポートが開けっ放しである、ということは、悪意ある第三者がそのポートを通じて当該サーバプログラムの脆弱性を探査するきっかけになり得る。
発明者は、NC108が擁する複数のプロトコルに対応する複数のリバースプロキシプログラムに存在するかもしれない脆弱性を、第三者から突かれる可能性を排除するために、常時開けるポートと実際に端末とデータとを接続するポートを別にした。NC108が形成するデータセッションは、本来のBSDソケットプログラミングにおけるサーバの作法とは異なり、データセッションが確立しても同じデータセッションに該当するポートは開かない。あくまでも端末から接続要求がない限り、データセッションは形成されないし、そのためのポートも開くことはない。第三者がNC108をポートスキャンすると、コントロールセッションのためのポートしか開いていないように見える。
このような、コントロールセッションとデータセッションを分離する思想は、古くから存在するFTP(File Transfer Protocol)に類似する。FTPの場合、サービスポートは21番で固定され、データポートはPORTモードで20番、PASVモードで1024番以上の任意のポートであり、今日のルータで必須とされる動的NATではSYNパケットに基づくNAT設定を形成し難いことと、サービスポートで送受信されるパスワードが暗号化されていないことから、今日ではセキュリティの面であまり良くない実装であると批判されている。しかし、それは各プロトコルが各々独立して無秩序に策定される状況において、単一のプロトコルの特徴として指摘される事項であり、各プロトコルを統括して管理する更に上位のプロトコルという技術思想として捉えると、非常に使い勝手の良い基盤技術であることが判る。
更に、本実施形態に係るネットワークシステムに接続される端末には、各端末を一意に識別するための機器特定ID608が与えられている。この機器特定ID608は、IPアドレスとは別であり、コントロールセッションで認証情報としてのみ使用される。
ここで翻って、本実施形態のネットワークシステムのデータセッションに流れるパケットについて考察し、説明する。
端末から発されるパケットは、ソフトINI113の場合、送信元IPアドレスはループバックアドレス(127.0.0.1)であり、送信先IPアドレスはループバックアドレスが属するクラスCのサブネットに含まれるアドレス(127.0.0.x)である。INI−BOX109の場合、送信元IPアドレスはプライベートアドレス(192.168.0.1)であり、送信先IPアドレスはプライベートアドレスが属するクラスCのサブネットに含まれるアドレス(192.168.0.x)である。
これらパケットは、ソフトINI113又はINI−BOX109で、ポートフォワーディングによって送信元IPアドレス及び送信先IPアドレス(と、必要であればポート番号も)が書き換えられる。送信元IPアドレスはISPからソフトINI113又はINI−BOX109に付与されたIPアドレスが、送信先IPアドレスとポート番号は、NC108のグローバルIPアドレスとデータセッションのためのポート番号に、それぞれ書き換えられる。
更に、これらパケットは、NC108のリバースプロキシによって送信元IPアドレス及び送信先IPアドレス(と、必要であればポート番号も)が再度書き換えられる。送信元IPアドレスはNC108のグローバルIPアドレスが、送信先IPアドレスとポート番号は、サーバのプライベートアドレスとポート番号に、それぞれ書き換えられる。
このように、通信路を通過するパケットのIPアドレスが拠点を通過する度に次々に書き換えられる状況において、端末の一意性を保証する情報である機器特定ID608は何のために使用されなければならないのかを考えると、機器特定ID608は「端末が当該サーバに接続する資格を有する」ことを示す情報である、ということが判る。そして、この情報は必ずしも端末にサービスを提供するサーバが抱えていなければならないものではなく、所定の認証を実行できる機器(NC108)が存在していればよいのである。
周知の通り、IPv4はアドレスが枯渇しつつある、という喫緊の問題に直面している。では何故アドレスが枯渇しつつあるのか。一見すれば、IPアドレスのビット数が足りないから、と、普通なら考えるだろう。しかし、もっと根源的な問題は、通信路を行き交うパケットの行き先を決めるIPアドレスに、端末の一意性を求めようとしたことである。IPアドレスはプロトコルとして定められ、パケットに必ず付されるビット列であるから、固定長でなければならず、容易にそのビット列を拡大させるようなことはできない。これがそもそもの間違いの元だった、と、発明者は考えた。
端末の一意性を求める情報は、端末の一意性を求める状況、つまり認証行為にのみ使用すればよく、パケットの行き先を定める情報とは明確に区別するべきである。この技術思想に立脚して、発明者は、IPアドレスから端末の一意性を求めることを否定し、IPアドレスはパケットの行き先にのみ使用される情報と割り切って、通信路の仮想化と、認証行為を基に、ネットワークシステムの再構築を試みた。これが、本実施形態である。
本実施形態のINIに含まれる機器特定ID608は、プロトコルとして定められ、パケットのヘッダとして組み込まれているIPアドレスではなく、認証にのみ使用されるデータである。したがって、ネットワークシステムの規模や必要に応じて、幾らでもビット列を拡大させたり、フォーマットを変更する等の行為をしても、パケットのフォーマットは変わらないので、全く問題は発生しない。本実施形態において、発明者は試作品を作成した際、機器特定ID608に12バイトを割り当てたが、勿論、もっと長大なビット列にしてもよい。
更に、本実施形態では既存のVPNに代わる新規な「仮想プライベート接続」という技術で、端末がファイアウォール903を越えてサーバに接続する実施形態を開示したが、この技術は、単に企業ユーザが社屋内のLAN102に接続されているサーバに接続するためだけの技術としてのみ適用される技術ではない。本実施形態の技術は、プライベートアドレスが付与される機器同士を接続する技術でもある。したがって、プライベートアドレスが付与されているサーバが、一般的な公衆アクセスを前提とするwebサーバであっても良いのである。既存のDNS、つまりFQDNからIPアドレスへ名前解決を実行する仕組みと同等の仕組みは、本実施形態のNC108が提供する。NC108は、端末のINI−BOX109又はソフトINI113に対して、FQDNからグローバルIPアドレスではなく、INI−BOX109又はソフトINI113が提供する仮想的なIPアドレスへ名前解決を実施させる。そして、NC108はポートフォワーディングによって転送されるパケットを、目的とするサーバへ振り向ける。このようにNC108を構成し、本実施形態のネットワークが発展し、普及すると、サーバはグローバルIPアドレスを必要としなくなる。勿論、端末もグローバルIPは不要になる。グローバルIPアドレスは単に拠点同士のパケットの送受信制御にのみ使用されるものとなり、何らかの事業や趣味等の目的でサーバを建てようとする際、もはやグローバルIPアドレスを取得する必要はなくなる。その際に生じるセキュリティ面の懸念事項は、ポートフォワーディングするIPアドレスを「ローカルイントラネット」ではないIPアドレスに設定すればよい。例えば、ポートフォワーディングの標的となるIPアドレスに、端末が属するサブネットのネットワークアドレスではないプライベートIPアドレスを割り当てて、アプリケーションには当該IPアドレスを「ローカルイントラネット」ではない、グローバルIPアドレスと等価であるものと認識させる。
以上のように、本実施形態のネットワークシステムは、IPv4プロトコルの可能性を拡大する技術としての一面も備えている。
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
101…ネットワークシステム、102…LAN、103…第一サーバ、104…第二サーバ、105…第一端末、106…第二端末、107…インターネット、109…INI−BOX、110…第一ISP、111…RTA、112…第二ISP、113…ソフトINI、202…シェル、203…第三アプリケーション、204…ストレージ、205…操作部、206…表示部、207…内蔵USBインターフェース、208…専用シェル、209…第一アプリケーション、210…第二アプリケーション、301…内蔵NIC、402…USB−Aコネクタ、403…USB−Bコネクタ、404…ネットワークコネクタ、502…CPU、503…RAM、504…フラッシュメモリ、505…第一USBインターフェース、506…第二USBインターフェース、507…第一NIC、508…バス、601…第二NIC、602…DHCPクライアント、603…アドレス重複回避部、604…DHCPサーバ、605…ポートフォワード設定部、606…暗号化通信処理部、607…認証制御部、608…機器特定ID、609…コントロールセッション管理部、610…制御設定情報、611…パケットフィルタ設定部、701…ループバック仮想NIC、702…DHCPクライアント、705…ポートフォワード設定部、706…パケットフィルタ設定部、801…操作ドライバ、802…表示制御部、803…ファイルシステム、804…プロセス制御部、805…クリップボードバッファ、806…ネットワークドライバ、807…APIフック設定部、808…操作情報取得部、809…画面キャプチャ処理部、810…ファイルシステム監視部、811…プロセス監視部、812…クリップボード監視部、813…APIフック処理部、901…第三NIC、902…第四NIC、903…ファイアウォール、904…暗号化通信処理部、905…認証部、906…端末テーブル、907…ユーザテーブル、908…認証済IDリスト、909…コントロールセッション管理部、910…データセッション管理部、911…第一リバースプロキシ、912…第二リバースプロキシ、913…サーバテーブル、914…資源テーブルディレクトリ

Claims (6)

  1. インターネットに接続される第一のNICと、
    インターネットの先に存在するプライベートネットワーク上に配置されるサーバに対して、端末がポートフォワーディングを用いた接続を行うために用いられる第二のNICと、
    前記第一のNICを通じて送受信されるパケットの通過を制限するパケットフィルタと、
    前記端末が前記サーバに接続するためのリバースプロキシを形成するリバースプロキシサーバに接続するための前記ポートフォワーディングを、前記第二のNICに設定するポートフォワード設定部と
    よりなるポートフォワード形成装置。
  2. 更に、
    各装置を一意に識別可能な機器特定IDと、
    前記リバースプロキシサーバに接続する際、前記機器特定IDを用いて端末認証を行う認証制御部と、
    前記端末認証が成功すると前記リバースプロキシサーバと制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と
    を備える、請求項1記載のポートフォワード形成装置。
  3. 前記認証制御部は、前記端末認証を完遂した後に更に前記端末を使用するユーザを認証するユーザ認証を行い、前記ユーザ認証が成功すると、前記端末の内部に設けられて前記端末の動作に制限を加える挙動制限部が前記端末の動作に制限を加えるための情報である制限情報を前記リバースプロキシサーバから受信する、請求項2記載のポートフォワード形成装置。
  4. インターネットに接続される第一のNICと、
    端末が接続しようとするサーバが存在するプライベートネットワークに接続される第二のNICと、
    前記端末に対して認証を行う認証部と、
    前記認証を完遂した前記端末と制御情報を送受信するためのコントロールセッションを形成するコントロールセッション管理部と、
    前記端末が前記サーバに接続するために前記第一のNICと前記第二のNICを接続するリバースプロキシを起動して前記端末とデータセッションを形成するデータセッション管理部と
    よりなるリバースプロキシサーバ。
  5. 前記認証部は、前記端末が備える、各装置を一意に識別可能な機器特定IDが格納されている端末テーブルを用いて前記端末の認証を行った後、前記端末のユーザを認証するユーザテーブルを用いて前記ユーザの認証を行う、請求項4記載のリバースプロキシサーバ。
  6. 更に、
    前記ユーザを一意に識別可能なユーザIDが格納されるユーザIDフィールドと、
    前記サーバに接続するプロトコルを示すプロトコルフィールドと、
    前記サーバが提供する情報資源を特定する文字列が格納されるリバースプロキシ用リソース文字列フィールドと、
    前記端末で稼働するアプリケーションプログラムが接続相手の情報資源を特定する文字列が格納される端末用リソース文字列フィールドと、
    前記端末と前記サーバを接続するリバースプロキシのプログラム名が格納されるリバースプロキシプログラム名フィールドと
    を具備するサーバテーブルを有し、
    前記コントロールセッション管理部は、前記コントロールセッションを通じて前記端末の接続要求を受信すると、前記サーバテーブルの内容に基づいて前記データセッション管理部に前記リバースプロキシ用リソース文字列フィールドの内容及び前記リバースプロキシプログラム名フィールドの内容を渡し、
    前記データセッション管理部は前記リバースプロキシ用リソース文字列フィールドの内容及び前記リバースプロキシプログラム名フィールドの内容に基づいて前記リバースプロキシを起動する、
    請求項5記載のリバースプロキシサーバ。
JP2011166336A 2011-07-29 2011-07-29 ポートフォワード形成装置及びリバースプロキシサーバ Pending JP2011223636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011166336A JP2011223636A (ja) 2011-07-29 2011-07-29 ポートフォワード形成装置及びリバースプロキシサーバ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011166336A JP2011223636A (ja) 2011-07-29 2011-07-29 ポートフォワード形成装置及びリバースプロキシサーバ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010089873A Division JP4908609B2 (ja) 2010-04-08 2010-04-08 ネットワークシステム

Publications (1)

Publication Number Publication Date
JP2011223636A true JP2011223636A (ja) 2011-11-04

Family

ID=45039880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011166336A Pending JP2011223636A (ja) 2011-07-29 2011-07-29 ポートフォワード形成装置及びリバースプロキシサーバ

Country Status (1)

Country Link
JP (1) JP2011223636A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5730434B1 (ja) * 2014-05-13 2015-06-10 株式会社野村総合研究所 端末を使用した情報共有を支援するシステム及び方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5730434B1 (ja) * 2014-05-13 2015-06-10 株式会社野村総合研究所 端末を使用した情報共有を支援するシステム及び方法
JP2015232872A (ja) * 2014-05-13 2015-12-24 株式会社野村総合研究所 端末を使用した情報共有を支援するシステム及び方法

Similar Documents

Publication Publication Date Title
JP4802295B1 (ja) ネットワークシステム及び仮想プライベート接続形成方法
US10601780B2 (en) Internet isolation for avoiding internet security threats
US11652792B2 (en) Endpoint security domain name server agent
JP5714078B2 (ja) 分散セキュアコンテンツ管理システムに対する認証
JP2008299617A (ja) 情報処理装置、および情報処理システム
US20160261576A1 (en) Method, an apparatus, a computer program product and a server for secure access to an information management system
US10032027B2 (en) Information processing apparatus and program for executing an electronic data in an execution environment
JP4908609B2 (ja) ネットワークシステム
Aggarwal Network Security with pfSense: Architect, deploy, and operate enterprise-grade firewalls
US11736516B2 (en) SSL/TLS spoofing using tags
JP2011223636A (ja) ポートフォワード形成装置及びリバースプロキシサーバ
JP5617108B2 (ja) 静的nat形成装置、リバースプロキシサーバ及び仮想接続制御装置
JP2012222461A (ja) ネットワークシステム
EP3190525A1 (en) Information processing device and program
RU2706894C1 (ru) Система и способ анализа содержимого зашифрованного сетевого трафика
Nandhini et al. VPN blocker and recognizing the pattern of IP address
JP2017085273A (ja) 制御システム、制御装置、制御方法およびプログラム
Alassouli Hacking of Computer Networks
Lee et al. Threats Hidden in Office Network: Mechanism of Credential Harvesting for Lateral Movement.
KR20140028615A (ko) 원타임 패스워드를 이용한 망분리 장치, 망분리 시스템 및 그 방법
O'Leary et al. Attacking the Windows Domain
JP2018163589A (ja) 通信システム、サーバ装置、及びゲートウェイサーバ
O'Leary et al. Web Attacks
Vazquez et al. Remote Access
Temmingh et al. SETIRI–ADvANCES iN TROjAN TEChNOlOGy