図1は、情報収集システムの構成図である。情報収集システムは、制御システムへのコンピュータウィルスやDoS攻撃といったサイバー攻撃のインシデントログ(以下、単にログと呼ぶことがある。)を収集する。
情報収集システムは、センタサーバ10、管理サーバ20、制御装置30(以下、一般に複数の制御装置があるが、1つを代表させて説明する。)、及び、これらを接続するネットワーク80、90を含む。センタサーバ10、管理サーバ20、および制御装置30は、制御対象によって、規模の大小や接続する入出力装置に差異などがあるが、CPU、記憶装置を有するコンピュータである。
センタサーバ10は、インシデント検知部11、インシデントリスト作成部12、およびインシデントログ収集部13の各処理部、インシデント−ログ対応表14、インシデントログ格納部15、およびインシデントリスト16のテーブルまたは記憶部、並びに管理サーバ20とネットワーク80を介して通信する通信部17を有する。
インシデント検知部11は、インシデントログ格納部15に格納されたインシデントログから、マルウェア等の感染や外部からの不正アクセスなどのインシデントを、後述するインシデント−ログ対応表14の判定基準144を参照して、検知する。インシデント検知部11は、検知したインシデントに基づいて、インシデントリスト作成部12に指示すると共に、センタサーバ10の出力装置(図示略)に警報メッセージなどを出力する。
インシデントリスト作成部12は、インシデント検知部11からの指示、および、予め作成され、必要に応じて更新されるインシデント−ログ対応表14に基づいて、収集すべきインシデントに対応するログ(インシデントログ)の優先度を表すインシデントリスト16を作成する。インシデントリスト16は、通信部17によって、管理サーバ20、および管理サーバ20を介して制御装置30に送信される。
インシデントログ収集部13は、管理サーバ20から送信されたインシデントログ、および管理サーバ20を介して通信部17が受信する、制御装置30から送信されたインシデントログをインシデントログ格納部15に格納する。
管理サーバ20は、制御管理部21、ログ収集部24、およびログパケット生成部26の各処理部、制御管理ファイル22、ログ格納部25、およびインシデントリスト28のテーブルまたは記憶部、並びに、センタサーバ10とネットワーク80を介して通信する通信部27、および制御装置30とネットワーク90を介して通信する通信部23を有する。
制御管理部21は、制御管理ファイル22に格納されている、制御装置30からの、制御対象の状態を表す状態情報に基づいて、たとえば、制御装置30によるアクチュエータの制御指令の変更や、複数の制御装置30の間の同期(制御タイミング)などを制御する。制御管理部21による制御装置30を制御するための指令は、通信部23によって制御装置30に送信される。
ログ収集部24は、制御管理ファイル22に格納されている、制御装置30から受信した制御パケットのデータ部(ペイロード)に含まれる制御装置30のインシデントログ、および管理サーバ20の状態情報から収集したインシデント検知のためのインシデントログをログ格納部25に格納する。管理サーバ20の状態情報から収集するインシデントログは、制御管理部21が、インシデントリスト28を参照して収集する。収集するインシデントログは、制御管理ファイル22に格納されるが、その多くは制御管理部21のOSが管理する記憶領域にある管理サーバ20の状態情報である。この記憶領域は、OSやOSの制御下で動作するシステムタスク以外からはアクセス禁止として制御されるが、一般にOSに、管理サーバ20の状態情報を出力するシステムタスクが存在するので、このシステムタスクを用いることにより、所望のインシデントログが制御管理ファイル22に格納される。
ログパケット生成部26は、ログ格納部25に格納されているインシデントログを送信するためのログパケットを生成する。生成されたログパケットは、通信部27によってセンタサーバ10に送信される。ログ収集部24とログパケット生成部26とを一体構成として、収集したインシデントログを基にログパケットを生成し、ログ格納部25を設けなくてもよい。
制御装置30は、制御部31、制御パケット生成部34、およびログ選択部35の各処理部、制御情報ファイル32およびインシデントリスト36のテーブルまたは記憶部、並びに管理サーバ20および他の制御装置30と通信する通信部33を有する。ログ選択部35は、図1では明示的に図示してあるが、制御パケット生成部34の一部(一部の処理、またはサブルーチン)として動作する。
制御部31は、センサから得られる制御対象の状態情報を制御情報ファイル32に格納すると共に、制御情報ファイル32に格納されている、制御管理部21からの指令(制御目標値の変更など)、および制御対象の状態情報に基づいた制御指令をアクチュエータに出力する。制御部31は、アクチュエータに出力した制御指令も制御情報ファイル32に格納する。また、制御部31は、管理サーバ20および他の制御装置30へ送信すべき制御対象の状態情報および制御指令を制御データとして制御パケット生成部34へ出力する。
制御パケット生成部34は、管理サーバ20および他の制御装置30へ送信すべき制御データである、制御対象の状態情報および制御指令を所定のフォーマットに設定した制御パケットを生成する。
制御装置30が送信する制御パケットは、ネットワーク90における輻輳を避けるために、制御周期(制御対象により異なり、100m秒、1秒、1分など)毎に1回、宛先を特定しないブロードキャストまたは必要な複数の宛先を指定するマルチキャストにより送信される。制御パケットに宛先を付したPoint to Point通信が用いられる場合もあるが、同じまたは類似の状態情報および制御指令を含む複数の制御パケットを制御装置30が送信することになり、ネットワーク90において輻輳が発生する可能性が高くなるので、ネットワーク90の通信容量に余裕がある場合に用いられる。
制御パケット生成部34は、制御パケットのデータ部の容量のうち、状態情報および制御指令の制御データ量を除くデータ量をインシデントログの送信に用いる。制御パケット生成部34は、インシデントログの送信に用いるデータ量をログ選択部35に出力する。
ログ選択部35は、インシデントログの送信に用いるデータ量および、インシデントリスト36の内容に応じて、送信すべきインシデントログの指定を制御パケット生成部34に出力する。制御パケット生成部34は、送信すべきインシデントログの指定に応じて、制御情報ファイル32から指定されたインシデントログを読み出し、制御パケットに格納する。生成された制御パケットは、通信部33によって、ネットワーク90を介して送信される。
通常、制御システムは、制御管理部21、制御管理ファイル22、および通信部23を有する管理サーバ20、並びに、制御部31、制御パケット生成部34、制御情報ファイル32および通信部33を有する制御装置30により構成される。情報収集システムは、通常の制御システムに、センタサーバ10およびネットワーク80を付加し、さらに管理サーバ20および制御装置30に、前述した処理部や記憶部を付加したものである。また、情報収集システムでは、管理サーバ20の制御管理ファイル22にはインシデントログが格納され、制御装置30の制御パケット生成部34には制御パケットにインシデントログを格納する処理が付加される。また、センタサーバ10は、説明の分かり易さおよび管理サーバ20の処理能力や記憶容量等に余裕がない場合を想定して設けているが、管理サーバ20の処理能力などに十分な余裕がある場合は、センタサーバ10の各処理部および各記憶部を管理サーバ20に設けてもよい。
収集するインシデントログは、制御情報ファイル32に格納されるが、その多くは制御装置30のOSが管理する記憶領域にある制御装置30の状態情報である。この記憶領域は、OSやOSの制御下で動作するシステムタスク以外からはアクセス禁止として制御されるが、一般にOSに、制御装置30の状態情報を出力するシステムタスクが存在するので、このシステムタスクを用いることにより、所望のインシデントログが制御情報ファイル32に格納される。
インシデントログの送信に用いるデータ量について説明を補足する。ネットワーク90を介して、制御装置30が送信する制御パケットのデータ部(ヘッダなどを除いたペイロード)の長さを、たとえば1kB(1000バイト)とする。この値は、制御周期の間に、制御部31および制御パケット生成部34の処理を完了し、さらに生成された制御パケットを、ネットワーク90を介して送信完了する必要があるという制約条件を持つ制御装置30において、ネットワーク90の使用に許容される通信帯域や通信部23および通信部33の性能、通信プロトコルなどにより決定される値であるので、1kBは説明の都合上の値である。通常の制御システムの運用において、制御データである、状態情報および制御指令の通信のために800バイトを使用するならば、インシデントログの送信に用いるデータ量の上限は200バイトである。制御システムの場合は、通信に係る処理の複雑さを避けるために、予め定めた固定長の制御パケットが用いられる。
なお、可変長の制御パケットが用いられる場合は、ネットワーク90や通信部などの性能、通信プロトコルなどにより決定される、制御装置30に許容されるデータ部の長さ(容量)から、この制御装置30が用いる制御データの長さを減算した長さをインシデントログの送信に用いる。
一方、インシデントは、制御システム全体の状態に影響を及ぼすものから、ほとんど影響しないものまであり、それらのインシデントに対応する(インシデントを特定できる)インシデントログの情報量は多く、多くの場合、インシデントログの送信に用いるデータ量の上限を超える。そこで、インシデントログを選択的に制御パケットに格納する必要がある。
ここで、制御システムにおける、マルウェア等の感染や外部からの不正アクセスなどのインシデントについて、図示するまでもない簡単な例を挙げて説明する。最も典型的な例は、管理サーバ20のインターネットなどの公衆網への接続である。管理サーバ20を操作するユーザは、制御や状態情報の統計処理やグラフ化などのためにインターネット上の情報(プログラムやデータ)を必要とすることがある。また管理サーバ20のユーザは、制御システムの管理者との間の問い合わせや応答に電子メールを使用することもある。管理サーバ20に入ったインシデントが、ネットワーク90を介して制御装置30に伝わる、または影響を及ぼす。制御装置30をインターネットなどの公衆網に接続する例として、センサとしてWebカメラを用いる場合や、遠隔のセンサの値を、インターネットを介して制御装置30が受信する例がある。このような例は、専用線を用いる場合に比べて安価であるからである。このような通信環境においては、マルウェア等の感染や外部からの不正アクセスなどのインシデントが、認証情報の付加やコンピュータウィルスの検知などのセキュリティ対策を超えて発生する可能性がある。
図2は、インシデント−ログ対応表14の例である。インシデント−ログ対応表14の内容は、センタサーバ10に接続する入力装置から、センタサーバ10のユーザによって入力され、必要に応じて更新される。インシデント−ログ対応表14は、優先度140、インシデント名141、インシデントコード142、ログデータ種別143、ログコード144、ログデータ長145、および判定基準146を有する。
優先度140は、インシデントの重要性であり、対応するインシデントログを制御装置30が送信するときの優先度として用いられる。ここでは、「1」を最優先とし、数字が大きくなるにつれて、優先度が低下するものとする。インシデント名141はインシデントの名称であり、インシデントコード142はインシデントを識別するコードである。ログデータ種別143は、インシデントの発生を判定するためのログデータの種別であり、ログコード144はログデータの種別を識別するコードである。たとえば、インシデント名140が「サービス不能」のインシデントにはインシデントコード142「A」を付し、「サービス不能」のインシデントの発生を判定するためのログデータ種別143の「ネットワーク帯域」にログコード144「A01」を付してある。
なお、あるログコード144に対応するログデータを収集したとしても、そのログコード144に対応するインシデントが必ずしも発生しているとは限らない。逆に、あるインシデントが発生したならば、対応するログコード144のログデータが収集される。すなわち、ログデータの収集は、インシデントの発生の可能性を示すことになる。
ログデータ長145は、ログコード144のインシデントログの長さである。この長さには、後述するインシデントログを収集した時刻データを含む。ファイル名のように、長さが不定なインシデントログがある。このような場合は、予め想定される最長のファイル名の長さを設定し、設定した長さを超えるファイル名の場合は、ファイル名の先頭から設定した長さの文字列をインシデントログとして収集する。
判定基準146は、収集したインシデントログからインシデント検知部がインシデントの発生(の可能性)を判定するために用いられる。図2では、ログデータ種別143が「ネットワーク帯域」や「CPU利用率」の判定基準を「○Mbps以下」、「○○%以上」と例示しているが、これらの継続時間を判定基準に含めてもよい。また、ログデータ種別143が「不適切なファイル名」の判定基準を「有り」としているが、インシデントログとしては検出した不適切なファイル名が収集される。
センタサーバ10は、インシデント−ログ対応表14の入力、または更新に応じて、優先度140、インシデントコード142、ログコード144およびログデータ長145の対応関係を管理サーバ20および制御装置30に送信しておく。管理サーバ20および制御装置30の各々は、制御周期毎に、ログコード144の各々に対応するインシデントログを前述のシステムタスクを利用して収集し、収集した時刻(時刻データ)を付して、制御管理ファイル22または制御情報ファイル32に格納する。したがって、管理サーバ20と制御装置30との特性が異なる場合、制御装置30によって特性が異なる場合、インシデント−ログ対応表14は管理サーバ用と制御装置用との2種類以上を設けてもよいが、ここでは簡単のために1種類として説明する。
図3は、インシデントリスト16の例である。インシデントリスト16は、インシデントリスト作成部12によって作成され、優先度160、インシデントコード161、ログコード162、およびログデータ長163を有する。優先度160は、インシデント−ログ対応表14の中から、インシデントリスト作成部12が選択したインシデントの優先度140に対応し、インシデントコード161は選択したインシデントのインシデントコード141に対応し、ログコード162は、選択したインシデントを検知するためにインシデントリスト作成部12が選択したログデータ種別143のログコード144に対応し、ログデータ長163は、ログコード144に対応するインシデントログのログデータ長145に対応する。インシデントリスト16も、インシデント−ログ対応表14の種類に対応して、管理サーバ用と制御装置用との2種類以上を設けてもよいが、ここでは簡単のために1種類とする。
インシデントリスト16が通信部17によって、管理サーバ20および制御装置30に送信され、各々インシデントリスト28およびインシデントリスト36として格納されたものとして、制御装置30の動作を説明し、続いて管理サーバ20の動作を説明する。
制御情報ファイル32には、前述のように、制御部31によって、センサから得られる制御対象の状態情報およびアクチュエータに出力した制御指令、並びに、制御装置30のOSが管理する記憶領域にある制御装置30の状態情報が格納されている。制御装置30の状態情報に関しては、インシデントリスト36のログコード162に対応する情報に限定してシステムタスクを用いることにより、インシデントを検知するために不使用のデータがインシデントログとして制御情報ファイル32に格納されることが避けられる。
図4は、制御パケット生成部34が生成する制御パケット40の例である。制御パケット40は、ヘッダ長、パケット長、送信元アドレスなどを含むヘッダ部41、並びに、制御データ部42およびログデータ部43を格納するデータ部(ペイロード)を有する。制御データ部42は、前述したように、制御部31が入力した状態情報、出力した制御情報、並びに管理サーバ20および他の制御装置30へ送信すべき制御に係る制御データを格納する。制御パケット生成部34による、ヘッダ部41及び制御データ部42の設定や格納は、通常の制御システムと同様であるので、説明を簡略にする。ログデータ部43は、以降がログデータ43であることを表す区切り(コード)44、並びにログコード45とログコード45に対応するインシデントログ46の組の列を格納する。
図5は、制御パケット生成部34の処理フローチャートである。制御パケット生成部34は、制御装置30の所定の制御周期(センサから状態情報を入力し、アクチュエータに制御指令を出力する周期)のタイマにより周期起動されてもよいが、所定の制御周期で制御部31が動作するので、制御部31が動作終了直前で、制御パケット生成部34を起動する。
このように起動する理由は次のとおりである。同じ周期の周期タイマにより制御部31と制御パケット生成部34を起動すると、制御部31と制御パケット生成部34との優先制御(一般に、制御部31を優先する。)を実行する必要があり、周期は同じで起動タイミングをずらす方法をとると、制御部31と制御パケット生成部34との一方が動作中に他方が起動されると優先制御を必要とされ、または、制御部31の動作終了と制御パケット生成部34の動作開始との間に無駄時間が生じ、制御部31の動作開始から制御パケット生成部34の動作終了までの時間が、所定の制御周期を超える可能性があることによる。
制御パケット生成部34は、制御パケット40のヘッダ部41を設定し、制御情報ファイル32から送信すべき制御データを読み出し、データ部に制御データを格納する(S340)。制御パケット生成部34は、制御パケット40のデータ部の容量のうち、制御データ量(制御データ部42の長さ)を除くデータ量(ログデータ部43の長さ)をインシデントログの送信に用いる。制御パケット生成部34は、制御パケット40のデータ部の長さから制御データ部42の長さを減じたログデータ部43の長さから、さらに区切り44の長さを減じたデータ量を、インシデントログの送信に用いる実際のデータ量としてログ選択部35に出力する(S341)。制御パケット生成部34は、この段階で制御パケット40の区切り44に所定の区切り符号を格納する。
制御パケット生成部34の一部として動作するログ選択部35は、制御装置30のワークエリアに、ログコードとログデータ長の組を格納するログコードリストを作成する。ログ選択部35は、ログコードリストに格納されたログコードの長さ(図2、図3のログコードの例から分かるように、ログコードの長さは、ログコードに依存せずに固定長に設計可能である。)とログデータ長の合計が、インシデントログの送信に用いる実際のデータ量を超えるかを判定する(S342)。インシデントログの送信に用いる実際のデータ量を超えるならば、制御パケット生成部34のS345の処理へ移る。
ログコードリストを作成(ワークエリアに領域を確保)した直後は、ログコードリストにログコードおよびログデータ長は格納されていないので、インシデントログの送信に用いる実際のデータ量を超えない。もし超えるならば、ヘッダ部41と制御データ部42との長さが、制御パケット40に許容される長さを超えているので、不適合な制御パケットである。
インシデントログの送信に用いる実際のデータ量を超えないならば、ログ選択部35は、インシデントリスト36の最後まで参照したかを判定する(S343)。最後まで参照したならば、制御パケット生成部34のS346の処理へ移る。
最後まで参照してないならば、ログ選択部35は、インシデントリスト36のログコードおよびログデータ長をログコードリストに格納する(S344)。S342〜S344の処理ループの各回の処理において、インシデントリスト36の優先度の高い方からログコードおよびログデータ長を順次選択し、ログコードリストに格納することになる。インシデントリスト36と同じ、図3のインシデントリスト16を用いて具体例を説明する。初回のループ処理では、優先度160が「1」のログコード162「A01」とそのログデータ長163「8Byte」が選択され、ログコードリストに格納される。2回目のループ処理では、優先度160が「1」のログコード162「A03」とそのログデータ長163「24Byte」が選択され、ログコードリストに格納される。同じ優先度の場合、インシデントリスト36の上位から順に選択する。
制御パケット生成部34は、最後に格納したログコードおよびログデータ長をログコードリストから削除する(S345)。ログコードリストに最後に格納したログコードおよびログデータ長を格納したことにより、インシデントログの送信に用いる実際のデータ量を超えたので、最後に格納したログコードおよびログデータ長をログコードリストから削除する。
制御パケット生成部34は、ログコードリストに従って、ログコードリストのログコード、およびログコードに対応するインシデントログを制御情報ファイル32から読み出し、ログパケット40の、ログコード45及びインシデントログ46の組として制御パケットに順次格納する(S346)。ログコードリストに従っているので、インシデントログの送信に用いる実際のデータ量を超えない範囲で、ログコード45及びインシデントログ46の組が列として制御パケットに格納される。
制御パケット生成部34は、通信部33およびネットワーク90を介して、生成した制御パケット40を管理サーバ20および他の制御装置30に送信する(S347)。
この制御パケット生成部34の動作により、制御周期の制約の中で、制御部30のインシデントログを効率的に収集できる。
管理サーバ20の動作を説明する。制御管理部21は、通常の制御システムにおける動作と同様であり、管理サーバ20の周期タイマにより起動され、制御管理ファイル22に格納されている、制御装置30からの、制御データに基づいて、たとえば、制御装置30によるアクチュエータの制御指令の変更や複数の制御装置30の間の同期(制御タイミング)などを制御する。制御管理部21による制御装置30を制御するための指令は、通信部23によって制御装置30に送信される。前述の管理するための、指令を含めた管理データは、制御管理ファイル22に格納される。制御管理部21は、前述の管理及び指令の送信の一連の処理を終了した段階で、ログパケット生成部26を起動する。
制御管理ファイル22には、各制御装置30の制御データ(インシデントログデータを含む)、管理サーバ20の管理データ、および、管理サーバ20のOSが管理する記憶領域にある管理サーバ20の状態情報が格納されている。各制御装置30の制御データは、制御装置30のアドレスなどを用いた識別子で識別されればよく、順不同で良い。管理サーバ20の状態情報に関しては、インシデントリスト28のログコード162に対応する情報に限定してシステムタスクを用いることにより、インシデントを検知するために不使用のデータがインシデントログとして制御管理ファイル22に格納されることが避けられる。
図6は、ログパケット生成部26が生成するログパケット50の例である。ログパケット50は、ヘッダ長、パケット長、送信元アドレス、送信先アドレスなどを含むヘッダ部51、並びに、管理サーバ20のログデータ部(以下、管理ログ部)52および制御装置30のログデータ部(以下、制御ログ部)53を格納するデータ部を有する。制御ログ部53は、制御装置30毎のログデータであり、N台の制御装置30がネットワーク90を介して管理サーバ20に接続しているものとして図示している。
管理ログ部52および制御ログ部53は同じ形式である。図6には、ある制御装置30の制御ログ部53を代表させて図示している。制御ログ部53は、制御装置30を識別する識別子54(管理ログ部52の場合は、管理サーバ20の識別子)、並びにログコード55とログコード55に対応するログ56の組の列を格納する。制御ログ部53は、図4に示した制御パケット40の制御データ部42及びログデータ部43が制御管理ファイル22に格納されているので、そのログデータ部43の区切り44を制御装置30の識別子に置換したものである。制御装置30の識別子は、制御パケット40のヘッダ部41に含まれる送信元アドレスに基づく。制御装置30の送信元アドレスを識別子として用いてもよいし、送信元アドレスと識別子との対応表を管理サーバ20およびセンタサーバ10が持ち、送信元アドレスから識別子へ変換してもよい。
なお、ネットワーク80は、センタサーバ10と管理サーバ20との1対1通信に供されるので、ネットワーク90上の制御パケット40に比べて、ログパケット50のパケット長を長くすることができる。さらに、前述したように、センタサーバ10と管理サーバ20とを同じサーバで一体として構成できる場合は、管理サーバ20のログ格納部25とセンタサーバ10のインシデントログ格納部15を同一(ログ格納部25およびインシデントログ格納部15の一方を省略するとともに、ログパケット生成部26、通信部27、ネットワーク80、通信部17、およびインシデントログ収集部13を省略した構成)にできるので、ログパケット50のパケット長を考慮に入れる必要がない。
ログ収集部24による、管理サーバ20の状態情報からのインシデントログの収集は、前述したとおりである。また、ログ収集部24による、制御管理ファイル22に格納されている制御装置30のインシデントログの収集は、図6を用いたログパケット50の説明と重複するので省略する。ログ収集部24は、制御管理ファイル22に格納されている、管理サーバ20および制御装置30のインシデントログを、ログ格納部25に格納する。ログ格納部25に格納されるインシデントログは、管理サーバ20および制御装置30の識別子で識別できればよいので、特定の順序に従う必要はない。
図7は、ログパケット生成部26の処理フローチャートである。ログパケット生成部26は、ログパケット50のヘッダ部51を設定する(S260)。ログパケット生成部26は、管理サーバ20のインシデントログをログ格納部25から読み出し、ログパケット50の管理ログ部52に格納する(S261)。
ログパケット生成部26は、ログ格納部25に格納されている、制御装置30からのインシデントログをログパケット50に格納したかを判定する(S262)。格納が完了しているならば、ログパケット生成部26はS264へ移る。
格納が完了していないならば、ログパケット生成部26は、次の制御装置30からのインシデントログを、制御装置30の識別子を付して、ログパケット50の制御ログ部に格納し(S263)、S262へ移る。
ログパケット生成部26は、通信部27およびネットワーク80を介して、生成したログパケット50をセンタサーバ10に送信する(S264)。
センタサーバ10のインシデントログ収集部13は、通信部17を介して受信するログパケット50のデータ部(インシデントログである管理ログ部52および制御ログ部53)をインシデントログ格納部15に格納する。インシデントログ収集部13は、ログパケット50を受信した通信部17からの受信割込みにより起動され、インシデントログ格納部15への格納完了に伴い、インシデント検知部11を起動し、処理を終了する。
図8は、インシデント検知部11の処理フローチャートである。インシデント検知部11は、センタサーバ10のワークエリアにログデータリストの領域を確保する(S110)。ログデータリストについては後述する。
インシデント検知部11は、インシデントログ格納部15に格納されている全てのインシデントログデータ(管理ログ部52および制御ログ部53の内容に相当)がチェック済みかを判定する(S111)。具体的には、管理サーバ20のインシデントログおよびN台の制御装置30のインシデントログがチェック済みかを判定する。チェック済みならば、インシデント検知部11はS115へ移る。
なお、インシデントログ格納部15に格納されているインシデントログは、一つのログパケット50のデータ部である。図示を省略するが、インシデント検知部11は、後述のS121の処理の後、インシデントログ格納部15に格納されているインシデントログを削除して、処理を終了する。
チェック済みでないならば、インシデント検知部11は、インシデントログ格納部15からチェック済みでないインシデントログデータを識別子54単位で読み出し(S112)、読み出したインシデントログデータに警告すべきインシデントログが少なくとも一つあるかを判定する(S113)。警告すべきインシデントログがないならば、インシデント検知部11はS111へ戻る。
インシデントログデータは、図6のログパケット50の形式でインシデントログ格納部15に格納されているので、インシデント検知部11はログコード55とログ56の組に関して、ログコード55と同じ、インシデント−ログ対応表14のログコード144の判定基準146を用いて、ログ56を順次判定する。たとえば、ログコード55が「A01」のログ56の内容が、判定基準146「○Mbps以下」であるかを判定する。この例の場合、「○Mbps以下」であるならば、警告すべきインシデントログ(前述のインシデント発生の可能性を表すログ)と判定する。
警告すべきインシデントログが少なくとも一つあるならば、インシデント検知部11は、識別子、インシデントコード、ログコード、ログデータを対応付けて、ログデータリストに格納する(S114)。格納後、インシデント検知部11はS111へ戻る。
インシデント検知部11がログデータリストに格納する識別子、ログコード、およびログデータは、識別子54、ログコード55、およびログデータ56であり、インシデントコードはインシデント−ログ対応表14を参照した、ログコード55と同じログコード144に対応するインシデントコード142である。
図9は、ログデータリスト900の例である。ログデータリスト900は、上述のインシデントログの格納に対応して、識別子901、インシデントコード902、ログコード603、およびログデータ904を含む。インシデント検知部11は、警告すべきインシデントログがあるとの判定に対応して、順次ログデータリスト900に識別子901などを格納する。同じ識別子54に対応して、警告すべきインシデントログが複数あるならば、インシデント検知部11は、ログデータリスト900の複数行に識別子901などを格納する。
図9に示すログデータリスト900の例は、識別子901が「2」の制御装置30に、インシデントコード902が「B」、ログコード603が「B01」、およびログデータ904が「85%」の警告すべきインシデントログがあり、並びに、識別子901が「3」の制御装置30に、インシデントコード902が「B」であり、ログコード603「B01」に対応してログデータ904が「95%」、およびログコード603「B03」に対応してログデータ904が「90%」の警告すべきインシデントログがあると、インシデント検知部11が判定したことを表している。
インシデント検知部11は、インシデントログ格納部15に格納されている全てのインシデントログデータをチェック済みであるならば、ログデータリスト900が空かを判定し(S115)、空ならば処理を終了する。ログデータリスト900の空は、警告すべきインシデントログがないと判定されたことを意味する。
ログデータリスト900が空でなければ、インシデント検知部11は、ログデータリスト900に複数種(異なる複数)の識別子901があるかを判定し(S116)、1種類の識別子ならば、インシデント検知部11はS118へ移る。複数種の識別子901があることは、管理サーバ20とN台の制御装置30との中で、複数台において警告すべきインシデントログがあると判定されたことを表している。図9に示すログデータリスト900の例は、識別子901が「2」と「3」との複数台において警告すべきインシデントログがあると判定されたことを表している。
インシデント検知部11は、複数種の識別子901に共通して同じインシデントコード902があるかを判定し(S117)、ないならば、インシデント検知部11はS120へ移る。複数種の識別子901に共通して同じインシデントコード902があるならば、同じ原因によるインシデントの発生の可能性がある。
インシデント検知部11は、同じインシデントコード902に複数のログコード903があるかを判定し(S118)、ないならば、インシデント検知部11はS120へ移る。この判定は、ログデータリスト900に1種の識別子901があり、1種の識別子901に対応した同じインシデントコード902が複数ある場合と、複数の識別子901があり、複数または1種の識別子901に対応した同じインシデントコード902に複数のログコード903がある場合に実行される。複数か1種の識別子901かに係らず、同じ原因によるインシデントの発生の可能性があるかを、インシデント検知部11が判定していることを意味する。
同じインシデントコード902に複数のログコード903があるならば、インシデント検知部11は、重要なインシデントの発生の可能性があるとして、重要警告メッセージをセンタサーバ10の出力装置(図示略)に出力する(S119)。出力装置が表示装置の場合は、重要警告メッセージと共にログデータリスト900を表示することにより、重要警告メッセージの詳細がセンタサーバ10のユーザによって認識される。
ログデータリスト900に複数の識別子901があるが、同じインシデントコード902がない場合、および同じインシデントコード902に複数のログコード903がない場合、インシデント検知部11は、警告メッセージをログデータリスト900と共にセンタサーバ10の出力装置に出力する(S120)。
インシデント検知部11は、重要警告メッセージまたは警告メッセージを出力後、ログデータリスト900に含まれるインシデント902、ログコード903およびログデータ904に応じたインシデントリスト16の更新を、インシデントリスト作成部12に指示する。
図10は、インシデント検知部11からの更新指示に基づいて、インシデントリスト作成部12によって、図3に示すインシデントリスト16が更新された例である。図10に示すインシデントリスト16は、図3と比較すると、ログコード162およびログデータ長163の組として、「A04」および「24Byte」、並びに、「B03」および「24Byte」が追加されている。この追加は、ログデータリスト900のログコード903が「B01」(CPU利用率が高い)の原因が、「B02」(ネットワーク使用率が高い)に関係し、さらにログコード162「A04」(送信元が異常なパケット)および「B03」(ファイルの拡張子異常)に関係しているのではないかとの設計ポリシーに基づいている。ログコード162およびログデータ長163の組の追加により、インシデントリスト16の容量が、管理サーバ20や制御装置30の記憶装置の容量制限や、ネットワーク90上での容量制限を超える場合は、優先度の低いログコード162およびログデータ長163の組を削除する。
図11は、図8のインシデント検知部11の一部の処理(S116〜S120)の代替処理フローチャートである。図11は、ログデータリスト900の、優先度を表すインシデントコード902に注目した処理である。
インシデント検知部11は、インシデントコード902に「A」(優先度140が「1」)がある場合(S150)、および「B」(優先度140が「2」)が複数ある場合(S151)に第1警告メッセージ(第1が最も重要であり、第2、第3、の順に、重要性低下)を出力する(S152)。同様に、インシデント検知部11は、インシデントコード902に「B」が一つある場合(S153)、および「C」(優先度140が「3」)が複数ある場合(S154)に第2警告メッセージを出力する(S155)。さらに同様に、インシデント検知部11は、インシデントコード902に「C」が一つある場合(S156)、および「D」以下(優先度140が「4以下」)が複数ある場合(S157)に第3警告メッセージを出力し(S158)、「D」以下が一つ又はない場合に第4警告メッセージを出力する(S159)。
インシデント検知部11の警告メッセージを出力する処理として、図8および図11の2種類を説明したが、最も簡単には、ログデータリスト900に少なくとも一つのインシデントログがあれば、ログデータリスト900と共に警告メッセージを出力してもよい。
このように、インシデントの重要性(インシデント−ログ対応表14の優先度140)、およびインシデントの発生の可能性を表すログデータ(インシデント−ログ対応表14のログデータ種別143およびログコード144)に関しての選択や順序付けは、制御システムおよび制御対象の状態変化を把握または想定した設計ポリシーに基づけばよい。
同様に、インシデントの発生の可能性を表すログデータを収集したときに、インシデントリスト16の更新内容に関しても、制御システムおよび制御対象の状態変化を把握または想定した設計ポリシーに基づけばよい。
本実施形態の情報収集システムによれば、制御システムとしての処理時間の制約を満たした上で、コンピュータウィルスや外部からの不正アクセスまたはその可能性を検知できる。