以下、図面を参照しつつ、本発明の様々な実施形態について説明する。ただし、本発明の技術的範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
本実施形態に係る検査システムにおいて、検査装置は、検査対象装置の脆弱性を検査するために、検査対象装置に対して非常に多数の検査項目に係る検査を行う。各検査項目は、検査装置が検査用リクエストを検査対象装置に送信して検査対象装置を疑似的に攻撃することにより行われる。検査用リクエストは、1又は複数のパケットで構成される。各検査用リクエストは、過去に問題が発見された、検査対象装置で動作するハードウェア製品又はソフトウェア製品(以下、対象製品と称する)について、その問題が解決されているか否かを検査するためのものである。検査装置は、検査用リクエストを用いて、対象製品に疑似的にその問題を発生させることにより、又は対象製品から設定情報等を取得することにより、その問題を解決するための修正プログラム等が適用されているか、適切な設定になっているか等を確認する。検査対象装置において対象製品に問題が残っている場合、受信した検査用リクエストにより対象製品に異常が発生し、検査対象装置はアラート情報を出力する。また、検査対象装置は、対象製品に問題が残っていなくても、不正なリクエストを検知してアラート情報を出力する場合もある。一般に、このアラート情報は、異常が発生したこと又は異常を検知したことを通知するための情報であり、アラート情報に含まれる情報は各対象製品によって異なるため、どの検査項目の検査用リクエストが原因となってアラート情報が出力されたのかを特定することは困難である。また、検査装置は1秒間に数千個の検査用リクエストを送信することもあり、さらに、検査装置に設定されている時刻と検査対象装置に設定されている時刻にはずれが生じている場合があるため、検査用リクエストの送信時刻とアラート情報の生成時刻から対応する検査用リクエストを特定することも困難である。
但し、アラート情報には、対象製品の製品名、ベンダ名、種別名、又は、対象製品が用いる通信プロトコル名等が含まれている可能性が高い。そこで、本実施形態の検査装置は、検査対象装置の脆弱性を検査するための複数の検査項目を、検査用リクエスト及びその検査用リクエストにより検査を行う対象製品の製品名、ベンダ名、種別名、通信プロトコル名等と関連付けて記憶する。検査装置は、検査対象装置が出力したアラート情報に、送信した検査用リクエストと関連付けられた上記の各情報が含まれるか否かを判定し、含まれる場合、その情報に関連付けられた検査項目をアラート情報の原因となる検査項目として抽出する。これにより、検査装置は、非常に多数の検査項目の中から、検査対象装置が出力したアラート情報の原因となる検査項目を精度良く抽出又は特定することを可能とする。
図1は、検査システム1の概略構成の一例を示す図である。
検査システム1は、検査装置100と、複数の検査対象装置200a、200bと、監視サーバ装置300とを有する。なお、複数の検査対象装置200aは一つであってもよい。以下では、複数の検査対象装置200a、200bをまとめて検査対象装置200と称する。
検査システム1において、検査装置100、検査対象装置200及び監視サーバ装置300は、イントラネット等の通信ネットワーク400を介して相互に接続される。
検査対象装置200は、パーソナルコンピュータ、サーバ、ネットワーク機器等であり、検査装置100により脆弱性が検査される対象の装置である。検査対象装置200は、検査対象装置200上で動作する対象製品において異常を検知した場合、その対象製品に応じたアラート情報を出力する。
監視サーバ装置300は、各検査対象装置200が出力したアラート情報を受信して各検査対象装置200を監視する装置である。監視サーバ装置300は、検査対象装置200からアラート情報を受信し、各アラート情報の原因となった検査用リクエストの情報を検査装置100に問い合わせ、その結果を表示して監視員に通知する。
図2は、検査装置100の概略構成の一例を示す図である。
検査装置100は、例えばパーソナルコンピュータ、サーバ等であり、検査対象装置の脆弱性を検査する。検査装置100は、通信部101と、操作部102と、表示部103と、記憶部104と、中央処理部110とを備える。
通信部101は、イーサネット(登録商標)などの有線の通信インターフェース回路を有する。通信部101は、通信ネットワーク400を介して検査対象装置200、監視サーバ装置300等と通信を行う。そして、通信部101は、検査対象装置200、監視サーバ装置300等から受信したデータを中央処理部110に供給する。また、通信部101は、中央処理部110から供給されたデータを通信ネットワーク400を介して検査対象装置200、監視サーバ装置300等に送信する。通信部101は、中央処理部110により抽出された検査項目を出力する出力部の一例である。
操作部102は、検査装置100の操作が可能であればどのようなデバイスでもよく、例えば、キーボード、マウス等である。ユーザは、このデバイスを用いて、文字、数字等を入力することができる。操作部102は、ユーザの指示を受け付け、受け付けた指示に対応する信号を発生し、中央処理部110に出力する。
表示部103は、動画像、静止画像等の出力が可能であればどのようなデバイスでもよく、例えば、液晶ディスプレイ、有機EL(Electro−Luminescence)ディスプレイ等である。表示部103は、中央処理部110から供給されるデータに応じた動画像、静止画像等を表示する。表示部103は、中央処理部110により抽出された検査項目を出力する出力部の一例である。
記憶部104は、例えば、半導体メモリ、磁気ディスク装置、及び光ディスク装置のうちの少なくとも一つを有する。記憶部104は、中央処理部110による処理に用いられるドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム、データ等を記憶する。例えば、記憶部104は、ドライバプログラムとして、通信部101を制御する通信デバイスドライバプログラム等を記憶する。また、記憶部104は、オペレーティングシステムプログラムとして、TCP/IP(Transmission Control Protocol / Internet Protocol)等の通信方式による接続制御プログラム等を記憶する。また、記憶部104は、アプリケーションプログラムとして、各種データの送受信を行うデータ処理プログラム等を記憶する。コンピュータプログラムは、例えばCD−ROM、DVD−ROM等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて記憶部104にインストールされてもよい。
また、記憶部104は、データとして、検査対象装置の脆弱性を検査するための複数の検査項目を管理する検査項目管理テーブル、検査対象装置を管理する検査対象装置管理テーブル等を記憶する。
図3(a)は、検査項目管理テーブルのデータ構造の一例を示す図である。
図3(a)に示すように、検査項目管理テーブルには、各検査項目毎に、その検査項目の識別情報である項目ID、その検査項目自体である検査内容、その検査項目の検査を実行するためのプログラムに関するプログラム情報、その検査項目により検査を行う対象製品に関する製品情報等が相互に関連付けられて登録される。プログラム情報は、そのプログラムが格納されているフォルダ名及びそのプログラムのファイル名等を示す情報である。各プログラムには、対象製品の検査を行うための検査用リクエスト、その検査用リクエストの送信先のポート番号、その検査用リクエストをそのポート番号へ送信するための命令等が含まれる。なお、この命令には、対象製品のバージョン、対象製品にログインするためのログイン名及びパスワードが初期設定から変更されているか否か又は単純なものであるか否か等を確認するための命令等も含まれる。検査用リクエストは、検査を行う対象製品にサービス運用妨害(DoS)攻撃等を疑似的に行うために送信されるリクエストである。製品情報には、その検査用リクエストにより検査を行う対象製品の製品名、ベンダ名、種別名、対象製品が用いる通信プロトコル名等が含まれる。種別名は、その製品の種別を示す名称であり、例えば、Web Server、Database等である。通信プロトコル名は、その対象製品が外部と通信する際に用いられる通信プロトコルを示す名称であり、例えば、HTTP(Hypertext Transfer Protocol)、TNS(Transparent Network Substrate Protocol)、MySQL等である。
なお、図3(a)に示すように、一つの対象製品(CCC_HTTP_Server)に対して複数の検査項目(ID=00004、00005)を対応させてもよい。また、一つの検査項目(ID=00006)に対して複数の対象製品(CCC_HTTP_Server、DDD_HTTP_Server)を対応させてもよい。
図3(b)は、検査対象装置管理テーブルのデータ構造の一例を示す図である。
図3(b)に示すように、検査対象装置管理テーブルには、各検査対象装置毎に、その検査対象装置の識別情報である装置ID、その検査対象装置のIP(Internet Protocol)アドレス、その検査対象装置に対して行う検査項目の項目ID等が相互に関連付けられて登録される。装置IDは、各検査対象装置を示す検査対象装置情報の一例である。初期設定時、各検査対象装置に対して全ての検査項目が設定される。
さらに、記憶部104は、中央処理部110が行った検査の処理履歴を記憶する。なお、記憶部104は、処理履歴とともに、tcpdumpコマンド等により取得したネットワーク上に流れるリクエストの生データを記憶してもよい。また、記憶部104は、異常が発生した検査対象装置のIPアドレス、その検査対象装置が出力したアラート情報、そのアラート情報の原因となった検査項目の項目ID等を関連付けて記憶する異常管理テーブルを記憶する。また、記憶部104は、所定の処理に係る一時的なデータを一時的に記憶してもよい。
図2に戻って、中央処理部110は、一又は複数個のプロセッサ及びその周辺回路を有する。中央処理部110は、検査装置100の全体的な動作を統括的に制御するものであり、例えば、CPU(Central Processing Unit)である。中央処理部110は、検査装置100の各種処理が記憶部104に記憶されているプログラム、操作部102の操作等に応じて適切な手順で実行されるように、通信部101、表示部103等の動作を制御する。中央処理部110は、記憶部104に記憶されているプログラム(ドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、中央処理部110は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
中央処理部110は、リクエスト送信部111と、アラート情報受信部112と、抽出部113とを有する。中央処理部110が有するこれらの各部は、中央処理部110が有するプロセッサ上で実行されるプログラムによって実装される機能モジュールである。あるいは、中央処理部110が有するこれらの各部は、独立した集積回路、マイクロプロセッサ、又はファームウェアとして検査装置100に実装されてもよい。
図4は、検査システム1における検査装置100による検査対象装置200の検査処理の動作シーケンスの一例を示す。
以下に説明する動作シーケンスは、各装置において予め各装置の記憶部に記憶されているプログラムに基づき主に各装置の制御部により各装置の各要素と協働して実行される。図4の動作シーケンスは、操作部102を用いたユーザの指示に従って、又は、定期的に実行される。
最初に、検査装置100のリクエスト送信部111は、記憶部104から検査項目管理テーブル及び検査対象装置管理テーブルを読み出す(ステップS101)。
次に、リクエスト送信部111は、検査対象装置管理テーブルに含まれる各検査対象装置の装置IDと関連付けられた各項目IDを特定し、検査項目管理テーブルにおいて、特定した各項目IDに対応するプログラム情報に示されるプログラムを順次実行する。これにより、リクエスト送信部111は、各プログラムに含まれる検査用リクエストを、通信部101を介して各検査対象装置200のIPアドレス及び対応するポート番号に送信する。さらに、リクエスト送信部111は、その処理履歴、すなわちその検査用リクエストの送信履歴を記憶部104に順次記憶する(ステップS102)。
なお、検査項目管理テーブルにおいて、各検査項目毎に、その検査項目を実施する検査対象装置のIPアドレスを記憶してもよい。その場合、リクエスト送信部111は、検査項目管理テーブルに含まれる各項目IDに対応するプログラムに含まれる命令に従って、そのプログラムに含まれる検査用リクエストを、検査項目管理テーブルにおいてその項目IDに関連付けられた各検査対象装置のIPアドレスに送信する。
図5は、処理履歴の例を示す模式図である。図5に示すように、処理履歴には、処理時刻、項目ID、処理内容、検査対象装置200のIPアドレス等の情報が関連付けて記憶される。処理履歴に記憶された項目IDは、その項目IDに関連付けられた検査用リクエストがその処理時刻にそのIPアドレス宛てに送信されたこと、すなわちリクエスト送信部111が送信した検査用リクエストの送信履歴を表し、処理時刻はその検査用リクエストの送信時刻を表す。
次に、検査対象装置200が検査用リクエストを受信すると、その検査用リクエストにより検査される検査対象装置200上の対象製品は、その検査用リクエストに応じた所定の処理を実行する。このとき、対象製品が脆弱性を有しており、その検査用リクエストにより異常が発生した場合、または不正なリクエストを受信したことを検知した場合、検査対象装置200は特定のアラート情報を履歴として記憶し、記憶したアラート情報を含むアラート信号を監視サーバ装置300に送信、即ち出力する(ステップS103)。なお、検査対象装置200は、例えば一定期間(例えば1分)毎に、その間に記憶した各アラート情報を含むアラート信号を送信してもよい。または、検査対象装置200は、監視サーバ装置300からアラート情報の取得を要求する要求信号を受信した場合に、アラート信号を送信してもよい。
なお、アラート情報には、そのアラート情報の生成時刻、即ち異常が発生した発生時刻と、異常の内容とが含まれる。異常の内容がどのように記載されるかは各対象製品によって異なるが、異常の内容には、異常が発生した対象製品の製品名、ベンダ名、種別名及び/又は対象製品が用いる通信プロトコル名が文字列として含まれる場合がある。
次に、監視サーバ装置300は、検査対象装置200から、検査対象装置200が検査用リクエストの受信に応じて出力したアラート信号を受信すると、受信したアラート信号に含まれるアラート情報をその検査対象装置200のIPアドレスと関連付けて記憶する。さらに、監視サーバ装置300は、記憶した各アラート情報及びIPアドレスを表示して監視員に通知する。さらに、監視サーバ装置300は、記憶した各アラート情報の原因となった検査項目を問い合わせるための問合せ信号を検査装置100に送信する(ステップS104)。問合せ信号には、問い合わせの対象となるアラート情報及びIPアドレスが含まれる。監視サーバ装置300は、検査対象装置200からアラート信号を受信するとすぐに問合せ信号を送信する。なお、監視サーバ装置300は、例えば一定期間(例えば1時間)毎に、その間に受信した各アラート情報の原因となった検査項目をまとめて問い合わせる問合せ信号を送信してもよい。
次に、検査装置100のアラート情報受信部112が通信部101を介して監視サーバ装置300から問合せ信号を受信すると、抽出部113は、受信した問合せ信号に含まれるアラート情報の原因となった検査項目を抽出する検査項目抽出処理を実行する(ステップS105)。抽出部113は、検査項目抽出処理において、アラート情報に、送信履歴が記憶された検査用リクエストに関連付けて記憶された製品情報が含まれるか否かを判定し、含まれる場合、その製品情報に関連付けて記憶された検査項目をアラート情報の原因となった検査項目として抽出する。検査項目抽出処理の詳細については後述する。
次に、抽出部113は、抽出された検査項目と、対応するアラート情報及びIPアドレスとを含む抽出結果信号を通信部101を介して監視サーバ装置300に送信する(ステップS106)。なお、抽出部113は、抽出結果信号を送信するとともに、抽出された検査項目と、対応するアラート情報及びIPアドレスとを表示部103に表示し、検査装置100の管理者に通知してもよい。
次に、監視サーバ装置300は、検査装置100から抽出結果信号を受信すると、受信した抽出結果信号に含まれる検査項目、即ち検査対象装置200が出力したアラート情報の原因となった検査項目をそのアラート情報とともに表示して監視員に通知する(ステップS107)。
これにより、監視員は、多数の検査項目の中のどの検査項目が原因となって検査対象装置200がアラート情報を出力したかを的確に把握することができ、問題のある対象製品を更新する等、適切な対応を実施することが可能となる。
図6は、検査装置100による検査項目抽出処理の動作フローの一例を示すフローチャートである。図6に示す動作のフローは、図4に示す動作シーケンスのステップS105において実行される。
最初に、検査装置100の抽出部113は、受信した問合せ信号からアラート情報を抽出する(ステップS201)。
次に、抽出部113は、抽出したアラート情報から製品情報を抽出する(ステップS202)。
抽出部113は、検査項目管理テーブルに記憶された製品情報の内の何れかの製品情報を示す文字列が、抽出したアラート情報に含まれるか否かを判定し、何れかの製品情報がアラート情報に含まれる場合、その製品情報を抽出する。すなわち、抽出部113は、検査項目管理テーブルに記憶された製品名、ベンダ名、種別名及び通信プロトコル名の内の何れかを示す文字列がアラート情報に含まれる場合、その文字列を抽出する。なお、検査項目管理テーブルに記憶された製品名、ベンダ名、種別名及び通信プロトコル名の一覧をその項目IDと関連付けて記憶した製品情報テーブルを記憶部104に予め記憶しておき、抽出部113は、製品情報テーブルを用いて製品情報を抽出してもよい。
次に、抽出部113は、アラート情報から製品情報が抽出されたか否かを判定する(ステップS203)。
抽出部113は、アラート情報から製品情報が抽出されなかった場合(ステップS203−No)、処理をステップS212へ移行する。一方、抽出部113は、アラート情報から製品情報が抽出された場合(ステップS203−Yes)、抽出された各製品情報に関連付けて検査項目管理テーブルに記憶された全ての項目IDを抽出する(ステップS204)。
次に、抽出部113は、監視サーバ装置300から受信していた問合せ信号からIPアドレスを抽出する(ステップS205)。
次に、抽出部113は、アラート情報からそのアラート情報の生成時刻を抽出する(ステップS206)。
次に、抽出部113は、記憶部104に記憶された処理履歴に、ステップS204で抽出した項目ID、ステップS205で抽出したIPアドレス、及びステップS206で抽出した生成時刻に対応する履歴が含まれるか否かを判定する(ステップS207)。
なお、抽出部113は、処理履歴に記憶された処理時刻が、ステップS206で抽出した生成時刻を含む所定範囲の期間に含まれる場合、その処理時刻がその生成時刻に対応するとみなす。所定範囲は、検査装置100に設定されている時刻と検査対象装置200に設定されている時刻の差、及び検査装置100が検査用リクエストを送信してから検査対象装置200で異常が発生するまでの時間等を考慮して設定され、例えば生成時刻の前後5分間ずつの合計10分間に設定される。これにより、抽出部113は、送信時刻がアラート情報の生成時刻から所定範囲内でない検査用リクエストに関連付けて記憶された検査項目を抽出対象から除外することができる。したがって、抽出部113は、送信時刻が異常の発生時刻と大きく異なる検査用リクエストを抽出対象から除外することが可能となり、検査用リクエストの抽出精度をより向上させることができる。
抽出部113は、処理履歴に、各処理で抽出した項目ID、IPアドレス及び生成時刻に対応する履歴が含まれない場合(ステップS207−No)、処理をステップS212へ移行する。一方、抽出部113は、処理履歴に、各処理で抽出した項目ID、IPアドレス及び生成時刻に対応する履歴が含まれる場合(ステップS207−Yes)、アラート情報に、送信履歴が記憶された検査用リクエストに関連付けて記憶された製品情報が含まれると判定する(ステップS208)。
次に、抽出部113は、その製品情報に関連付けて記憶された検査項目、即ちその履歴に記憶された項目IDの検査項目を、アラート情報の原因となった検査項目として抽出する(ステップS209)。
次に、抽出部113は、抽出した検査項目をそのアラート情報及びIPアドレスと関連付けて、抽出結果として記憶部104に記憶する(ステップS210)。
次に、抽出部113は、抽出した検査項目をそのアラート情報及びIPアドレスと関連付けて、記憶部104の異常管理テーブルに記憶するとともに、検査対象装置管理テーブルにおいて、そのIPアドレスの検査対象装置と関連付けて記憶されたその検査項目の項目IDを削除する(ステップS211)。
このように、抽出部113は、特定の検査対象装置200が出力したアラート情報の原因となった検査項目を抽出した場合、以後、その検査項目に関連付けて記憶された検査用リクエストをその検査対象装置へ送信しないように設定する。これにより、その検査項目により異常が発生することが判明している検査対象装置200、又は異常は発生しないが、不正なリクエストを検知してアラート情報を出力する検査対象装置200に対して、その検査項目の検査が再度実施されることを防止することができる。したがって、以後の検査において、その検査対象装置200は、その検査項目に対応したアラートを出力せず、監視サーバ装置300の監視員は、そのアラートに対応する必要がなくなる。なお、削除された項目IDは、その検査対象装置200においてその検査用リクエストに対応する対象製品の更新等が行われ、問題が解消されたときに、例えば検査装置100の管理者により操作部102を用いて復旧される。
なお、抽出部113は、特定の検査対象装置200が出力したアラート情報の原因となった検査項目の項目IDを検査対象装置管理テーブルから削除せず、以後の検査を実行する前に異常管理テーブルの内容を表示部103に表示したり、電子メール等を管理者宛てに送信して、管理者に確認を促してもよい。
次に、抽出部113は、受信した問合せ信号に含まれる全てのアラート情報を抽出したか否かを判定する(ステップS212)。
抽出部113は、全てのアラート情報をまだ抽出していない場合(ステップS212−No)、処理をステップS201へ戻し、ステップS201〜S211の処理を繰り返す。一方、抽出部113は、全てのアラート情報を抽出した場合(ステップS212−Yes)、一連のステップを終了する。
抽出部113は、図4のステップS106において、ステップS210で抽出結果として記憶した検査項目及びアラート情報を抽出結果信号に含ませて監視サーバ装置300に送信する。検査用リクエストが全く抽出されなかった場合、抽出部113は、その旨を示す抽出結果信号を監視サーバ装置300に送信する。
なお、製品情報は、対象製品の製品名、ベンダ名、種別名、及び、対象製品が用いる通信プロトコル名の内の少なくとも一つを含んでいればよく、各情報の内の何れかを省略してもよい。
また、抽出部113は、ステップS202において、アラート情報に各製品情報を示す文字列が含まれるか否かを一斉に判定するのではなく、製品名、ベンダ名、種別名及び通信プロトコル名について順次判定してもよい。その場合、プロトコル名をキーワードとするよりも種別名をキーワードとした方が、抽出する検査項目の数を少なくすることができる。同様に、種別名をキーワードとするよりもベンダ名をキーワードとした方が、抽出する検査項目の数を少なくすることができ、ベンダ名をキーワードとするよりも製品名をキーワードとした方が、抽出する検査項目の数を少なくすることができる。
したがって、抽出部113は、最初にアラート情報から製品名を抽出し、製品名が抽出されなかった場合に限り、アラート情報からベンダ名を抽出する。同様に、抽出部113は、ベンダ名が抽出されなかった場合に限り、アラート情報から種別名を抽出し、種別名が抽出されなかった場合に限り、アラート情報からプロトコル名を抽出する。これにより、抽出部113は、抽出する検査項目の数を可能な限り少なくし、抽出する検査項目をより限定することができる。なお、各情報を抽出する順序は適宜変更してもよい。
また、抽出部113は、受信した各アラート情報について、送信した各検査用リクエスト毎に、アラート情報と検査用リクエストの製品情報との一致の度合いを示す一致度を算出し、一致度が所定閾値以上となる検査用リクエストに関連付けて記憶された検査項目をそのアラート情報の原因となった検査項目として抽出してもよい。例えば、抽出部113は、一致度の初期値を0にしておき、受信したアラート情報に、送信した検査用リクエストに関連付けて記憶された製品名が含まれる場合、ベンダ名が含まれる場合、種別名が含まれる場合、又は通信プロトコル名が含まれる場合、それぞれ一致度に1を加算する。抽出部113は、一致度が2以上となる検査用リクエストに関連付けて記憶された検査項目をそのアラート情報の原因となった検査項目として抽出する。なお、一致度に加算する値は、製品名が含まれる場合と、ベンダ名が含まれる場合と、種別名が含まれる場合と、通信プロトコル名が含まれる場合とでそれぞれ異ならせてもよい。これにより、抽出部113は、アラート情報の原因となった検査項目をより精度良く抽出することができる。
さらに、抽出部113は、過去に抽出された検査項目の履歴に基づいて、アラート情報の原因となった検査項目を抽出してもよい。例えば、抽出部113は、上記のように算出した、アラート情報と検査用リクエストの製品情報との一致度に、その検査用リクエストに対応する検査項目が異常管理テーブルに記憶されている数が多いほど大きい係数を乗じる。これにより、抽出部113は、アラート情報を発生させる可能性が高い検査項目を優先的に抽出することができる。
また、検査対象装置200において、各検査項目により異常が発生してアラート情報が生成される順序は、各検査項目が実施された順序と等しくなる可能性が高い。そこで、抽出部113は、アラート情報受信部112が複数のアラート情報を受信した場合に、処理履歴に記憶された検査用リクエストの送信順序と、各アラート情報に含まれる生成時刻との関係に基づいて、特定の検査用リクエストに関連付けて記憶された検査項目を抽出対象から除外してもよい。
例えば、特定の検査項目により異常が発生して特定のアラート情報が生成された場合、その特定の検査項目が、その特定のアラート情報より前に生成されたアラート情報の原因となる検査項目より前に実施されている可能性は低い。そこで、抽出部113は、特定のアラート情報に含まれる生成時刻より前の生成時刻を含む各アラート情報について、そのアラート情報の原因となる検査項目として抽出した検査項目の内の最初に実施された検査項目を処理履歴から抽出する。そして、抽出部113は、抽出した検査項目より前に実施された検査項目をその特定のアラート情報についての抽出対象から除外する。
同様に、特定の検査項目により異常が発生して特定のアラート情報が生成された場合、その特定の検査項目が、その特定のアラート情報より後に生成されたアラート情報の原因となる検査項目より後に実施されている可能性は低い。そこで、抽出部113は、特定のアラート情報に含まれる生成時刻より後の生成時刻を含む各アラート情報について、そのアラート情報の原因となる検査項目として抽出した検査項目の内の最後に実施された検査項目を処理履歴から抽出する。そして、抽出部113は、抽出した検査項目より後に実施された検査項目をその特定のアラート情報についての抽出対象から除外する。
また、検査対象装置管理テーブルにおいて、各検査対象装置毎に検査項目の項目IDを記憶せず、リクエスト送信部111は、検査システム1内の全ての検査対象装置200に対して同じ検査項目を実施してもよい。その場合、全ての検査対象装置200に同じ検査用リクエストが送信される。したがって、抽出部113は、ステップS205のIPアドレスの抽出処理を省略し、ステップS207において、IPアドレスについては判定せず、処理履歴に、各処理で抽出した生成時刻及び項目IDに対応する履歴が含まれるか否かを判定してもよい。これにより、抽出部113は、検査項目抽出処理に要する時間を低減することができる。
また、抽出部113は、検査項目の処理時刻、即ち検査用リクエストの送信時刻に関わらず、任意の時刻に処理された検査項目を抽出してもよい。その場合、抽出部113は、ステップS206の生成時刻の抽出処理を省略し、ステップS207において、生成時刻については判定せず、処理履歴に、各処理で抽出したIPアドレス及び項目IDに対応する履歴が含まれるか否かを判定する。これにより、抽出部113は、判定処理に要する時間を低減することができる。
また、抽出部113は、検査対象装置200がアラート情報を出力し得ない検査項目を抽出対象から除外してもよい。例えば、抽出部113は、アラート情報にWeb Serverの文字列が含まれる場合、ウェブアクセスに用いられるポート番号(80)以外のポート番号に対して検査を行うための検査項目を抽出対象から除外してもよい。
また、リクエスト送信部111は、操作部102を用いた管理者による指示に従って、異常管理テーブルに記憶された各検査項目に対応する検査用リクエストをその検査項目に関連付けて記憶されたIPアドレス宛てに再度送信してもよい。これにより、問題を有している検査対象装置及び対象製品にのみ、効率良く再検査を行うことができる。管理者は、問題を有している各検査対象装置にそれぞれ個別に再検査を行うことなく、まとめて再検査を行うことができ、利便性を向上させることが可能となる。
以上説明してきたように、検査装置100は、複数の検査項目を検査用リクエスト及び製品情報と関連付けて記憶し、検査対象装置200が出力したアラート情報に、送信した検査用リクエストに関連付けて記憶された製品情報が含まれる場合、その製品情報に関連付けて記憶された検査項目をアラート情報の原因となる検査項目として抽出する。これにより、検査装置100は、非常に多数の検査項目の中から、検査対象装置200が出力したアラート情報の原因となる検査項目を精度良く抽出又は特定することが可能となる。
また、検査装置100は、検査対象装置管理テーブルにおいて、検査対象装置200毎に各検査対象装置に対して行う検査項目を管理する。これにより、全ての検査対象装置200に対して同一の検査を行うのではなく、検査対象装置200毎に検査項目を柔軟に変更することが可能となる。特に、異常が発生することが事前に判明している検査項目を省略することができ、監視サーバ装置300の監視者及び検査装置100の管理者の利便性を向上させることが可能となる。
なお、本発明は、本実施形態に限定されるものではない。例えば、検査システム1において、監視サーバ装置300を省略し、検査対象装置200は、アラート信号を検査装置100に直接送信してもよい。
当業者は、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。