情報処理装置及びその制御方法、コンピュータプログラム
【課題】外部装置へのアクセスをプロセス毎に把握・管理することを可能にする。
【解決手段】外部装置と通信するプロセスが動作する情報処理装置は、プロセスを識別する識別情報を取得する第1取得手段と、プロセスが外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、ポート情報と、識別情報とを対応付けて記憶手段に記憶させる制御手段とを備えており、第2取得手段は、プロセスが通信ポートを使用するために用いるドライバ・ソフトウェアの入力または出力をフィルタリングすることにより、プロセスと通信ポートにアクセスするために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、ポート情報を取得する。
【解決手段】外部装置と通信するプロセスが動作する情報処理装置は、プロセスを識別する識別情報を取得する第1取得手段と、プロセスが外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、ポート情報と、識別情報とを対応付けて記憶手段に記憶させる制御手段とを備えており、第2取得手段は、プロセスが通信ポートを使用するために用いるドライバ・ソフトウェアの入力または出力をフィルタリングすることにより、プロセスと通信ポートにアクセスするために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、ポート情報を取得する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置及びその制御方法、コンピュータプログラムに関し、特に、外部装置へのアクセスログの取得技術に関する。
【背景技術】
【0002】
パーソナルコンピュータの普及や通信技術の進展などにより、インターネットは、子供を含む幅広い層に利用されるに至っている。その多くの利便性によって、インターネットへのアクセスは、ビジネス、学校、家庭生活において、我々の毎日の活動にほとんど不可欠のものになっている。
【0003】
他方で、インターネットの広範な普及に伴い、近年、学生、子供、従業者が特定の望ましくないウェブサイトにアクセスすることが問題となっている。また、インターネットのユーザの使用の仕方次第で、機密情報が漏洩しうることも問題となっている。
【0004】
このような問題意識に基づき、ユーザのウェブサイトへのアクセスを監視するために、特許文献1は、パケットキャプチャによりアクセスログの取得を行う構成を開示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−276760号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、特許文献1の構成では、コンピュータがどのウェブサイトにアクセスしたのかを把握することはできるが、どのような経緯でそのアクセスが行われたのかを把握することができない。すなわち、ブラウザを利用してユーザがアクセスしたのか、所定のアプリケーションの自動アップデートによりアクセスしたのか、あるいはウィルス感染によるユーザの意図しないアクセスなのか等を把握することができない。
【0007】
また、例えば、ウェブブラウザを利用してユーザがアクセスしたログは記録に残したいが、自動アップデートによりアクセスしたログは記録に残したくない等、ログ取得の選択をすることができず、ユーザの利便性が悪い。また、例えば、ウェブサイトの閲覧は禁止したいが、自動アップデートは許可したい等、ユーザの環境に適したウェブアクセスの制御を行うことができない。
【0008】
本発明は上記課題に鑑みなされたものであり、外部装置へのアクセスをプロセス毎に把握・管理することを可能にする情報処理装置及びその制御方法を提供するものである。
【課題を解決するための手段】
【0009】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置であって、前記プロセスを識別する識別情報を取得する第1取得手段と、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段とを備えており、前記第2取得手段は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入力または出力をフィルタリングすることにより、前記プロセスと前記通信ポートにアクセスするために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、前記ポート情報を取得することを特徴とする。
【0010】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置であって、前記プロセスを識別する識別情報を取得する第1取得手段と、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段とを備えており、前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする。
【0011】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、を有し、前記ポート情報は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入出力をフィルタリングすることにより、或いは、前記プロセスと前記通信ポートを作成及び破棄するために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、取得されることを特徴とする。
【0012】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、を有し、前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする。
【発明の効果】
【0013】
本発明によれば、外部装置へのアクセスをプロセス毎に把握・管理することができる。
【図面の簡単な説明】
【0014】
【図1】一実施形態による情報処理システムの構成図である。
【図2】一実施形態によるIP通信時のイベント発生についての概念図である。
【図3】一実施形態による端末装置における、プログラム監視処理を示すフローチャートである。
【図4】一実施形態によるTCPポートドライバをフィルタリングし、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図5】一実施形態によるTCPポートドライバをフィルタリングし、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図6】一実施形態によるAPIフックにより、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図7】一実施形態によるAPIフックにより、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図8】一実施形態によるOS標準のポート監視インターフェースを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図9】一実施形態によるOS標準のポート監視インターフェースを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図10】一実施形態によるポート情報一覧APIを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図11】一実施形態によるファイル情報オブジェクト一覧取得APIを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図12】一実施形態による端末装置における、IP通信の監視処理を示すフローチャートである。
【図13】一実施形態による端末装置における、アクセスログ取得の処理を示すフローチャートである。
【図14】一実施形態による端末装置における、アクセス制御の処理を示すフローチャートである。
【図15】一実施形態による複数ユーザが同時に使用可能な情報処理システムとインターネットアクセス情報設定サーバの構成図である。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【0016】
<第1実施形態>
(情報処理システム)
図1は、本発明の一実施形態に係る情報処理システムの構成図である。図1に示すように、情報処理システムは、クライアントとして動作する端末装置(以下、クライアント装置と呼ぶ)500、サーバとして動作する端末装置(以下、サーバ装置と呼ぶ)510、及びネットワーク530を有している。各端末装置はパーソナルコンピュータ、携帯情報端末などの情報処理装置であり、本実施形態ではそれぞれパーソナルコンピュータにより実現した場合を説明する。クライアント装置500は、サーバ装置510とネットワーク530を介して接続されている。
【0017】
[クライアント装置]
クライアント装置500は、たとえば、CPU(Central Processing Unit)501、ROM(Read Only Memory)502、RAM(Random Access Memory)503、HDD(Hard Disc Drive)504、入力装置505、表示装置506、インターフェース507、システムバス508を備えている。後述するように、クライアント装置500においては、外部装置と通信するプロセスが動作する。
【0018】
CPU501は、ROM502やHDD504に記憶されているコンピュータプログラムに基づいて各部を制御するプロセッサである。RAM503は書き込み可能メモリであり、ワークエリアとして機能する。ROM502は不揮発性の記憶素子であり、ファームウエアなどを記憶する。HDD504は大容量記憶装置であり、オペレーティングシステム、アプリケーションプログラムなどが記憶されている。なお、セキュリティソフトウェア509などもHDD504に格納される。
【0019】
セキュリティソフトウェア509は、その詳細については後述する様に、クライアント装置500を監視し、外部装置へのアクセスログの取得やアクセスの制御機能を提供する。
【0020】
CPU501と各部は、システムバス508を介して命令やデータの送受信を実行する。インターフェース507は、他の端末装置とネットワーク530を介して通信するための通信回路である。
【0021】
[サーバ装置]
サーバ装置510は、たとえば、CPU511、ROM512、RAM513、HDD514、入力装置515、表示装置516、インターフェース517、システムバス518を備えている。サーバ装置510はクライアント装置500の動作を管理する管理装置として動作する。クライアント装置500が有する構成要素と同一名称の構成要素は、上述したクライアント装置500の構成要素と同等の機能を有する。
【0022】
なお、サーバ装置510のHDD514には、ログ情報519、設定情報520なども格納される。ログ情報519には、クライアント装置500から収集したクライアント装置500のアクセスログ情報が記録される。設定情報520には、例えば、ユーザ毎、プロセス毎のログ記録を行うか否かや、外部装置にアクセス可能なプロセスや、その接続先についての情報が格納される。接続先は、例えば、URL(Uniform Resource Locatorで特定され、接続不可を示す「ブラックリストや、接続可を示すホワイトリスト等でアクセスの可否が指定される。なお、ログ情報519、設定情報520は、クライアント装置500が備えてもよい。
【0023】
なお、以下の説明では、クライアント装置500、サーバ装置510がパーソナルコンピュータであることを前提にしているが、これに限られない。すなわち、クライアント装置500、サーバ装置510が一般的なパーソナルコンピュータと同等以上、若しくはそれに準ずる演算処理能力を有する機器であるならばその種類、機種は限定されるものではない。
【0024】
(IP通信時のイベント発生)
図2は、IP(Internet Protocol)通信時のイベント発生についての概念図である。図2は、クライアント装置500におけるプログラム間の通信を模式的に示している。図2のように、セキュリティソフトウェア509は、TCP(Transmission Control Protocol)/UDP(User Datagram Protocol)フィルタ232、被アクセスポート情報リスト233、及びIPフィルタ234を有している。
【0025】
TCP/UDPフィルタ232は、任意のプログラム(プロセス、例えば、Web閲覧ソフトウェア)231からTCPポート又はUDPポートへのアクセスを検知する。そして、検知したTCP又はUDPポートアクセスのポート情報を、アクセスの元となったプロセスと関連付けた被アクセスポート情報として、被アクセスポート情報リスト233に格納する。なお、ポート情報は、例えば、IPアドレス及びポート番号を含んでおり、被アクセスポート情報は、ポートのポート情報と該ポートにアクセスしたプロセスとの対応関係を含む情報である。被アクセスポート情報は、さらに、プロセスに関連するユーザの情報を含むものであっても良い。
【0026】
IPフィルタ234は、IP通信開始を検知後、被アクセスポート情報リスト233を参照し、例えば、プロセスやユーザ等を特定する。そして、アクセスログの出力や、アクセスの制御を行う。
【0027】
TCP/UDPフィルタ232は、任意のプログラム231からのTCP又はUDPポートの破棄を検知すると、破棄されたポートについての被アクセスポート情報を被アクセスポート情報リスト233から破棄する。
【0028】
このように本実施形態では、TCP/UDPポートへのアクセスと、その後の当該ポートの破棄イベントの間において、通信に使用されたポート情報(例えば、URL、IPアドレス、ポート番号)と、この通信の元となったプロセス(起動プログラム)とが対応付けられる。
【0029】
このように、本実施形態では、プロセスを識別する識別情報を取得するとともに、このプロセスが外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する。そして、取得したポート情報とプロセスの識別情報とを対応付けて記憶する。このため、本実施形態によれば、外部装置へのアクセスをプロセス毎に把握・管理することが可能となる。よって、例えば、単に通信ログを記録した場合に比べて、よりきめ細かな通信解析を行ったり、アクセス制御を行ったりすることが可能となる。
【0030】
(プログラム監視処理)
図3は、クライアント装置500において実行される、プログラム監視処理を示すフローチャートである。
【0031】
S201で、クライアント装置500は、セキュリティソフトウェア509を起動する。セキュリティソフトウェア509は、サービスプログラムとして自動的に起動することも、ユーザが任意に起動したりすることもできる。
【0032】
S202で、クライアント装置500にユーザがログインする。ログインは、ユーザが、アカウント名又はユーザ名と、それに対応するパスワードなどを入力して行われる。
【0033】
S203で、クライアント装置500は、ログインしたユーザのユーザ情報を取得する。ここでユーザ情報とはアカウント名、ドメイン名、ユーザ名などユーザを一意に識別することが可能な値である。
【0034】
S204で、S203で取得したユーザ情報を利用して、クライアント装置500はサーバ装置500と通信を行い、サーバ装置500の設定情報520からログインしたユーザのユーザ設定を取得する。サーバ装置500は、該当するユーザが登録されていない場合はデフォルト情報などを返答する。
【0035】
S205で、ログインしたユーザの指示などに応じて、クライアント装置500は、Web閲覧ソフトウェアなどの任意のプログラムを起動する。その際にセキュリティソフトウェア509はプログラムの起動を検知する。なお、プログラムの起動の検知は、ユーザの指示による起動に限定されず、例えば、自動アップデートによる起動、ウィルス感染による起動でも可能である。
【0036】
S206で、クライアント装置500は、S205で起動したプログラムの情報を取得する。取得する情報にはプログラム名、起動したユーザのアカウント名、ドメイン名、プロセスID、セッションIDなどが含まれる。クライアント装置500は、その情報とS203で取得したユーザ情報から、プロセスとユーザ情報の対応を記したユーザプロセスリストに追加する。このようにして、プロセスを識別する識別情報を取得する第1取得処理を行う。なお、取得するのは起動したプログラムの情報に限らず、ポートにアクセスしたプログラムの情報を取得することも可能である。
【0037】
S207で、クライアント装置500は、起動したプログラムの実行によりIP通信をするために使用するポートにアクセスする。このアクセスとは、ポート作成、書き込み、読み込み、破棄などの処理を指す。その際にセキュリティソフトウェア509は、アクセスされた通信ポートのポート情報を取得する。ポート情報は、通信ポートの種類(TCP,UDP等)、通信ポートのポート番号等のポート情報を含む情報である。例えば、TCPポートドライバやUDPポートドライバをフィルタリングしたり、API(Application Programming Interface)フックによりポートにアクセスしたAPIをフックしたり、OS標準のポート監視インターフェース(Windows Filterling Platform等)を利用する等により、ポート情報、を収集する。
【0038】
通信ポートの種類を取得することより、同時に複数のプロトコルを監視することができ、より詳細な分析が可能となる。たとえばTCPポートの監視をしているとHTTPプロトコルの監視ができ、UDPポートの監視によりDNSプロトコルの監視を行うことができる。これによって、DNSにより得られたマシン名などとHTTPリクエストを組み合わせて、IPアドレスではなくマシン名を利用したWebアクセス等の詳細分析が可能となる。またプロトコル毎にログ取得制御やアクセス制限をかけることが可能になる。
【0039】
このようにして、ステップS207では、プロセスが外部装置と通信するために使用する通信ポートにアクセスしたことに応じて、当該通信ポートの特性を示すポート情報を取得する第2取得処理を実行する。最後に、S208で、S207で取得したポート情報と、S206で作成したユーザプロセスリストから、被アクセスポート情報を生成して、被アクセスポート情報リスト233を更新する。以下に、被アクセスポート情報を取得する処理の詳細として、TCP/UDPポートドライバのフィルタリングと、APIフック、OS標準のポート監視インターフェースそれぞれの具体的手順を説明する。
【0040】
[TCP/UDPポートドライバのフィルタリング]
図4は、TCPポートドライバとUDPポートドライバをフィルタリングし、プロセスIDと通信ポート情報との対応リストを作成する処理の手順を示すフローチャートである。この処理では、プロセスが通信ポートを使用するために用いるドライバ・ソフトウェアの入出力をフィルタリングすることにより、被アクセスポート情報を取得する。以下の各工程はクライアント装置500が実行する。なお、後述する処理は、TCPポートドライバとUDPポートドライバを用いてフィルタリングを行う処理について説明するが、TCPポートドライバのみ、或いは、UDPポートドライバのみでフィルタリングを行ってもよい。
【0041】
S301でセキュリティソフトウェア509が作成したフィルタドライバをTCPポートドライバとUDPポートドライバにアタッチする。アタッチするタイミングは監視を開始した際などである。フィルタドライバをTCPポートドライバやUDPポートドライバにアタッチするとは、TCPポートやUDPポートを介したデータ伝送のフィルタリングを開始する処理をいう。
【0042】
S302で、任意のプログラムが、外部の装置と通信するためのTCPポートもしくはUDPポートにアクセスする。
【0043】
そして、S303で、セキュリティソフトウェア509において、アタッチしたフィルタドライバにファイルオブジェクトの作成、書き込み、読み込みなどのイベントが通知される。ここで、ファイルオブジェクトとは、ファイル、デバイス、ディレクトリの情報を格納しているオブジェクトをいう。例えば、ファイルパス、ファイル名、ファイルへのアクセス権、デバイス情報などが格納されている。
【0044】
S304で、上記のイベントの情報から、ファイルオブジェクトを作成したプロセスを識別する情報を取得し、S305で、ファイルオブジェクトからポート情報を取得する。この場合のポート情報とはポート種類、IPアドレスやポート番号を指す。
【0045】
S306で、S304、S305で取得したプロセスID、通信ポート情報及びファイルオブジェクトなどから、被アクセスポート情報を作成する。S307で被アクセスポート情報リスト233内に同一の被アクセスポート情報(プロセスID、ポート種類、IPアドレス、ポート番号などが同一)が存在した場合、リストには追加しない、もしくはリストの情報を上書きし、S309に移行する。なお、リストの情報の上書きとは、既に存在する情報を該情報に更新、既に存在する情報を削除後に該情報をリストに追加、リストに該情報を追加後に既に存在する情報を削除することを含む。リスト内に同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S307において、同一の被アクセスポート情報が存在しない場合はS308でリストに格納してS309に移行する。
【0046】
S309で、起動プログラムが、TCP/UDPポートを破棄すると、S310でセキュリティソフトウェア509がアタッチしたフィルタドライバに、ファイルオブジェクト破棄イベントが通知される。
【0047】
S311で、ファイルオブジェクト破棄イベントにより削除されるファイルオブジェクトから、削除される被アクセスポート情報を特定して、S312で被アクセスポート情報リスト233から、削除対象として特定した被アクセスポート情報を削除する。複数該当する情報が登録されていた場合は、該当する情報をすべて削除する。またはファイルオブジェクト破棄イベントでなく、一定間隔で被アクセスポート情報を削除してもよい。
【0048】
これにより、リアルタイムにTCPポートと対応プロセスIDのリストを作成することができる。なお、ここではTCPポートドライバについて記述したが、UDPポートドライバやその他のドライバにおいても、対応リストを作成することができる。
【0049】
上述した形態では、ファイルオブジェクト破棄イベントを監視し、被アクセスポート情報を被アクセスポート情報リスト233から削除していた。しかしながら、図5を用いて説明する様に、ファイルオブジェクト破棄イベントを監視しない形態とすることもできる。
【0050】
なお、図5のS401〜S406は、図4のS301〜S306の処理と同一であるため、その説明は省略する。
【0051】
S407でプロセスID以外が同一の被アクセスポート情報が存在した場合、S408に移行し、リストにその情報を上書きする。プロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにして、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。それ以外の場合、S409において、被アクセスポート情報リスト233に被アクセスポート情報を追加して格納する。以上の処理により、ファイルオブジェクト破棄イベントを監視しない構成とすることができる。
【0052】
[APIフック]
図6は、APIフックを使用し、プロセスIDと通信ポート情報の対応リストを作成する処理の手順を示すフローチャートである。この処理では、プロセスと、通信ポートにアクセス(作成及び破棄)するために使用するアプリケーション・プログラミング・インタフェースと、の間の通信を監視することで、被アクセスポート情報を取得する。
【0053】
S501で、セキュリティソフトウェア509が、ポート作成API、ポート破棄API等をフックする。フックするタイミングはポート監視を開始した際などである。フックするAPIは、具体的には、例えば、WINSockAPIのbindやconnect、closesocketなどである。
【0054】
S502で、任意のプログラムがポートアクセスAPI(作成、書き込み、読み込み等)を使用し、S503でセキュリティソフトウェア509において、ポートアクセスAPIをフックするイベントを発生させる。ここで、APIをフックするとは、当該APIの呼びだしを別のオブジェクトが横取りすることをいう。APIのフックは、具体的にはAPIを呼び出す際に用いられるアドレスを、特定のアドレスに書き換えることにより実行される。
【0055】
S504で上記のイベントの情報から、APIが使用するプロセスを取得し、S505でAPIの戻り値や入力からポート情報を取得する。この場合のポート情報とは、ポート種類、IPアドレスやポート番号を指す。
【0056】
S506でS504、S505で取得したプロセスIDと、通信ポート情報及びハンドル情報などから被アクセスポート情報を作成する。S507で被アクセスポート情報リスト233内に同一のMポート情報が存在した場合、リストに追加しない、もしくはリストの情報を上書きし、S509に移行する。リスト内に同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S507において、同一の被アクセスポート情報が存在しない場合はS508でリストに格納し、S509に移行する。
【0057】
S509で、任意のプログラムは、ポート破棄APIを使用し、S510でセキュリティソフトウェア509に、ポート破棄APIフックイベントを発生させる。
【0058】
S511で、削除されるハンドル情報などから、削除される被アクセスポート情報を特定し、S512で被アクセスポート情報リストから削除対象の被アクセスポート情報を削除する。複数該当する情報が登録されていた場合は、該当する情報をすべて削除する。またはポート破棄APIフックイベントでなく、一定間隔で被アクセスポート情報リストを削除してもよい。
【0059】
これによりリアルタイムに通信ポートと対応プロセスIDのリストを作成することができる。ここでは、WINSockAPIのフックについて記述したが、その他のAPIにおいても被アクセスポート情報リスト233を作成することができる。
【0060】
上述した形態では、ポート破棄APIフックイベントを監視し、被アクセスポート情報を被アクセスポート情報リスト233から削除していた。しかしながら、図7を用いて説明する様に、ポート破棄APIフックイベントを監視しない形態とすることもできる。
【0061】
なお、図7のS601〜S606は、図6のS501〜S506の処理と同一であるため、その説明は省略する。
【0062】
S607でプロセスID以外が同一の被アクセスポート情報が存在した場合、S608でその情報を上書きする。プロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにして、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。それ以外の場合、S609において、被アクセスポート情報リスト233に被アクセスポート情報を格納する。
【0063】
以上の処理により、ポート破棄APIフックイベントを監視しない構成とすることができる。
【0064】
[OS標準のポート監視インターフェース]
図8は、OS標準のポート監視インターフェースを使用し、被アクセスポート情報リスト233を作成する処理の手順を示すフローチャートである。なおOS標準のポート監視インターフェースとは、WindowsFiltelingPlatform等のポートアクセス(作成、接続、破棄、書き込み、読み込み等)のイベントを通知するインターフェースのことを指す。
【0065】
S1001で、セキュリティソフトウェア509が、OS標準のポート監視インターフェースにポートアクセスのイベントが発生した際に呼ばれるコールバックを登録する。
【0066】
S1002で、任意のプログラムがポートにアクセスし、S1003でセキュリティソフトウェア509において、ポートアクセスのコールバックが発生する。
【0067】
S1004で上記コールバックの情報から、プロセスIDを、S1005でポート情報を取得する。この場合のポート情報とは、ポート種類、IPアドレスやポート番号を指す。
【0068】
S1006でS1004、S1005で取得したプロセスIDとポート情報から被アクセスポート情報を作成する。S1007で被アクセスポート情報233リスト内に同一の被アクセスポート情報が存在した場合、被アクセスポート情報233リストに追加しない、もしくはリストの情報を上書きし、S1009に移行する。被アクセスポート情報233リスト内に同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S1007で、同じ被アクセスポート情報が存在しない場合、S1008で被アクセスポート情報233リストに格納し、S1009に移行する。
【0069】
S1009で、任意のプログラムは、ポート破棄をし、S1010でセキュリティソフトウェア509に、ポート破棄イベントのコールバックが発生する。
【0070】
S1011で、コールバックの情報から、削除される被アクセスポート情報を特定し、S1012で被アクセスポート情報リスト233から削除対象の被アクセスポート情報を削除する。複数該当する情報が登録されていた場合は、該当する情報をすべて削除する。またはポート破棄イベントのコールバックでなく、一定間隔で被アクセスポート情報を削除してもよい。
【0071】
これによりリアルタイムに通信ポートと対応プロセスIDのリストが作成することができる。
【0072】
上述した形態では、ポート破棄イベントのコールバックを監視し、被アクセスポート情報を被アクセスポート情報リスト233から削除していた。しかしながら、図9を用いて説明する様に、ポート破棄イベントのコールバックを監視しない形態とすることもできる。
【0073】
なお、図9のS1101〜S1106は、図8のS1001〜S1006の処理と同一であるため、その説明は省略する。
【0074】
S1107でプロセスID以外が同一の被アクセスポート情報が存在した場合、S1108でその情報を上書きする。プロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。それ以外の場合、S1109において、被アクセスポート情報リスト233に被アクセスポート情報を格納する。以上の処理により、ポート破棄イベントのコールバックを監視しない構成とすることができる。
【0075】
また被アクセスポート情報を取得する処理としては、上記手法でアクセス時にリアルタイムにリスト作成してもいいし、一定時間ごとにポート情報一覧取得APIやファイルオブジェクト情報一覧APIを利用して取得してもよい。一定時間ごとにポート情報取得APIやファイルオブジェクト情報一覧APIを利用して取得することにより、クライアント装置500やネットワークへの負荷を軽減することが可能となる。次にポート情報一覧取得APIを利用したリスト作成方法と、TCP/UDPポートドライバのファイルオブジェクト情報を利用したリスト作成方法についてそれぞれの具体的手順を説明する。
【0076】
[ポート情報一覧取得API]
図10は、一定間隔ごとにポート情報一覧取得APIを使用し、被アクセスポート情報リスト233を作成する処理の手順を示すフローチャートである。
【0077】
S1201でセキュリティソフトは、ポート情報一覧取得APIを利用し、被アクセスポート情報一覧を取得する。S1202でプロセスID以外が同一の被アクセスポート情報が存在した場合、S1203でリストの情報を上書きする。リスト内にプロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先し、使用するように実装してもよい。S1202で被アクセスポート情報リスト233内にプロセスID以外が同一の被アクセスポート情報存在しない場合、S1204でリストに被アクセスポート情報を格納する。
【0078】
S1205で、取得したすべての被アクセスポート情報に対してS1202〜S1204の処理を行っていない場合はS1202に戻り繰り返す。繰り返し終了後、S1206において、APIで取得した情報と等しくない情報が被アクセスポート情報リスト233に存在するか確認する。存在しない場合は終了し、存在する場合はS1207においてAPIで取得した情報と等しくない情報を被アクセスポート情報リスト233から削除する。これにより、通信ポートと対応プロセスIDのリストが作成することができる。
【0079】
[ファイルオブジェクト情報一覧取得API]
図11は一定間隔ごとにファイルオブジェクト情報一覧取得APIを使用し、ファイルオブジェクトの一覧を取得し、被アクセスポート情報リスト233を作成する処理の手順を示すフローチャートである。このAPIではすべてのドライバのファイルオブジェクトが取得される。
【0080】
S1301でファイルオブジェクト一覧取得APIを利用し、ファイルオブジェクト一覧を取得する。S1302でファイルオブジェクトがTCP又はUDPドライバに属しているか判断し、いずれにも属していない場合にはS1307に移行する。いずれかのドライバに属している場合はS1303でファイルオブジェクトから被アクセスポート情報を取得する。
【0081】
S1304において、プロセスID以外が同一の被アクセスポート情報が存在した場合、S1305でリストの情報を上書きする。リスト内にプロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加してリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S1304で存在しない場合、S1306において、被アクセスポート情報を被アクセスポート情報リスト233に格納する。
【0082】
S1307で取得したすべてのファイルオブジェクトに対してS1302〜S1306の処理を行っていない場合には、S1302に戻って処理を繰り返す。繰り返し終了後、S1308において、S1301〜S1307で取得した被アクセスポート情報と等しくない情報が被アクセスポート情報リスト233に存在するか確認する。存在しない場合は終了し、存在する場合はS1309で等しくない被アクセスポート情報を被アクセスポート情報リスト233から削除する。これにより、通信ポートと対応プロセスIDのリストが作成することができる。
【0083】
(IP通信監視処理)
図12は、クライアント装置500において実行される、IP通信の監視処理を示すフローチャートである。
【0084】
S701で、任意の起動プログラムがIP通信(Webアクセス)を行うと、S702でセキュリティソフトウェア509はイベントを検知し、情報を取得する。取得する情報は、IP通信に使用する通信ポート情報や、通信先URLなどである。具体的には、たとえば、IPパケットのフィルタリングを行い、IPパケットのヘッダ部分から通信ポート情報や、IPパケット内のデータを取得し、HTTPプロトコルの解析を行い、通信先URLを取得する。
【0085】
(Webアクセスログ取得処理)
図13は、クライアント装置500において実行される、Webアクセスログ取得の処理を示すフローチャートである。この処理では、プロセスと外部装置との間で通信される通信データのログ情報を、ポート情報及びプロセスの識別情報に関連づけて記録する。ここでは、特に、クライアント装置500のユーザを識別する情報を入力し、当該ユーザを識別する情報に関連づけてログ情報を記録する場合を説明する。
【0086】
S801で、S702で取得した情報と、S208で作成した被アクセスポート情報リスト233から、IP通信を行ったユーザやプロセスを特定する。S802で、特定したユーザのIP通信アクセスログとして、クライアント装置500に記憶する。たとえば、ログファイルとして保存しておいたり、メモリ空間に保持しておいたりしてもよい。
【0087】
S803で、クライアント装置500のユーザがログオフする。S804で、S802において記録したIP通信アクセスログを、サーバ装置500へ送信する。
【0088】
なお、本実施形態では、S802でIP通信アクセスログをクライアント装置500に記録しているが、クライアント装置500への記録を省略して、サーバ装置500に送信してもよい。
【0089】
サーバ装置500では、受け取ったIP通信アクセスログをログ情報519に格納し、アクセスログを閲覧可能な状態にする。
【0090】
以上の構成により、ユーザ毎に、ポート情報とプロセスを関連付けることができる。したがって本実施形態によれば、例えば、Web閲覧ソフトウェアのログ取得は行うが、自動アップデートのログは取得しない等、プロセス毎のログ記録の可否を選択することができ、ユーザの環境にあわせた不要なログの記録を削減することができる。また、上記の処理では、クライアント装置500において記録したログ情報を予め定められた管理装置(サーバ装置500)へ送信するため、サーバ装置500において各クライアント装置500の動作を一括して管理することができる。
【0091】
(Webアクセス制御処理)
図14は、クライアント装置500において実行される、Webアクセス制御の処理を示すフローチャートである。この処理では、情報処理装置のユーザを識別する情報を入力し、当該ユーザを識別する情報と、プロセスを識別する識別情報との少なくともいずれかに基づいて、該プロセスが予め定められた外部装置へアクセスすることを禁止する。
【0092】
まず、S901で、S702で取得した情報と、S208で作成した被アクセスポート情報リスト233から、アクセスを行ったユーザやプロセスを特定する。
【0093】
S902で、特定したユーザからS204で取得したユーザ設定(Webアクセス権限)を取得する。
【0094】
S903で、発生した外部装置へのアクセスに対して、アクセス許可が存在するのか確認する。アクセス権限が存在しない場合(S903でYES)はS904に進み、Webアクセスを禁止する。例えば、アクセスを禁止する場合はパケットを破棄したり、もしくは意味のないデータに書き換えたりする。
【0095】
また、アクセス権限が存在する場合(S903でNO)は、S905に進み、Webアクセスを許可する。
【0096】
以上、本実施形態によれば、ユーザ毎に、ポート情報とプロセスを関連付けることができる。したがって、例えば、自動アップデートのWebアクセスのみ許可するが、その他のWebアクセスは禁止する等、ユーザの環境にあわせたWebアクセス制御を行うことができる。
【0097】
<第2実施形態>
第2実施形態では、上記第一実施形態のセキュリティソフトウェア509をターミナルサービスに利用した構成、動作について説明する。本実施形態では、クライアント装置で動作するプロセスは、外部装置において実行されるアプリケーションを遠隔操作する処理を行う。
【0098】
なお、第2実施形態の動作の大部分は第1実施形態の動作と共通するため、第1実施形態と異なる構成、動作についてのみ説明し、共通の動作については説明を省略する。
【0099】
ターミナルサービスとは、クライアントコンピュータがサーバコンピュータにリモート接続し、サーバコンピュータ上に生成された仮想デスクトップ環境を利用してサーバコンピュータ上でアプリケーションプログラムを実行できるようにするサービスである。
【0100】
図15は、本実施形態に係る複数のユーザが同時に使用可能な情報処理システム(ターミナルサービス)の全体構成図である。本実施形態に係るシステムは、情報処理装置の一例である複数の端末装置(設定サーバ装置510、サーバ装置20、クライアント装置210、220)を備えており、これらはLANなどのネットワーク230を介して接続されている。
【0101】
サーバ装置20上では、ターミナルサービス提供部201を含むオペレーティングシステム(OS202)が動作している。また、サーバ装置20には、セキュリティソフトウェア509がインストールされている。セキュリティソフトウェア509は、インターネットアクセス制御機能を提供するプログラムであり、サーバ装置20上で動作している。
【0102】
ターミナルサービス提供部201は、たとえば、ターミナルサーバと呼ばれるプログラムによって実現される。サーバ装置20は、認証情報記憶部203を有している。認証情報記憶部203には、たとえば、クライアント装置210、220の各利用者のログインユーザ情報等(ログインユーザ名、セッションID等)が格納されている。
【0103】
クライアント装置210、220のそれぞれは、ターミナルサービス提供部201から提供されるターミナルサービスを利用するためのターミナルサービス利用部211、221を備える。クライアント装置210、220のそれぞれは、不図示のキーボード等の入力部や、ディスプレイ装置などの表示部が接続されている。ターミナルサービス利用部211、221は、たとえば、リモート・デスクトップ接続(RDC)と呼ばれるプログラムや、ターミナルサービス・クライアント(TSC)と呼ばれるプログラムによって実現される。ターミナルサービスは、Windows(登録商標)、MacOSおよびLinux(登録商標)などの一般的なオペレーティングシステム(OS)であれば一般に備えているサービスであるが、その名称はOSによって異なっている。
【0104】
リモートサービスは、第1のパーソナルコンピュータ(PC)に対して第2のPCからリモートログインして、第1のPCを遠隔操作するサービスである。例えば、第1のPCから情報を取得したり、第1のPCに情報を書き込んだり、第1のPCにインストールされているソフトウェアを第1のPC上で実行したりする。なお、第1のPCの入力部を通じて直接ログインしているユーザをローカルユーザと呼び、第2のPCから第1のPCへリモートログインしているユーザをリモートユーザと呼んで区別することにする。
【0105】
サーバとして機能するサーバ装置20は、クライアントとして機能するクライアント装置210、220に仮想デスクトップ画面を表示するための情報を送信する。クライアント装置210、220は、サーバ装置20から受信した情報に従って仮想デスクトップ画面をディスプレイ装置に表示したり、利用者が仮想デスクトップ画面上で行う操作に従って、コマンドやデータをサーバ装置20に送信したりする。サーバ装置20では、クライアント装置210、220から送信されてきたコマンドやデータに応じてアプリケーションプログラムを実行し、実行結果をクライアント装置210、220へ送信する。クライアント装置210、220では、サーバ装置20から送信されてきた実行結果を仮想デスクトップ画面上に表示する。サーバ装置20は、リモートユーザによって使用される一方で、同時並行的にローカルユーザによっても使用可能である。
【0106】
このように、リモートユーザとローカルユーザとを含む複数のユーザが同時に使用可能な情報処理システム(ターミナルサービス)においては、アプリケーションプログラムが、サーバ装置20で実行される。複数のクライアント装置210、220からサーバ装置20に同時に接続してアプリケーションプログラムを実行することも可能である。この場合、リモートユーザ毎にセッションが分けられ、各利用者は別々の仮想デスクトップ環境を利用してアプリケーションプログラムを実行する。ターミナルサービス提供部201は、各セッションを区別するためにセッションIDを発行する。なお、同時に使用可能とは、同じ時間に複数のユーザがログインしている状態を含む。このようなターミナルサービスは一般的な技術であるため、これ以上の説明は省略する。
【0107】
図15において設定サーバ装置510上のログ収集部521では、セキュリティソフトウェア509で使用するユーザ毎の外部装置へのアクセス情報を記録する。設定部522は、ユーザ毎の接続可能なURLのブラックリストやホワイトリスト等、ユーザ毎の設定情報を記録している。セキュリティソフトウェア509は、ユーザが端末20にログイン時、リモートログイン時などのタイミングで端末510と通信し、ユーザ毎の設定情報を取得する。
【0108】
(プログラム監視)
図3のS203で、ログインしたユーザのユーザ情報を取得する。ここでユーザ情報に、セッションIDを含むようにする。
【0109】
従って、S208では、被アクセスポート情報リスト233には、複数のユーザが同時に使用可能な情報処理システム(ターミナルサービス)におけるユーザ毎のリストが作成される。
【0110】
以上のように、本実施形態によれば、複数のユーザが同時に使用可能な情報処理システムにおいても、Webアクセスについてログインしたユーザ毎のログ取得、ユーザ毎に適したアクセス権限を与えることが可能となる。
【0111】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は情報処理装置及びその制御方法、コンピュータプログラムに関し、特に、外部装置へのアクセスログの取得技術に関する。
【背景技術】
【0002】
パーソナルコンピュータの普及や通信技術の進展などにより、インターネットは、子供を含む幅広い層に利用されるに至っている。その多くの利便性によって、インターネットへのアクセスは、ビジネス、学校、家庭生活において、我々の毎日の活動にほとんど不可欠のものになっている。
【0003】
他方で、インターネットの広範な普及に伴い、近年、学生、子供、従業者が特定の望ましくないウェブサイトにアクセスすることが問題となっている。また、インターネットのユーザの使用の仕方次第で、機密情報が漏洩しうることも問題となっている。
【0004】
このような問題意識に基づき、ユーザのウェブサイトへのアクセスを監視するために、特許文献1は、パケットキャプチャによりアクセスログの取得を行う構成を開示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−276760号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、特許文献1の構成では、コンピュータがどのウェブサイトにアクセスしたのかを把握することはできるが、どのような経緯でそのアクセスが行われたのかを把握することができない。すなわち、ブラウザを利用してユーザがアクセスしたのか、所定のアプリケーションの自動アップデートによりアクセスしたのか、あるいはウィルス感染によるユーザの意図しないアクセスなのか等を把握することができない。
【0007】
また、例えば、ウェブブラウザを利用してユーザがアクセスしたログは記録に残したいが、自動アップデートによりアクセスしたログは記録に残したくない等、ログ取得の選択をすることができず、ユーザの利便性が悪い。また、例えば、ウェブサイトの閲覧は禁止したいが、自動アップデートは許可したい等、ユーザの環境に適したウェブアクセスの制御を行うことができない。
【0008】
本発明は上記課題に鑑みなされたものであり、外部装置へのアクセスをプロセス毎に把握・管理することを可能にする情報処理装置及びその制御方法を提供するものである。
【課題を解決するための手段】
【0009】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置であって、前記プロセスを識別する識別情報を取得する第1取得手段と、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段とを備えており、前記第2取得手段は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入力または出力をフィルタリングすることにより、前記プロセスと前記通信ポートにアクセスするために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、前記ポート情報を取得することを特徴とする。
【0010】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置であって、前記プロセスを識別する識別情報を取得する第1取得手段と、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段とを備えており、前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする。
【0011】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、を有し、前記ポート情報は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入出力をフィルタリングすることにより、或いは、前記プロセスと前記通信ポートを作成及び破棄するために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、取得されることを特徴とする。
【0012】
本発明の一側面によると、外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、を有し、前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする。
【発明の効果】
【0013】
本発明によれば、外部装置へのアクセスをプロセス毎に把握・管理することができる。
【図面の簡単な説明】
【0014】
【図1】一実施形態による情報処理システムの構成図である。
【図2】一実施形態によるIP通信時のイベント発生についての概念図である。
【図3】一実施形態による端末装置における、プログラム監視処理を示すフローチャートである。
【図4】一実施形態によるTCPポートドライバをフィルタリングし、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図5】一実施形態によるTCPポートドライバをフィルタリングし、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図6】一実施形態によるAPIフックにより、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図7】一実施形態によるAPIフックにより、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図8】一実施形態によるOS標準のポート監視インターフェースを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図9】一実施形態によるOS標準のポート監視インターフェースを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図10】一実施形態によるポート情報一覧APIを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図11】一実施形態によるファイル情報オブジェクト一覧取得APIを利用し、プロセスIDと通信ポート情報の対応リストを作成する処理を示すフローチャートである。
【図12】一実施形態による端末装置における、IP通信の監視処理を示すフローチャートである。
【図13】一実施形態による端末装置における、アクセスログ取得の処理を示すフローチャートである。
【図14】一実施形態による端末装置における、アクセス制御の処理を示すフローチャートである。
【図15】一実施形態による複数ユーザが同時に使用可能な情報処理システムとインターネットアクセス情報設定サーバの構成図である。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【0016】
<第1実施形態>
(情報処理システム)
図1は、本発明の一実施形態に係る情報処理システムの構成図である。図1に示すように、情報処理システムは、クライアントとして動作する端末装置(以下、クライアント装置と呼ぶ)500、サーバとして動作する端末装置(以下、サーバ装置と呼ぶ)510、及びネットワーク530を有している。各端末装置はパーソナルコンピュータ、携帯情報端末などの情報処理装置であり、本実施形態ではそれぞれパーソナルコンピュータにより実現した場合を説明する。クライアント装置500は、サーバ装置510とネットワーク530を介して接続されている。
【0017】
[クライアント装置]
クライアント装置500は、たとえば、CPU(Central Processing Unit)501、ROM(Read Only Memory)502、RAM(Random Access Memory)503、HDD(Hard Disc Drive)504、入力装置505、表示装置506、インターフェース507、システムバス508を備えている。後述するように、クライアント装置500においては、外部装置と通信するプロセスが動作する。
【0018】
CPU501は、ROM502やHDD504に記憶されているコンピュータプログラムに基づいて各部を制御するプロセッサである。RAM503は書き込み可能メモリであり、ワークエリアとして機能する。ROM502は不揮発性の記憶素子であり、ファームウエアなどを記憶する。HDD504は大容量記憶装置であり、オペレーティングシステム、アプリケーションプログラムなどが記憶されている。なお、セキュリティソフトウェア509などもHDD504に格納される。
【0019】
セキュリティソフトウェア509は、その詳細については後述する様に、クライアント装置500を監視し、外部装置へのアクセスログの取得やアクセスの制御機能を提供する。
【0020】
CPU501と各部は、システムバス508を介して命令やデータの送受信を実行する。インターフェース507は、他の端末装置とネットワーク530を介して通信するための通信回路である。
【0021】
[サーバ装置]
サーバ装置510は、たとえば、CPU511、ROM512、RAM513、HDD514、入力装置515、表示装置516、インターフェース517、システムバス518を備えている。サーバ装置510はクライアント装置500の動作を管理する管理装置として動作する。クライアント装置500が有する構成要素と同一名称の構成要素は、上述したクライアント装置500の構成要素と同等の機能を有する。
【0022】
なお、サーバ装置510のHDD514には、ログ情報519、設定情報520なども格納される。ログ情報519には、クライアント装置500から収集したクライアント装置500のアクセスログ情報が記録される。設定情報520には、例えば、ユーザ毎、プロセス毎のログ記録を行うか否かや、外部装置にアクセス可能なプロセスや、その接続先についての情報が格納される。接続先は、例えば、URL(Uniform Resource Locatorで特定され、接続不可を示す「ブラックリストや、接続可を示すホワイトリスト等でアクセスの可否が指定される。なお、ログ情報519、設定情報520は、クライアント装置500が備えてもよい。
【0023】
なお、以下の説明では、クライアント装置500、サーバ装置510がパーソナルコンピュータであることを前提にしているが、これに限られない。すなわち、クライアント装置500、サーバ装置510が一般的なパーソナルコンピュータと同等以上、若しくはそれに準ずる演算処理能力を有する機器であるならばその種類、機種は限定されるものではない。
【0024】
(IP通信時のイベント発生)
図2は、IP(Internet Protocol)通信時のイベント発生についての概念図である。図2は、クライアント装置500におけるプログラム間の通信を模式的に示している。図2のように、セキュリティソフトウェア509は、TCP(Transmission Control Protocol)/UDP(User Datagram Protocol)フィルタ232、被アクセスポート情報リスト233、及びIPフィルタ234を有している。
【0025】
TCP/UDPフィルタ232は、任意のプログラム(プロセス、例えば、Web閲覧ソフトウェア)231からTCPポート又はUDPポートへのアクセスを検知する。そして、検知したTCP又はUDPポートアクセスのポート情報を、アクセスの元となったプロセスと関連付けた被アクセスポート情報として、被アクセスポート情報リスト233に格納する。なお、ポート情報は、例えば、IPアドレス及びポート番号を含んでおり、被アクセスポート情報は、ポートのポート情報と該ポートにアクセスしたプロセスとの対応関係を含む情報である。被アクセスポート情報は、さらに、プロセスに関連するユーザの情報を含むものであっても良い。
【0026】
IPフィルタ234は、IP通信開始を検知後、被アクセスポート情報リスト233を参照し、例えば、プロセスやユーザ等を特定する。そして、アクセスログの出力や、アクセスの制御を行う。
【0027】
TCP/UDPフィルタ232は、任意のプログラム231からのTCP又はUDPポートの破棄を検知すると、破棄されたポートについての被アクセスポート情報を被アクセスポート情報リスト233から破棄する。
【0028】
このように本実施形態では、TCP/UDPポートへのアクセスと、その後の当該ポートの破棄イベントの間において、通信に使用されたポート情報(例えば、URL、IPアドレス、ポート番号)と、この通信の元となったプロセス(起動プログラム)とが対応付けられる。
【0029】
このように、本実施形態では、プロセスを識別する識別情報を取得するとともに、このプロセスが外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する。そして、取得したポート情報とプロセスの識別情報とを対応付けて記憶する。このため、本実施形態によれば、外部装置へのアクセスをプロセス毎に把握・管理することが可能となる。よって、例えば、単に通信ログを記録した場合に比べて、よりきめ細かな通信解析を行ったり、アクセス制御を行ったりすることが可能となる。
【0030】
(プログラム監視処理)
図3は、クライアント装置500において実行される、プログラム監視処理を示すフローチャートである。
【0031】
S201で、クライアント装置500は、セキュリティソフトウェア509を起動する。セキュリティソフトウェア509は、サービスプログラムとして自動的に起動することも、ユーザが任意に起動したりすることもできる。
【0032】
S202で、クライアント装置500にユーザがログインする。ログインは、ユーザが、アカウント名又はユーザ名と、それに対応するパスワードなどを入力して行われる。
【0033】
S203で、クライアント装置500は、ログインしたユーザのユーザ情報を取得する。ここでユーザ情報とはアカウント名、ドメイン名、ユーザ名などユーザを一意に識別することが可能な値である。
【0034】
S204で、S203で取得したユーザ情報を利用して、クライアント装置500はサーバ装置500と通信を行い、サーバ装置500の設定情報520からログインしたユーザのユーザ設定を取得する。サーバ装置500は、該当するユーザが登録されていない場合はデフォルト情報などを返答する。
【0035】
S205で、ログインしたユーザの指示などに応じて、クライアント装置500は、Web閲覧ソフトウェアなどの任意のプログラムを起動する。その際にセキュリティソフトウェア509はプログラムの起動を検知する。なお、プログラムの起動の検知は、ユーザの指示による起動に限定されず、例えば、自動アップデートによる起動、ウィルス感染による起動でも可能である。
【0036】
S206で、クライアント装置500は、S205で起動したプログラムの情報を取得する。取得する情報にはプログラム名、起動したユーザのアカウント名、ドメイン名、プロセスID、セッションIDなどが含まれる。クライアント装置500は、その情報とS203で取得したユーザ情報から、プロセスとユーザ情報の対応を記したユーザプロセスリストに追加する。このようにして、プロセスを識別する識別情報を取得する第1取得処理を行う。なお、取得するのは起動したプログラムの情報に限らず、ポートにアクセスしたプログラムの情報を取得することも可能である。
【0037】
S207で、クライアント装置500は、起動したプログラムの実行によりIP通信をするために使用するポートにアクセスする。このアクセスとは、ポート作成、書き込み、読み込み、破棄などの処理を指す。その際にセキュリティソフトウェア509は、アクセスされた通信ポートのポート情報を取得する。ポート情報は、通信ポートの種類(TCP,UDP等)、通信ポートのポート番号等のポート情報を含む情報である。例えば、TCPポートドライバやUDPポートドライバをフィルタリングしたり、API(Application Programming Interface)フックによりポートにアクセスしたAPIをフックしたり、OS標準のポート監視インターフェース(Windows Filterling Platform等)を利用する等により、ポート情報、を収集する。
【0038】
通信ポートの種類を取得することより、同時に複数のプロトコルを監視することができ、より詳細な分析が可能となる。たとえばTCPポートの監視をしているとHTTPプロトコルの監視ができ、UDPポートの監視によりDNSプロトコルの監視を行うことができる。これによって、DNSにより得られたマシン名などとHTTPリクエストを組み合わせて、IPアドレスではなくマシン名を利用したWebアクセス等の詳細分析が可能となる。またプロトコル毎にログ取得制御やアクセス制限をかけることが可能になる。
【0039】
このようにして、ステップS207では、プロセスが外部装置と通信するために使用する通信ポートにアクセスしたことに応じて、当該通信ポートの特性を示すポート情報を取得する第2取得処理を実行する。最後に、S208で、S207で取得したポート情報と、S206で作成したユーザプロセスリストから、被アクセスポート情報を生成して、被アクセスポート情報リスト233を更新する。以下に、被アクセスポート情報を取得する処理の詳細として、TCP/UDPポートドライバのフィルタリングと、APIフック、OS標準のポート監視インターフェースそれぞれの具体的手順を説明する。
【0040】
[TCP/UDPポートドライバのフィルタリング]
図4は、TCPポートドライバとUDPポートドライバをフィルタリングし、プロセスIDと通信ポート情報との対応リストを作成する処理の手順を示すフローチャートである。この処理では、プロセスが通信ポートを使用するために用いるドライバ・ソフトウェアの入出力をフィルタリングすることにより、被アクセスポート情報を取得する。以下の各工程はクライアント装置500が実行する。なお、後述する処理は、TCPポートドライバとUDPポートドライバを用いてフィルタリングを行う処理について説明するが、TCPポートドライバのみ、或いは、UDPポートドライバのみでフィルタリングを行ってもよい。
【0041】
S301でセキュリティソフトウェア509が作成したフィルタドライバをTCPポートドライバとUDPポートドライバにアタッチする。アタッチするタイミングは監視を開始した際などである。フィルタドライバをTCPポートドライバやUDPポートドライバにアタッチするとは、TCPポートやUDPポートを介したデータ伝送のフィルタリングを開始する処理をいう。
【0042】
S302で、任意のプログラムが、外部の装置と通信するためのTCPポートもしくはUDPポートにアクセスする。
【0043】
そして、S303で、セキュリティソフトウェア509において、アタッチしたフィルタドライバにファイルオブジェクトの作成、書き込み、読み込みなどのイベントが通知される。ここで、ファイルオブジェクトとは、ファイル、デバイス、ディレクトリの情報を格納しているオブジェクトをいう。例えば、ファイルパス、ファイル名、ファイルへのアクセス権、デバイス情報などが格納されている。
【0044】
S304で、上記のイベントの情報から、ファイルオブジェクトを作成したプロセスを識別する情報を取得し、S305で、ファイルオブジェクトからポート情報を取得する。この場合のポート情報とはポート種類、IPアドレスやポート番号を指す。
【0045】
S306で、S304、S305で取得したプロセスID、通信ポート情報及びファイルオブジェクトなどから、被アクセスポート情報を作成する。S307で被アクセスポート情報リスト233内に同一の被アクセスポート情報(プロセスID、ポート種類、IPアドレス、ポート番号などが同一)が存在した場合、リストには追加しない、もしくはリストの情報を上書きし、S309に移行する。なお、リストの情報の上書きとは、既に存在する情報を該情報に更新、既に存在する情報を削除後に該情報をリストに追加、リストに該情報を追加後に既に存在する情報を削除することを含む。リスト内に同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S307において、同一の被アクセスポート情報が存在しない場合はS308でリストに格納してS309に移行する。
【0046】
S309で、起動プログラムが、TCP/UDPポートを破棄すると、S310でセキュリティソフトウェア509がアタッチしたフィルタドライバに、ファイルオブジェクト破棄イベントが通知される。
【0047】
S311で、ファイルオブジェクト破棄イベントにより削除されるファイルオブジェクトから、削除される被アクセスポート情報を特定して、S312で被アクセスポート情報リスト233から、削除対象として特定した被アクセスポート情報を削除する。複数該当する情報が登録されていた場合は、該当する情報をすべて削除する。またはファイルオブジェクト破棄イベントでなく、一定間隔で被アクセスポート情報を削除してもよい。
【0048】
これにより、リアルタイムにTCPポートと対応プロセスIDのリストを作成することができる。なお、ここではTCPポートドライバについて記述したが、UDPポートドライバやその他のドライバにおいても、対応リストを作成することができる。
【0049】
上述した形態では、ファイルオブジェクト破棄イベントを監視し、被アクセスポート情報を被アクセスポート情報リスト233から削除していた。しかしながら、図5を用いて説明する様に、ファイルオブジェクト破棄イベントを監視しない形態とすることもできる。
【0050】
なお、図5のS401〜S406は、図4のS301〜S306の処理と同一であるため、その説明は省略する。
【0051】
S407でプロセスID以外が同一の被アクセスポート情報が存在した場合、S408に移行し、リストにその情報を上書きする。プロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにして、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。それ以外の場合、S409において、被アクセスポート情報リスト233に被アクセスポート情報を追加して格納する。以上の処理により、ファイルオブジェクト破棄イベントを監視しない構成とすることができる。
【0052】
[APIフック]
図6は、APIフックを使用し、プロセスIDと通信ポート情報の対応リストを作成する処理の手順を示すフローチャートである。この処理では、プロセスと、通信ポートにアクセス(作成及び破棄)するために使用するアプリケーション・プログラミング・インタフェースと、の間の通信を監視することで、被アクセスポート情報を取得する。
【0053】
S501で、セキュリティソフトウェア509が、ポート作成API、ポート破棄API等をフックする。フックするタイミングはポート監視を開始した際などである。フックするAPIは、具体的には、例えば、WINSockAPIのbindやconnect、closesocketなどである。
【0054】
S502で、任意のプログラムがポートアクセスAPI(作成、書き込み、読み込み等)を使用し、S503でセキュリティソフトウェア509において、ポートアクセスAPIをフックするイベントを発生させる。ここで、APIをフックするとは、当該APIの呼びだしを別のオブジェクトが横取りすることをいう。APIのフックは、具体的にはAPIを呼び出す際に用いられるアドレスを、特定のアドレスに書き換えることにより実行される。
【0055】
S504で上記のイベントの情報から、APIが使用するプロセスを取得し、S505でAPIの戻り値や入力からポート情報を取得する。この場合のポート情報とは、ポート種類、IPアドレスやポート番号を指す。
【0056】
S506でS504、S505で取得したプロセスIDと、通信ポート情報及びハンドル情報などから被アクセスポート情報を作成する。S507で被アクセスポート情報リスト233内に同一のMポート情報が存在した場合、リストに追加しない、もしくはリストの情報を上書きし、S509に移行する。リスト内に同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S507において、同一の被アクセスポート情報が存在しない場合はS508でリストに格納し、S509に移行する。
【0057】
S509で、任意のプログラムは、ポート破棄APIを使用し、S510でセキュリティソフトウェア509に、ポート破棄APIフックイベントを発生させる。
【0058】
S511で、削除されるハンドル情報などから、削除される被アクセスポート情報を特定し、S512で被アクセスポート情報リストから削除対象の被アクセスポート情報を削除する。複数該当する情報が登録されていた場合は、該当する情報をすべて削除する。またはポート破棄APIフックイベントでなく、一定間隔で被アクセスポート情報リストを削除してもよい。
【0059】
これによりリアルタイムに通信ポートと対応プロセスIDのリストを作成することができる。ここでは、WINSockAPIのフックについて記述したが、その他のAPIにおいても被アクセスポート情報リスト233を作成することができる。
【0060】
上述した形態では、ポート破棄APIフックイベントを監視し、被アクセスポート情報を被アクセスポート情報リスト233から削除していた。しかしながら、図7を用いて説明する様に、ポート破棄APIフックイベントを監視しない形態とすることもできる。
【0061】
なお、図7のS601〜S606は、図6のS501〜S506の処理と同一であるため、その説明は省略する。
【0062】
S607でプロセスID以外が同一の被アクセスポート情報が存在した場合、S608でその情報を上書きする。プロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにして、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。それ以外の場合、S609において、被アクセスポート情報リスト233に被アクセスポート情報を格納する。
【0063】
以上の処理により、ポート破棄APIフックイベントを監視しない構成とすることができる。
【0064】
[OS標準のポート監視インターフェース]
図8は、OS標準のポート監視インターフェースを使用し、被アクセスポート情報リスト233を作成する処理の手順を示すフローチャートである。なおOS標準のポート監視インターフェースとは、WindowsFiltelingPlatform等のポートアクセス(作成、接続、破棄、書き込み、読み込み等)のイベントを通知するインターフェースのことを指す。
【0065】
S1001で、セキュリティソフトウェア509が、OS標準のポート監視インターフェースにポートアクセスのイベントが発生した際に呼ばれるコールバックを登録する。
【0066】
S1002で、任意のプログラムがポートにアクセスし、S1003でセキュリティソフトウェア509において、ポートアクセスのコールバックが発生する。
【0067】
S1004で上記コールバックの情報から、プロセスIDを、S1005でポート情報を取得する。この場合のポート情報とは、ポート種類、IPアドレスやポート番号を指す。
【0068】
S1006でS1004、S1005で取得したプロセスIDとポート情報から被アクセスポート情報を作成する。S1007で被アクセスポート情報233リスト内に同一の被アクセスポート情報が存在した場合、被アクセスポート情報233リストに追加しない、もしくはリストの情報を上書きし、S1009に移行する。被アクセスポート情報233リスト内に同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S1007で、同じ被アクセスポート情報が存在しない場合、S1008で被アクセスポート情報233リストに格納し、S1009に移行する。
【0069】
S1009で、任意のプログラムは、ポート破棄をし、S1010でセキュリティソフトウェア509に、ポート破棄イベントのコールバックが発生する。
【0070】
S1011で、コールバックの情報から、削除される被アクセスポート情報を特定し、S1012で被アクセスポート情報リスト233から削除対象の被アクセスポート情報を削除する。複数該当する情報が登録されていた場合は、該当する情報をすべて削除する。またはポート破棄イベントのコールバックでなく、一定間隔で被アクセスポート情報を削除してもよい。
【0071】
これによりリアルタイムに通信ポートと対応プロセスIDのリストが作成することができる。
【0072】
上述した形態では、ポート破棄イベントのコールバックを監視し、被アクセスポート情報を被アクセスポート情報リスト233から削除していた。しかしながら、図9を用いて説明する様に、ポート破棄イベントのコールバックを監視しない形態とすることもできる。
【0073】
なお、図9のS1101〜S1106は、図8のS1001〜S1006の処理と同一であるため、その説明は省略する。
【0074】
S1107でプロセスID以外が同一の被アクセスポート情報が存在した場合、S1108でその情報を上書きする。プロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。それ以外の場合、S1109において、被アクセスポート情報リスト233に被アクセスポート情報を格納する。以上の処理により、ポート破棄イベントのコールバックを監視しない構成とすることができる。
【0075】
また被アクセスポート情報を取得する処理としては、上記手法でアクセス時にリアルタイムにリスト作成してもいいし、一定時間ごとにポート情報一覧取得APIやファイルオブジェクト情報一覧APIを利用して取得してもよい。一定時間ごとにポート情報取得APIやファイルオブジェクト情報一覧APIを利用して取得することにより、クライアント装置500やネットワークへの負荷を軽減することが可能となる。次にポート情報一覧取得APIを利用したリスト作成方法と、TCP/UDPポートドライバのファイルオブジェクト情報を利用したリスト作成方法についてそれぞれの具体的手順を説明する。
【0076】
[ポート情報一覧取得API]
図10は、一定間隔ごとにポート情報一覧取得APIを使用し、被アクセスポート情報リスト233を作成する処理の手順を示すフローチャートである。
【0077】
S1201でセキュリティソフトは、ポート情報一覧取得APIを利用し、被アクセスポート情報一覧を取得する。S1202でプロセスID以外が同一の被アクセスポート情報が存在した場合、S1203でリストの情報を上書きする。リスト内にプロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加しリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先し、使用するように実装してもよい。S1202で被アクセスポート情報リスト233内にプロセスID以外が同一の被アクセスポート情報存在しない場合、S1204でリストに被アクセスポート情報を格納する。
【0078】
S1205で、取得したすべての被アクセスポート情報に対してS1202〜S1204の処理を行っていない場合はS1202に戻り繰り返す。繰り返し終了後、S1206において、APIで取得した情報と等しくない情報が被アクセスポート情報リスト233に存在するか確認する。存在しない場合は終了し、存在する場合はS1207においてAPIで取得した情報と等しくない情報を被アクセスポート情報リスト233から削除する。これにより、通信ポートと対応プロセスIDのリストが作成することができる。
【0079】
[ファイルオブジェクト情報一覧取得API]
図11は一定間隔ごとにファイルオブジェクト情報一覧取得APIを使用し、ファイルオブジェクトの一覧を取得し、被アクセスポート情報リスト233を作成する処理の手順を示すフローチャートである。このAPIではすべてのドライバのファイルオブジェクトが取得される。
【0080】
S1301でファイルオブジェクト一覧取得APIを利用し、ファイルオブジェクト一覧を取得する。S1302でファイルオブジェクトがTCP又はUDPドライバに属しているか判断し、いずれにも属していない場合にはS1307に移行する。いずれかのドライバに属している場合はS1303でファイルオブジェクトから被アクセスポート情報を取得する。
【0081】
S1304において、プロセスID以外が同一の被アクセスポート情報が存在した場合、S1305でリストの情報を上書きする。リスト内にプロセスID以外が同一の被アクセスポート情報が存在した場合、時間もしくはシーケンス番号などを付加してリストに追加することで、新しく追加された情報を識別できるようにし、リスト内で検索を行った際は、新しいものを優先して使用するように実装してもよい。S1304で存在しない場合、S1306において、被アクセスポート情報を被アクセスポート情報リスト233に格納する。
【0082】
S1307で取得したすべてのファイルオブジェクトに対してS1302〜S1306の処理を行っていない場合には、S1302に戻って処理を繰り返す。繰り返し終了後、S1308において、S1301〜S1307で取得した被アクセスポート情報と等しくない情報が被アクセスポート情報リスト233に存在するか確認する。存在しない場合は終了し、存在する場合はS1309で等しくない被アクセスポート情報を被アクセスポート情報リスト233から削除する。これにより、通信ポートと対応プロセスIDのリストが作成することができる。
【0083】
(IP通信監視処理)
図12は、クライアント装置500において実行される、IP通信の監視処理を示すフローチャートである。
【0084】
S701で、任意の起動プログラムがIP通信(Webアクセス)を行うと、S702でセキュリティソフトウェア509はイベントを検知し、情報を取得する。取得する情報は、IP通信に使用する通信ポート情報や、通信先URLなどである。具体的には、たとえば、IPパケットのフィルタリングを行い、IPパケットのヘッダ部分から通信ポート情報や、IPパケット内のデータを取得し、HTTPプロトコルの解析を行い、通信先URLを取得する。
【0085】
(Webアクセスログ取得処理)
図13は、クライアント装置500において実行される、Webアクセスログ取得の処理を示すフローチャートである。この処理では、プロセスと外部装置との間で通信される通信データのログ情報を、ポート情報及びプロセスの識別情報に関連づけて記録する。ここでは、特に、クライアント装置500のユーザを識別する情報を入力し、当該ユーザを識別する情報に関連づけてログ情報を記録する場合を説明する。
【0086】
S801で、S702で取得した情報と、S208で作成した被アクセスポート情報リスト233から、IP通信を行ったユーザやプロセスを特定する。S802で、特定したユーザのIP通信アクセスログとして、クライアント装置500に記憶する。たとえば、ログファイルとして保存しておいたり、メモリ空間に保持しておいたりしてもよい。
【0087】
S803で、クライアント装置500のユーザがログオフする。S804で、S802において記録したIP通信アクセスログを、サーバ装置500へ送信する。
【0088】
なお、本実施形態では、S802でIP通信アクセスログをクライアント装置500に記録しているが、クライアント装置500への記録を省略して、サーバ装置500に送信してもよい。
【0089】
サーバ装置500では、受け取ったIP通信アクセスログをログ情報519に格納し、アクセスログを閲覧可能な状態にする。
【0090】
以上の構成により、ユーザ毎に、ポート情報とプロセスを関連付けることができる。したがって本実施形態によれば、例えば、Web閲覧ソフトウェアのログ取得は行うが、自動アップデートのログは取得しない等、プロセス毎のログ記録の可否を選択することができ、ユーザの環境にあわせた不要なログの記録を削減することができる。また、上記の処理では、クライアント装置500において記録したログ情報を予め定められた管理装置(サーバ装置500)へ送信するため、サーバ装置500において各クライアント装置500の動作を一括して管理することができる。
【0091】
(Webアクセス制御処理)
図14は、クライアント装置500において実行される、Webアクセス制御の処理を示すフローチャートである。この処理では、情報処理装置のユーザを識別する情報を入力し、当該ユーザを識別する情報と、プロセスを識別する識別情報との少なくともいずれかに基づいて、該プロセスが予め定められた外部装置へアクセスすることを禁止する。
【0092】
まず、S901で、S702で取得した情報と、S208で作成した被アクセスポート情報リスト233から、アクセスを行ったユーザやプロセスを特定する。
【0093】
S902で、特定したユーザからS204で取得したユーザ設定(Webアクセス権限)を取得する。
【0094】
S903で、発生した外部装置へのアクセスに対して、アクセス許可が存在するのか確認する。アクセス権限が存在しない場合(S903でYES)はS904に進み、Webアクセスを禁止する。例えば、アクセスを禁止する場合はパケットを破棄したり、もしくは意味のないデータに書き換えたりする。
【0095】
また、アクセス権限が存在する場合(S903でNO)は、S905に進み、Webアクセスを許可する。
【0096】
以上、本実施形態によれば、ユーザ毎に、ポート情報とプロセスを関連付けることができる。したがって、例えば、自動アップデートのWebアクセスのみ許可するが、その他のWebアクセスは禁止する等、ユーザの環境にあわせたWebアクセス制御を行うことができる。
【0097】
<第2実施形態>
第2実施形態では、上記第一実施形態のセキュリティソフトウェア509をターミナルサービスに利用した構成、動作について説明する。本実施形態では、クライアント装置で動作するプロセスは、外部装置において実行されるアプリケーションを遠隔操作する処理を行う。
【0098】
なお、第2実施形態の動作の大部分は第1実施形態の動作と共通するため、第1実施形態と異なる構成、動作についてのみ説明し、共通の動作については説明を省略する。
【0099】
ターミナルサービスとは、クライアントコンピュータがサーバコンピュータにリモート接続し、サーバコンピュータ上に生成された仮想デスクトップ環境を利用してサーバコンピュータ上でアプリケーションプログラムを実行できるようにするサービスである。
【0100】
図15は、本実施形態に係る複数のユーザが同時に使用可能な情報処理システム(ターミナルサービス)の全体構成図である。本実施形態に係るシステムは、情報処理装置の一例である複数の端末装置(設定サーバ装置510、サーバ装置20、クライアント装置210、220)を備えており、これらはLANなどのネットワーク230を介して接続されている。
【0101】
サーバ装置20上では、ターミナルサービス提供部201を含むオペレーティングシステム(OS202)が動作している。また、サーバ装置20には、セキュリティソフトウェア509がインストールされている。セキュリティソフトウェア509は、インターネットアクセス制御機能を提供するプログラムであり、サーバ装置20上で動作している。
【0102】
ターミナルサービス提供部201は、たとえば、ターミナルサーバと呼ばれるプログラムによって実現される。サーバ装置20は、認証情報記憶部203を有している。認証情報記憶部203には、たとえば、クライアント装置210、220の各利用者のログインユーザ情報等(ログインユーザ名、セッションID等)が格納されている。
【0103】
クライアント装置210、220のそれぞれは、ターミナルサービス提供部201から提供されるターミナルサービスを利用するためのターミナルサービス利用部211、221を備える。クライアント装置210、220のそれぞれは、不図示のキーボード等の入力部や、ディスプレイ装置などの表示部が接続されている。ターミナルサービス利用部211、221は、たとえば、リモート・デスクトップ接続(RDC)と呼ばれるプログラムや、ターミナルサービス・クライアント(TSC)と呼ばれるプログラムによって実現される。ターミナルサービスは、Windows(登録商標)、MacOSおよびLinux(登録商標)などの一般的なオペレーティングシステム(OS)であれば一般に備えているサービスであるが、その名称はOSによって異なっている。
【0104】
リモートサービスは、第1のパーソナルコンピュータ(PC)に対して第2のPCからリモートログインして、第1のPCを遠隔操作するサービスである。例えば、第1のPCから情報を取得したり、第1のPCに情報を書き込んだり、第1のPCにインストールされているソフトウェアを第1のPC上で実行したりする。なお、第1のPCの入力部を通じて直接ログインしているユーザをローカルユーザと呼び、第2のPCから第1のPCへリモートログインしているユーザをリモートユーザと呼んで区別することにする。
【0105】
サーバとして機能するサーバ装置20は、クライアントとして機能するクライアント装置210、220に仮想デスクトップ画面を表示するための情報を送信する。クライアント装置210、220は、サーバ装置20から受信した情報に従って仮想デスクトップ画面をディスプレイ装置に表示したり、利用者が仮想デスクトップ画面上で行う操作に従って、コマンドやデータをサーバ装置20に送信したりする。サーバ装置20では、クライアント装置210、220から送信されてきたコマンドやデータに応じてアプリケーションプログラムを実行し、実行結果をクライアント装置210、220へ送信する。クライアント装置210、220では、サーバ装置20から送信されてきた実行結果を仮想デスクトップ画面上に表示する。サーバ装置20は、リモートユーザによって使用される一方で、同時並行的にローカルユーザによっても使用可能である。
【0106】
このように、リモートユーザとローカルユーザとを含む複数のユーザが同時に使用可能な情報処理システム(ターミナルサービス)においては、アプリケーションプログラムが、サーバ装置20で実行される。複数のクライアント装置210、220からサーバ装置20に同時に接続してアプリケーションプログラムを実行することも可能である。この場合、リモートユーザ毎にセッションが分けられ、各利用者は別々の仮想デスクトップ環境を利用してアプリケーションプログラムを実行する。ターミナルサービス提供部201は、各セッションを区別するためにセッションIDを発行する。なお、同時に使用可能とは、同じ時間に複数のユーザがログインしている状態を含む。このようなターミナルサービスは一般的な技術であるため、これ以上の説明は省略する。
【0107】
図15において設定サーバ装置510上のログ収集部521では、セキュリティソフトウェア509で使用するユーザ毎の外部装置へのアクセス情報を記録する。設定部522は、ユーザ毎の接続可能なURLのブラックリストやホワイトリスト等、ユーザ毎の設定情報を記録している。セキュリティソフトウェア509は、ユーザが端末20にログイン時、リモートログイン時などのタイミングで端末510と通信し、ユーザ毎の設定情報を取得する。
【0108】
(プログラム監視)
図3のS203で、ログインしたユーザのユーザ情報を取得する。ここでユーザ情報に、セッションIDを含むようにする。
【0109】
従って、S208では、被アクセスポート情報リスト233には、複数のユーザが同時に使用可能な情報処理システム(ターミナルサービス)におけるユーザ毎のリストが作成される。
【0110】
以上のように、本実施形態によれば、複数のユーザが同時に使用可能な情報処理システムにおいても、Webアクセスについてログインしたユーザ毎のログ取得、ユーザ毎に適したアクセス権限を与えることが可能となる。
【0111】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
外部装置と通信するプロセスが動作する情報処理装置であって、
前記プロセスを識別する識別情報を取得する第1取得手段と、
前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、
前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段と
を備えており、
前記第2取得手段は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入力または出力をフィルタリングすることにより、前記プロセスと前記通信ポートにアクセスするために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、前記ポート情報を取得することを特徴とする情報処理装置。
【請求項2】
前記プロセスと前記外部装置との間で通信される通信データのログ情報を記録する記録手段を更に備え、
前記記録手段は、前記記憶手段に記憶された前記ポート情報及び前記識別情報に関連づけて、前記ログ情報を記録することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記情報処理装置のユーザを識別する情報を入力する入力手段を更に備え、
前記記録手段は、前記ユーザを識別する情報に関連づけて前記ログ情報を記録することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記記録手段が記録したログ情報を予め定められた管理装置へ送信する送信手段を更に備えることを特徴とする請求項2又は3に記載の情報処理装置。
【請求項5】
前記情報処理装置のユーザを識別する情報を入力する入力手段と、
前記ユーザを識別する情報と、前記プロセスを識別する識別情報との少なくともいずれかに基づいて、該プロセスが予め定められた外部装置へアクセスすることを禁止する禁止手段とを更に備えることを特徴とする請求項1から4のいずれか1項に記載の情報処理装置。
【請求項6】
前記情報処理装置に対してネットワークを介して他の情報処理装置から間接的にログインすることを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。
【請求項7】
前記情報処理装置は複数のユーザが同時に使用可能なことを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
【請求項8】
前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする請求項1から7のいずれか1項に記載の情報処理装置。
【請求項9】
外部装置と通信するプロセスが動作する情報処理装置であって、
前記プロセスを識別する識別情報を取得する第1取得手段と、
前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、
前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段と
を備えており、
前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする情報処理装置。
【請求項10】
外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、
第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、
第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、
制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、
を有し、
前記ポート情報は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入出力をフィルタリングすることにより、或いは、前記プロセスと前記通信ポートを作成及び破棄するために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、取得されることを特徴とする情報処理装置の制御方法。
【請求項11】
外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、
第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、
第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、
制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、
を有し、
前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする情報処理装置の制御方法。
【請求項12】
コンピュータ可読媒体に記憶されたコンピュータプログラムであって、コンピュータを請求項1から9のいずれか1項に記載の情報処理装置として機能させるためのコンピュータプログラム。
【請求項1】
外部装置と通信するプロセスが動作する情報処理装置であって、
前記プロセスを識別する識別情報を取得する第1取得手段と、
前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、
前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段と
を備えており、
前記第2取得手段は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入力または出力をフィルタリングすることにより、前記プロセスと前記通信ポートにアクセスするために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、前記ポート情報を取得することを特徴とする情報処理装置。
【請求項2】
前記プロセスと前記外部装置との間で通信される通信データのログ情報を記録する記録手段を更に備え、
前記記録手段は、前記記憶手段に記憶された前記ポート情報及び前記識別情報に関連づけて、前記ログ情報を記録することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記情報処理装置のユーザを識別する情報を入力する入力手段を更に備え、
前記記録手段は、前記ユーザを識別する情報に関連づけて前記ログ情報を記録することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記記録手段が記録したログ情報を予め定められた管理装置へ送信する送信手段を更に備えることを特徴とする請求項2又は3に記載の情報処理装置。
【請求項5】
前記情報処理装置のユーザを識別する情報を入力する入力手段と、
前記ユーザを識別する情報と、前記プロセスを識別する識別情報との少なくともいずれかに基づいて、該プロセスが予め定められた外部装置へアクセスすることを禁止する禁止手段とを更に備えることを特徴とする請求項1から4のいずれか1項に記載の情報処理装置。
【請求項6】
前記情報処理装置に対してネットワークを介して他の情報処理装置から間接的にログインすることを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。
【請求項7】
前記情報処理装置は複数のユーザが同時に使用可能なことを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
【請求項8】
前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする請求項1から7のいずれか1項に記載の情報処理装置。
【請求項9】
外部装置と通信するプロセスが動作する情報処理装置であって、
前記プロセスを識別する識別情報を取得する第1取得手段と、
前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得手段と、
前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御手段と
を備えており、
前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする情報処理装置。
【請求項10】
外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、
第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、
第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、
制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、
を有し、
前記ポート情報は、前記プロセスが前記通信ポートを使用するために用いるドライバ・ソフトウェアの入出力をフィルタリングすることにより、或いは、前記プロセスと前記通信ポートを作成及び破棄するために使用するアプリケーション・プログラミング・インタフェースとの間の通信を監視することにより、或いは、ポート監視インターフェースにより、取得されることを特徴とする情報処理装置の制御方法。
【請求項11】
外部装置と通信するプロセスが動作する情報処理装置の制御方法であって、
第1取得手段が、前記プロセスを識別する識別情報を取得する第1取得工程と、
第2取得手段が、前記プロセスが前記外部装置と通信するために使用する通信ポートの特性を示すポート情報を取得する第2取得工程と、
制御手段が、前記ポート情報と、前記識別情報とを対応付けて記憶手段に記憶させる制御工程と、
を有し、
前記通信ポートの特性を示すポート情報は、ポートの種類を含むことを特徴とする情報処理装置の制御方法。
【請求項12】
コンピュータ可読媒体に記憶されたコンピュータプログラムであって、コンピュータを請求項1から9のいずれか1項に記載の情報処理装置として機能させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−185799(P2012−185799A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−266247(P2011−266247)
【出願日】平成23年12月5日(2011.12.5)
【出願人】(000104652)キヤノン電子株式会社 (876)
【Fターム(参考)】
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願日】平成23年12月5日(2011.12.5)
【出願人】(000104652)キヤノン電子株式会社 (876)
【Fターム(参考)】
[ Back to top ]