(57)【要約】  セッションテーブルは1または複数の記録からなり、各記録がセッションを示す。セッション情報は、キーフィールド、クエリー/検索処理をサポートするために、キーおよび値として記述されている。セッションテーブルはフィルタに関連付けられており、該フィルタは、前記テーブルに格納された記録に使用可能な1組のキーを記述する。セッションテーブルには、セキュリティ情報/イベントに含まれているデータが格納されている。セッション情報に関係するイベントを特定し、セッション情報を抽出し、該セッション情報を使用してセッションテーブルを修正するためのルールが作成される。セッションテーブルは、各セッションテーブルパーティションにおける記録数が減少させられるようパーティション区分される。処理中のセッションが現在のパーティションに移動されるよう、セッションテーブルは定期的に処理される。【選択図】図１
2010511210.tif 000002
【特許請求の範囲】
【請求項１】
セッションテーブルを使用して状態情報を維持する方法であって、前記セッションテーブルが1または複数のセッション記録からなり、各セッション記録が、1または複数のキーフィールド、1または複数のタイムスタンプフィールドおよび1または複数の値フィールドからなり、前記方法は、
タイムスタンプとネットワーク装置の動作についての情報とからなるセキュリティイベントを特定するステップと、
前記セキュリティイベントの1または複数のフィールドに基づいてクエリーキーを特定するステップと、
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対するクエリーを行うステップと、
クエリー結果を返すステップと、
を具備した方法。
【請求項２】
前記セッション記録が、イベントから抽出された情報を含む請求項1に記載の方法。
【請求項３】
前記1または複数のキーフィールドが、インターネットプロトコルアドレス(IP)を含む請求項1に記載の方法。
【請求項４】
前記1または複数の値フィールドが、ホスト名および媒体アクセス制御(MAC)アドレスの一方を含む請求項1に記載の方法。
【請求項５】
記ネットワーク装置が、ファイアウォール、侵入検出システムおよびサーバのうちの1を含む請求項1に記載の方法。
【請求項６】
前記クエリーキーが、ハッシュコードからなる請求項1に記載の方法。
【請求項７】
前記セッション記録が、開始時刻を示す第1のタイムスタンプフィールド、および、終了時刻を示す第2のタイムスタンプフィールドからなる請求項1に記載の方法。
【請求項８】
前記終了時刻が、セッション開始イベントに基づいて黙示的に特定される請求項7に記載の方法。
【請求項９】
前記開始時刻が、セッション終了イベントに基づいて黙示的に特定される請求項7に記載の方法。
【請求項１０】
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行なうステップが、その開始時刻が前記タイムスタンプより早く、その終了時刻が前記タイムスタンプより遅いセッション記録を特定することからなる請求項7に記載の方法。
【請求項１１】
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行うステップが、前記セッションテーブルに関連付けられたフィルタに対して前記クエリーキーをテストすることからなる請求項1に記載の方法。
【請求項１２】
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行なうステップが、最小の時間量だけ待つことからなる請求項1に記載の方法。
【請求項１３】
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行うステップが、最大の時間量だけ待つことからなる請求項1に記載の方法。
【請求項１４】
前記セッション記録が、該セッション記録の作成時刻を示すタイムスタンプフィールドからなる請求項1に記載の方法。
【請求項１５】
前記セッションテーブルがパーティションで区切られている請求項1に記載の方法。
【請求項１６】
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行なうステップが、前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルのパーティションに対してクエリーを行うことをからなる請求項15に記載の方法。
【請求項１７】
パーティションの境界を横切って延びるセッションを記述するセッション記録は、多数のセッション記録に分割される請求項15に記載の方法。
【請求項１８】
前記多数のセッション記録の各々が、該記録がより大きなセッションの一部分であることを示す注釈を含む請求項17に記載の方法。
【請求項１９】
前記注釈が、フラグおよび全体的なセッションの開始時刻を示すタイムスタンプの一方からなる請求項18に記載の方法。
【請求項２０】
前記セッションテーブルがセッション開始時刻によってパーティション区切りされており、前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行なうステップが、
前記タイムスタンプに基づいて前記セッションテーブルのパーティションを特定することと、
前記タイムスタンプおよびクエリーキーを使用して前記特定されたパーティションに対してクエリーを行なうこと
からなる請求項1に記載の方法。
【請求項２１】
セッションテーブルを使用して状態情報を維持するためのコンピュータプログラム製品であって、前記セッションテーブルが1または複数のセッション記録からなり、各セッション記録が、1または複数のキーフィールド、1または複数のタイムスタンプフィールドおよび1または複数の値フィールドからなり、前記コンピュータプログラム製品が方法を実行するためのコンピュータプログラムコードを格納したコンピュータによって読み取り可能な媒体からなり、前記方法が、
タイムスタンプとネットワーク装置の動作についての情報とからなるセキュリティイベントを特定するステップと、
前記セキュリティイベントの1または複数のフィールドに基づいてクエリーキーを特定するステップと、
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行うステップと、
クエリー結果を返すステップと、
を具備したものであるコンピュータプログラム製品。
【請求項２２】
セッションテーブルを使用して状態情報を維持するための装置であって、前記セッションテーブルが1または複数のセッション記録からなり、各セッション記録が、1または複数のキーフィールド、1または複数のタイムスタンプフィールドおよび1または複数の値フィールドからなり、前記装置は、
タイムスタンプとネットワーク装置の動作についての情報とからなるセキュリティイベントを特定するよう構成されたセキュリティイベントモジュールと、
前記セキュリティイベントの1または複数のフィールドに基づいてクエリーキーを特定するよう構成されたクエリーキーモジュールと、
前記タイムスタンプおよびクエリーキーを使用して前記セッションテーブルに対してクエリーを行うよう構成されたクエリーモジュールと、
クエリー結果を返す結果モジュールと、
を具備した装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の説明
本出願は、2006年10月25日に出願された米国特許仮出願No.60/862,932および2007年10月24日に出願された米国特許出願No.11/932,502(これらは、その出典を記載することによって本明細書の一部とする)の優先権を主張するものである。
【０００２】
本発明は、セキュリティ情報/イベント管理(SIMまたはSIEM)に関し、特に、セキュリティ情報/イベントとともに状態データが使用可能なよう状態データを追跡する技術に関する。
【背景技術】
【０００３】
セキュリティ情報/イベント管理(SIMまたはSIEM)の分野は、概ね、1)ネットワークおよびネットワーク装置から、ネットワーク動作および/または前記装置の動作を示すデータを収集すること、ならびに、2)セキュリティを向上させるために前記データを分析することに関係している。例えば、前記データは、前記ネットワークまたはネットワーク装置に対するアタック(攻撃)を特定し、どのユーザまたはマシーンに責任があるのかを判定するために分析されることができる。前記アタックが継続中である場合、前記アタックを阻止する、または、該アタックによる損害を軽減するための対策が実行可能である。前記収集されるデータは、一般的に、ネットワーク装置によって発生される(イベント、警報もしくは警告等の)メッセージ、または、ログファイルへの入力項目に由来するものである。典型的なネットワーク装置は、ファイアウォール、侵入検出システムおよびサーバを含む。通常、前記メッセージまたは入力項目は、当該ネットワーク行為が発生した時刻を示すタイムスタンプを含む。
【０００４】
前記収集されたデータのみを使用してアタックを特定して詳細に調べることが可能であるが、ネットワークの状態等の追加的な情報を有することがしばしば有用である。前記ネットワークの状態には、例えば、前記ネットワークにおける様々な装置、および、これらの装置がどのように接続されているか(すなわち、ネットワークのトポロジー)が含まれる。該ネットワークの状態は、ハードウエア属性(例えば、装置の媒体アクセス制御(MAC)アドレス)、論理属性(例えば、装置に割り当てられたインターネットプロトコル(IP)アドレス)、オーナーシップ属性(例えば、その装置を所有する人または事業体)、地理的属性(例えば、装置の物理的位置)、ソフトウエア属性(例えば、装置にインストールされているオペレーティングシステム)、ログイン属性(例えば、装置に現在ログインしているユーザ)、処理属性(例えば、装置で現在実行されている処理)、および、ネットワーク属性(例えば、装置のアクティブ状態にあるネットワーク接続)を含む。
【０００５】
ここで、アタックの一部と識別されたメッセージについて説明する。該メッセージに含まれる情報が、(該アタックのソース(出所)装置を(例えば、該装置のIPアドレスによって)示すことがある。前記IPアドレスは、その後、前記同じアタックの一部である他のメッセージを識別するために使用されることができる。しかし、(例えば、前記装置のMACアドレスまたはホスト名によって)前記IPアドレスがどの装置に割り当てられているのかを知ることも有用である。このような装置とIPアドレスとの対が既知である場合、前記IPアドレスの言及から装置を突きとめることができる。その装置にログインしたユーザが既知である場合、該装置からを該ユーザを突きとめることができる。前記ユーザの役割が既知である場合、該ユーザからその役割を突きとめることができ、該役割は、受領されたメッセージと該メッセージが記述する行為と併せて考察され得る。
【０００６】
しかしながら、不幸にも、任意の時点におけるネットワークの状態を検出するのは容易ではない。これは、前記状態が一定ではないため、すなわち、時間的に変化するからである。特に、各装置の状態は時間的に変化する。例えば、装置に割り当てられたIPアドレスは、異なる動的ホスト構成プロトコル(DHCP)リース、使用されている異なる仮想プライベートネットワーク(VPN)またはネットワークアドレス変換(NAT: National Address Translation)により、時間的に変化する可能性がある。他の例として、様々な人がログインしログアウトするのに伴い、ある装置へのログインユーザは時間的に変化する。このため、ネットワークの現在の状態のみならず過去の状態を知ることは有用である。特定の装置の属性は変化する可能性があるので、ある時点における正しい属性を知ることは、同じマシーンまたはユーザに係るイベントを相互に関連付けるために有用である。
【０００７】
第1のマシーンのユーザが第2のマシーンにログインしようとしている場合について説明する。ユーザが5分間に10回ログインを試みたもののすべてログインに失敗した場合、このような出来事はアタックを意味する可能性があるので、検討のために該出来事をフラグで示すべきである。ここで、失敗した各ログインが前記第1のマシーンのIPアドレスを含むメッセージを発生するものと仮定する。前記第1のマシーンが失敗した10回ログインのすべてについて同じIPアドレスを有する場合、アタックであると認定される。一方、前記第1のマシーンがアタック中にIPアドレスを変更した場合、いくつかのメッセージは第1のIPアドレスを示し、他のメッセージは第2のIPアドレスを示すものとなる。どのIPアドレスも10回ログインのすべてについて使用されたものではない場合、検討のためのフラグ指示はなされない。これは、見逃し(false negative)と呼ばれている。
【０００８】
このような状況下において、アタック(アタックと思われる試み)時におけるネットワークの状態を知ることは有用である。例えば、各失敗したログインメッセージ発生時において、前記IPアドレスがどの装置(例えば、MACアドレスまたはホスト名に基づく)に割り当てられているかを知ることは有用である。これが知られている場合、たとえ前記失敗したログインが異なるIPアドレスからのものであったとしても、該IPアドレスから同一の装置を突きとめることができ、アタックが特定され得る。これは、MACアドレスおよびホスト名がIPアドレスほど変化しないという事実によって可能になる。換言すれば、IPアドレスは、MACアドレスおよびホスト名より変化しやすい。
【０００９】
なお、IPアドレスは変更は誤認警報を生じることもある。上記の例と同様な考え方で、1つのソース装置から4回の失敗したログインがあり、他のソース装置から6回の失敗したログインがあり、各前記ログインが5分間の期間に同一のマシーンに対して行われた場合を説明する。これらのソース装置は異なるものであり、同時に同一のIPアドレスを有したものではないが、各前記ソース装置はログイン失敗を生じたときに同じIPアドレスを有していた。この同じIPアドレスは10個の失敗したログインのすべてに存在したので、この出来事は検討のためにフラグで示される。これは誤検出(false positive)と呼ばれている。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従って、従来より要求されているのは、状態データがセキュリティ情報/イベントと共にリアルタイムに使用可能なよう、効率的に、変化する状態データを維持し、該状態データに対してクエリーを行う方法である。
【課題を解決するための手段】
【００１１】
ネットワークの状態は時間と共に変化する。特に、各装置の状態は時間と共に変化する。(インターネットプロトコル(IP)アドレス)のような状態属性が時間と共に変化すると、その属性の特定の値が、“セッション”と称される特定の期間有効になる。一般的に、セッションは、特定の期間有効な2つの要素(例えば、装置とIPアドレス、または、人とアセット)間の関連付けとして考えられ得る。
【００１２】
セッション情報は、単独で、または、他の情報(例えば、データストアまたはネットワークおよび/またはネットワーク装置から収集されたセキュリティ情報/イベント)と共には使用可能である。セッション情報は、相関、会計検査、動作とユーザとの関連付け、ユーザとビジネス上の役割、装置間の識別、ユーザおよび/または役割に基づく会社方針の実行、イベントのフィルタリング、報告等に使用されることができる。アタックまたは特異な挙動を特定するためのルールに従って、セッション情報とその他の情報と相関させることができる。上述のように、セキュリティ情報/イベントは、ネットワーク動作が発生した時を示すタイムスタンプを含む。これらのイベントがセッション情報と相関させられるとき、該セッション情報は、前記タイムスタンプの時点で有効であったセッションを示す。セッションの各種類ごとに、セッションテーブルが維持される。セッションテーブルは1つまたは複数の記録を含み、各前記記録はセッションを示す。
【００１３】
これらのフィールドは、セッション記録情報のスキーマ(schema)を構成する。各スキーマは、3種類のフィールド、すなわち、キーフィールド、値フィールドおよびタイムスタンプフィールドを含む。セッション情報は、問い合わせすなわちクエリー(query)/検索処理をサポートするために、キーおよび値として記述されている。
【００１４】
セッションテーブルは、フィルタと関連付けられる。該フィルタは、前記セッションテーブルによって管理されるデータ(例えば、該テーブルに記憶された記録について使用可能な1組のキー)を定義する1組の条件を記述する。セッション情報の不必要な検索が除去されるので、該フィルタを使用することによって、利用可能なセッション情報に対してイベントを評価するのに必要な時間を減少することができる。
【００１５】
セッションテーブルにデータを格納する1つの方法は、セキュリティ情報/イベントに含まれるデータを使用する方法である。セッション情報に関係するイベントを特定し、セッション情報を抽出し、(例えば、セッション記録を作成し、修正しまたは終了することによって)該セッション情報を使用してセッションテーブルを修正するためのルールが作成される。セッションを開始して終了するイベントに頼ると、不正確なセッションテーブルが作成される恐れがある。これらの問題は、ルールを使用して受け取り済みのイベントに基づいて黙示的にセッションの境界を決定することによって対処可能である。
【００１６】
セッションが開始または終了する時とこの情報がセッションテーブルに記録される時との間に遅延が起こり得る。ときどき、このような遅延は小さい。この状況において、セキュリティイベントを該セッションイベントと相関させようと試みる前に待つことが有用であることがある。遅延が大きいこともある。この場合、その時間インターバルのセッション情報と様々なセキュリティイベントとの間の相関が既に試みられているので、セッション情報は"遅れて"到着することになろう。一実施の形態によると、このような状況において、遅れて受け取られた前記セッション情報を活用するために、再び相関が行われる。
【００１７】
セッションテーブルは、各セッションテーブルパーティションにおける記録数が減少させられるよう区分(パーティション)される。これにより、各クエリーを実行するために必要とされる資源の量が減少する。処理中のセッションが現在のパーティションに移動されるよう、セッションテーブルが定期的に処理される。“セッションロールアップ”と呼ばれるこの特徴は、セッションが処理中である場合、その記録が現在のパーティションに位置することを保証する。換言すれば、ライブセッション情報は、該情報が現在のパーティションですぐ利用可能なよう前のパーティションから現在のパーティションへ(上述の如く揮発性メモリに格納される)“ロールアップ”させられる。セッションロールアップは、現在のパーティションのみがクエリーされればよいので、セッションロールアップは、処理中のセッションにアクセスするのに必要とされる資源の量を減少させる。
【図面の簡単な説明】
【００１８】
【図１】図1は、互いに異なる種類のセッション情報についてのスキーマの例を示す。
【００１９】
この図は実施の形態を例示するものであり、以下の説明から、ここで例示する構成および方法の他の実施の形態が本発明の原理から逸脱することなく採用されてよいことが容易に当業者に理解されよう。
【発明を実施するための形態】
【００２０】
本発明のシステムを様々な図示例を参照して説明するが、これらの例は本発明のより広い精神および範囲を制限するよう解釈されるべきではない。例えば、ここで示される例は、セキュリティ情報/イベント、セッションテーブルおよび記録について説明しているが、これらは本発明の一実施の形態にすぎない。本発明の一般概念および範囲は、はるかにより広いものであり、コンピュータに基づくまたはネットワークに基づくセキュリティシステムにも及ぶ。また、本発明をさらに説明するために、本システムの構成要素に対して授受されるメッセージの一例、および、本システムの構成要素によって使用されるデータ・スキーマの一例が説明されているが、これらは本発明のすべてを含む包括的な例ではない。
【００２１】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータについての処理のアルゴリズムおよび記号表現についてなされている。これらのアルゴリズムおよび記号表現は、コンピュータサイエンスの当業者がかれらの作業内容を他の当業者に最も効果的に伝えるために使用される手段である。ここでは、また、一般的には、アルゴリズムとは、所望の結果に至る首尾一貫したシーケンスである。ステップとは、物理的数量の物理的操作を必要とする工程である。必ずしもそうではないが、通常、これらの数量は、記憶され、伝送され、組合せられ、比較されおよびその他の方法で操作されることが可能な電気的または磁気的な信号の形態をとる。これらの信号をビット、数値、文字、用語、番号等として言及することは、主に一般的な用法上の理由で、折にふれて便利であることが知られている。しかしながら、これらの用語およびこれらに類似した用語は、適当な物理的数量に対応付けられるものであり、これらの数量に適用される単に便利なラベルである。特にそうでないと明記する場合を除き、本発明の説明全体を通じて、“処理”、“計算”、“算出”、“判定”、“指示内容”等の用語の使用は、コンピュータシステムのレジスタおよびメモリ内において物理的(電子的)数量として表現されているデータを操作して、コンピュータシステムのメモリもしくはレジスタ、または、その他の情報記憶装置、伝送装置もしくは表示装置内における同様に物理的数量として表現されるその他のデータに変換するコンピュータシステムまたはこれと同様な電子計算装置の動作および処理を意味する。
【００２２】
上述の如く、本発明の一実施の形態はコンピュータによって読み取り可能な命令であるコンピュータソフトウエアとして実現され、該コンピュータソフトウエアは、1つまたは複数のコンピュータプロセッサ/システムによって実行された場合、該プロセッサ/システムに対して指定された動作を行うよう指示する。このようなコンピュータソフトウエアは、例えば、ハードドライブ、CD-ROM、DVD-ROM、読み取り専用メモリ、読み書きメモリ等の1つまたは複数のコンピュータによって読み取り可能な媒体に常駐される。このようなソフトウエアは、1つまたは複数のコンピュータによって読み取り可能な媒体に分散されてよく、1つまたは複数のコンピュータネットワーク(例えば、インターネット)を介してダウンロードできるようにされてもよい。その形態に関わらず、ここで説明されているコンピュータプログラミング、レンダリングおよびプロセシング技術は、本発明の特徴を実現するために使用可能な各種プログラミング、レンダリングおよびプロセシングの単なる一例である。これらの例は本発明の範囲を制限するものではなく、以下の説明に続く特許請求の範囲を参照することにより最もよく理解される。
セッションの序説
【００２３】
上述のように、ネットワークの状態は、一定ではなく、時間とともに変化する。特に、各装置の状態は時間とともに変化する。(インターネットプロトコル(IP)アドレス等の)状態属性が時間とともに変化すると、該属性の特定の値が特定の期間有効となるが、これを“セッション”と言う。セッションに関連する情報(“セッション”情報)は、例えば、該セッションの開始を示す第1のタイムスタンプと、(該セッションが終わった場合)該セッションの終了を示す第2のタイムスタンプと、セッション記録(後で説明する)の作成を示す第3のタイムスタンプと、該セッションの期間中に有効な1または複数のデータとを含む。
【００２４】
ここで、ダイナミックホストコンフィギュレーションプロトコル(DHCP)リースを介してIPアドレスを受け取った装置について説明する。前記1または複数のデータは、a) IPアドレス(および、該IPアドレスが全世界的にユニークすなわち唯一ではない場合には、該IPアドレスを含むネットワークゾーン)、ならびに、b) 該IPアドレスが割り当てられた装置の指示内容(例えば、該装置のホスト名および/または媒体アクセス制御(MAC)アドレス)を含む。(ネットワークゾーンはネットワークの一部分である。ラベルは、ネットワークゾーンを示すものであり、プライベートアドレス間の識別をするために使用される)。同様に、仮想プライベートネットワーク(VPN)ログインを介してIPアドレスを受け取った装置について説明する。前記1または複数のデータは、上記a)およびb)に加えて、VPNログインを開始するために使用されたユーザ名を含むことがある。その他の例として、ネットワークアドレス変換(NAT)を介してIPアドレスによって特徴付けられた装置について説明する。ここでは、前記1または複数のデータは、a) IPアドレス(および、該IPアドレスが全世界的に固有または唯一ではない場合には、該IPアドレスを含むネットワークゾーン)、ならびに、b) 該IPアドレスが変換によって割り当てられた装置の指示内容(例えば、該装置のホスト名および/または実際のIPアドレスならびにソースポート)を含む。
【００２５】
セッションを使用して、その他の装置状態属性がモデル化され得る。他のユーザが第2の装置(“ソース装置”)からログインすることを可能にする第1の装置(“デスティネーション装置”) について説明する。前記1または複数のデータは、a) IPアドレス(および、場合によっては、ネットワークゾーン)、b) 前記ソース装置の指示内容(例えば、該ソース装置のホスト名および/またはIPアドレスならびにネットワークゾーン)、ならびに、c) その他のログイン情報(例えば、前記ソース装置で使用されるユーザ名および/または前記デスティネーション装置で使用されるユーザ名)を含む。
【００２６】
上述のセッション情報はネットワーキングに関するものであるが、多くの異なる種類の情報が、特定の期間有効となり、従って、セッションを使用してモデル化され得る。アセット(例えばコンピュータ)は、人または構成要素によって所有されまたは該人または構成要素に割り当てられることができる。人は、物理的位置に存在可能である。人には電話番号が割り当て可能である。これらの状態の各々は、一時的なものであり、セッションを使用してモデル化され得る。
【００２７】
一般的に、セッションとは、特定の期間有効である2つの構成要素(例えば、装置とIPアドレス、または、人とアセット)の間の関係として考えることができる。セッション情報は、単独で、または、他の情報(例えば、ネットワークおよび/またはネットワーク装置から収集された他のデータストアまたはセキュリティ情報/イベント)と共には使用可能である。セッション情報は、相関、会計検査、動作とユーザとの関連付け、ユーザとビジネス上の役割、装置間の識別、ユーザおよび/または役割に基づく会社方針の実行、イベントのフィルタリング、報告等に使用されることができる。例えば、従業員が事務所に入ったり出たりするときに彼らのIDカードを機械に通すことが義務付けられている場合、従業員の平均的な勤務時間および従業員が事務所に入ったり出たりする時間パターンのような報告が作成され得る。
【００２８】
その他の例として、アタックまたは特異な挙動を特定するためのルールに従って、セッション情報とその他の情報と相関させることができる。上述のように、セキュリティ情報/イベントは、ネットワーク動作が発生した時を示すタイムスタンプを含む。これらのイベントがセッション情報と相関させられるとき、該セッション情報は、前記タイムスタンプの時点で有効であったセッションを示す。前記相関の例としては以下のものがある。
【００２９】
a) 特定の人に関連付けられたイベントを特定する。装置/人セッションテーブルは、どの装置が該人によって所有され、または、該人に割り当てられているのかを判定する。ログインセッション情報は、どの装置が該人の装置によってログインされたのか、および、どの装置がそれらの装置からログインされたのか、等を判定する。それらの装置から発生したイベントが特定される。
【００３０】
b) 前記人の位置以外の位置から開始されたログインを特定する。ログインセッションテーブルは、どのユーザ名およびソース装置がターゲット装置にログインしたのかを判定する。データストアは、どの実際の人が前記ユーザ名に対応するのか、および、ソース装置がどこに位置するのかを判定する。位置/人セッションテーブルは、(例えば、部屋または建物にアクセスするためのバッジまたはIDカードの最近の機械通過に基づいて)実際の人がどこに位置するのかを判定する。該実際の人の位置は前記ソース装置の位置と比較される。
【００３１】
c) VPNを介してネットワークにアクセスしているマシーンからのアタックの移動平均を求める。該アタックに関するメッセージに含まれるIPアドレスは、VPNセッションテーブルに格納されたIPアドレスと比較される。
【００３２】
d) VPNを介してネットワークにアクセスしているユーザからのアタックの移動平均を求める。該アタックに関するメッセージに含まれるIPアドレスは、VPNセッションテーブルに格納されたIPアドレスと比較される。該記録において一致するユーザ名が求められる。
【００３３】
e) マシーンがアタックを開始した時にマシーンにログインしたユーザを特定する。該アタックに関するメッセージは、該アタックを開始した装置の指示内容および該アタックの開始を示すタイムスタンプを含む。ログインセッションテーブルは、どのユーザネームがその時点でその装置にログインしたのかを判定する。
【００３４】
一実施の形態において、ルールは、集合、グループ分けおよび要因等のその他の構成要素と任意に組み合わされた1組の簡単なまたは複雑な条件からなる。ルールは、特定の条件およびパターンについての入力イベントを評価すること、アクティブリスト、セッションリストおよび脅威レベル計算のような構成要素のみならずルール相関を使用して、互いに異なるイベントからの情報を相関させること、イベントの意義についての意味を推論すること、イベントに応じてリアルタイム動作を開始する等の多くの態様で使用可能である。
【００３５】
上述のような相関およびルールについては、2002年12月2日に出願された米国特出願No.10/308,415に詳細に説明されており、該米国特出願No.10/308,415は、その出典を記載することによって本明細書の一部とする。
セッションデータを記憶するためのフレームワーク
【００３６】
セッションの各種類ごとに、セッションテーブルが維持される。例えば、1つのセッションテーブルは装置およびIPアドレスに関するセッション情報を維持し、他1つのセッションテーブルは人およびアセットに関するセッション情報を含む。セッションテーブルは1つまたは複数の記録を含み、各前記記録はセッションを示す。例えば、装置/IPアドレスセッションは、特定の装置に特定のIPアドレスが割り当てられた期間を記述する。この記録は、装置/IPアドレスセッションテーブルに記憶される。一実施の形態において、セッションテーブルはセッションリスト(Session List)に類似しており、該セッションリストは、(カルフォルニア州CupertinoのArcSight, Inc.から入手可能な) ArcSight (商標) Enterprise Security Manager (ESM)4.0の特徴である。
【００３７】
上述の如く、セッションテーブルは、例えば、セッションの開始を示す第1のタイムスタンプと、(該セッションが終わった場合)該セッションの終了を示す第2のタイムスタンプと、セッション記録(後で説明する)の作成を示す第3のタイムスタンプと、該セッションの期間中に有効な1または複数のデータとを含む。この情報はセッション記録に記憶される。なお、ネットワークの待ち時間(レイテンシー)は、セッションの開始と該セッションに対応する記録の作成との間に時間ギャップを起こすおそれがある。
【００３８】
セッション記録情報は、様々なフィールドに記憶される。これらのフィールドは、該セッション記録情報のスキーマを構成する。互いに異なる種類のセッション情報は、互いに異なるスキーマを有することができる。図1は、互いに異なる種類のセッション情報についてのスキーマの例を示す。図1に例示したスキーマは、DHCP、VPN、NAT、ログイン、アセット所有(Asset Ownership)である。図1において、各矩形はフィールドを示す。
【００３９】
各スキーマは、3種類のフィールド、すなわち、キーフィールド、値フィールドおよびタイムスタンプフィールドを含む。一実施の形態において、セッション情報は、問い合わせすなわちクエリー(query)/検索処理をサポートするために、キーおよび値として記述されている。(クエリー処理は、セッションテーブルに記憶されている情報にアクセスするために使用されるものであるが、後で詳述する)。この実施の形態において、各セッションテーブルは、キー(“キーフィールド”)として使用される1または複数の記録フィールドを指定する。1または複数の他の記録フィールドは、値(“値フィールド”)として使用される。例えば、装置/IPアドレスセッションテーブルにおいて、IPアドレス(および、おそらく、ネットワークゾーン)はキーとして使用可能であり、他のセッション情報は数値として使用可能である。
【００４０】
タイムスタンプフィールドは、開始時刻(Start Time)フィールドと、終了時刻(End Time)フィールドおよび作成時点(Creation Time)フィールドとを含み、これらのフィールドの各々は、上述のようなタイムスタンプを含む(ただし、該セッションが終わっていないときには、終了時刻フィールドは空き状態となる)。前記開始時刻フィールドの値および終了時刻フィールドの値は、任意の時間インスタンスにおける任意のキーについての有効なセッションを特定するために使用される。例えば、ある1つのキーおよび特定のタイムスタンプについて説明すると、該キーが数組の値フィールドにマッピングされている場合、これらの値フィールドのうちの適当な値フィールドは、その開始時刻および終了時刻が当該タイムスタンプを囲む値フィールドである。
【００４１】
図1は、各スキーマごとのキーフィールド、タイムスタンプフィールドおよび値フィールドを示す。1または複数のキーフィールドの指示内容は、セッションフィールドスキーマの一部でもある。
【００４２】
このようにして、前記セッションテーブルは、キーを数値にマッピングまたは結び付けるキー数値マッピングとして機能する。例えば、セッションクエリーは1または複数のキー(クエリーキー)を含み、クエリー結果は、前記1または複数のキーに結び付けられた1または複数の値を含む。セッションは、2つの要素間の関連付けとして考えられ得るので、1つの要素は前記キーによって示され、他の要素は前記値によって示される。
【００４３】
いくつかのフィールドに含まれる情報は、互いに異なるセッション(故に互いに異なる記録)間で同じであることがある。例えば、ある日に1つの装置に第1のIPアドレスが割り当てられ、他の日に第2のIPアドレスが割り当てられた場合、各セッション記録は、該装置について同じの情報(例えば、該装置のMACアドレスまたはホスト名)を含むことになる。同様に、ある日にIPアドレスが第1の装置に割り当てられ、他の日に第2の装置に割り当てられた場合、該IPアドレスについて同じの情報を含むことになる。2つの記録が同じフィールド情報を含み、このフィールド情報がキーを決定する場合、その1つのキーは、2つの異なる情報組(各セッションごとに1組)にマッピングされる必要がある。この機能は、例えば、前記情報組をリストに入れて前記キーの数値をそのリストに入れることによって実現可能である。前記開始時刻フィールドの数値と終了時刻フィールドの数値は、任意の時間インスタンスにおいてどのセッション情報組が有効であるかを特定するために使用される。一実施の形態において、前記セッション情報組は、各セッションの開始時刻に従って、前記リスト内でソートされる。このようにして、検索を行うために必要な時間を減少させられる。
【００４４】
一実施の形態において、セッションテーブルはハッシュマップ(hashmap)として実現され、検索のために使用されるキーは、すべてのキーフィールドのハッシュコードに基づいて決定されるハッシュコードである。この実施の形態において、ハッシュマップのキーは、キーフィールド値の組(tuple)として考えられ得る。
【００４５】
ハッシュマップの数値は、1または複数のセッション情報組のリストを示すデータ構造(“SessionIntervalDataStructure”)である。これは、連鎖(chained)ハッシュテーブル技術に類似している。一実施の形態において、該データ構造内の記入項目(エントリ:これらの各々は1組のセッション情報である)は、区間木(interval tree)は、区間を保持するために使用される整列したツリーデータ構造である。区間木は、特定の区間またはポイントと重なるすべての区間を効率的に検出することを可能にする。
【００４６】
ここで、エントリの区間は、そのセッションの開始時刻および終了時刻をエンドポイントとして使用する。セキュリティイベントをセッションテーブルに記憶された情報と相関させるためには、先ず、当該セッションが特定されなければならない。一実施の形態において、前記終了時刻は、前記セキュリティイベントに適用可能な適当なエントリ(セッション)を選択するために前記区間を合わせるために使用される。エントリがオープンエンドである(すなわち、当該セッションが未だ終了していない)場合、最大時間が区間終了時間として使用される。区間木を示すために使用されるデータ構造は変化可能である。一実施の形態において、テーブルごとおよびキー組ごとに予想されるエントリの数が制限されている場合、アレイに基づく手段が使用される。
【００４７】
セッションテーブルを記憶するために必要されるメモリは、該テーブルにおける記録の数に比例する。換言すると、メモリ要件はO(n)に従って増大し、この場合、nは前記セッションテーブルについてメモリにロードされた記録の数を示す。検索時間に関して、mが前記セッションテーブルにおける(キーフィールド組に基づく)ユニークなキーの数を示し、pはユニークなキーごとの平均的なエントリ数を示す場合、検索を実行するために必要な時間はO (logp)であり、ここで、m * p = O (n)である。
【００４８】
セッションテーブルについて実行される共通の処理およびそれらの時間順序複雑度は次の通りである。(例えば、所与のイベントと相関させるために)セッション値フィールドに対するクエリーの実行はO (logp)である。記録の終了時刻の更新はO (logp)である。新たな記録の挿入はO (logp)である。これらの低い時間順序複雑度は、セッション情報が相関等に使用されるためにリアルタイムに入手可能なよう、セッションテーブルがリアルタイムにクエリーされて維持されることを可能にする。
【００４９】
特定のセキュリティイベントに適用可能なセッション情報を読み出すために、従属変数関数が定義される。一実施の形態において、この定義は、前記従属変数の名前、前記セッション情報を読み出すために使用されるセッションテーブル、および、該セッションテーブルにおけるキーフィールドに対するイベントフィールドのマッピングを含む。この定義に基づき、前記セッションテーブルにおいて対応するエントリが特定され、相関に使用されるよう利用可能になる。
【００５０】
互いに異なるソースからセッション情報にアクセスするために、従属変数は連鎖されることができる。ユーザは、情報を検索する多数のデータソースのみならず、これらのデータソースが使用されるべき順序を指定できる。例えば、ユーザは、DHCP情報およびVPN情報の両方が利用可能な場合、これらの情報のいずれか一方からMACアドレスが読み出され、しかる後、異種のソースからの情報と組み合わされて相関に使用される。
【００５１】
一実施の形態において、セッションテーブルがフィルタと関連付けられる。該フィルタは、前記セッションテーブルによって管理されるデータ(例えば、該テーブルに記憶された記録について使用可能な1組のキー)を定義する1組の条件を記述する。例えば、前記テーブルがDHCP情報を記憶しており、前記キーがIPアドレスである場合、前記フィルタは、IPアドレスの範囲(例えば、DHCPサーバによって割り当て可能なIPアドレス)を記述することができる。セッション情報の不必要な検索が除去されるので、該フィルタを使用することによって、利用可能なセッション情報に対してイベントを評価するのに必要な時間を減少することができる。該フィルタは、セッション情報が利用可能ではないイベントについてのセッションテーブルに対してクエリーを実行することを回避する。このようにして、フィルタは、テーブルに対するクエリーに関する門番として機能する。
【００５２】
一実施の形態において、フィルタは次のようにして実現される。セッションテーブルの検索が所望であるイベントが特定される。該イベント内に記憶されたデータに基づいて、クエリーキーが決定される。前記検索が実行される前に、前記クエリーキーは前記テーブルのフィルタに対して照合されることによってテストされる。該クエリーキーが前記テストで合格した場合、所望のデータが前記テーブルに記憶されてよく、検察が実行される。一方、該クエリーキーが前記テストで失格となった場合(例えば、IPアドレスキーが前記フィルタのIPアドレス範囲内ではない場合)、所望のデータは前記テーブルに記憶されず、前記検索は実行されない。
【００５３】
セッションテーブルには、様々な方法でデータが格納されてよい。1つの方法は、アーカイブのようなファイルからデータをインポートする方法である。任意のネットワーク装置上に存在することが可能なファイルは、任意のフォーマット(例えば、コンマ区切り形式(CSV))で任意種類の情報を含むことができる。例えば、前記ファイルは、セキュリティ情報/イベントと相関させられることが望まれている情報を含むデータストアによって出力されたものであってよい。組織内の従業員およびかれらの役割等の人的資源 (HR) 情報を含むデータベースについて説明する。このHRデータを前記データベースからファイルにエクスポートし、その後、該ファイルをセッションテーブルにインポートすることによって、前記データを相関等のためにリアルタイムに利用可能にすることができる。このデータは、例えば、装置またはIPアドレスではなく、ユーザのビジネス上の役割に基づくネットワークアクセス方針を実行するために使用可能である。
【００５４】
セッションテーブルにデータを格納するその他の方法は、ディレクトリサービスを使用してデータストアからデータを読み出す方法である。これらのディレクトリサービスは、Lightweight Directory Access Protocol (LDAP)またはX.500等の様々なプロトコルを介してアクセスされ得る。
【００５５】
さらにその他の方法は、1または複数のソフトウエアエージェント(例えば、ArcSight, Inc.から入手可能なSmartConnectors)を使用して、イベントの形態の所望のデータを送る。その後、1または複数のルールを使用して前記イベントを処理することができる。具体的には、前記ルールは、前記イベントからセッションデータを抽出し、該セッションデータをセッションテーブルに格納することができる。
【００５６】
さらにその他の方法は、前記セッションリストの根拠をなすデータ構造に前記セッションデータを直接に入力する方法である。例えば、前記セッションリストがデータベース(後述する)に格納されている場合、前記セッションデータは前記データベースに直接に入力されることができる。
【００５７】
セッションテーブルにデータを格納するさらにその他の方法は、セキュリティ情報/イベントに含まれるデータを使用する方法である。セッション情報に関係するイベントを特定し、セッション情報を抽出し、(例えば、セッション記録を作成し、修正しまたは終了することによって)該セッション情報を使用してセッションテーブルを修正することである。前記ルールは、イベントが発生する際に該イベントについて実行(“ライブモード”)、または、格納済みの過去のイベントについて実行(“バッチモード”)されることができる。
【００５８】
イベントに基づいてセッションテーブルにデータを格納する一例はDHCPスヌーピング (snooping) であり、該DHCPスヌーピングでは、DHCP情報(例えば、リース割り当てイベント)を使用してDHCPセッションテーブルを作成する。例えば、DHCP確認メッセージにより、ルールがセッションを作成して、開始する(すなわち、DHCPセッションテーブルに記録を追加する)。また、DHCPリリースメッセージにより、ルールがセッションを終了する(すなわち、前記DHCPセッションテーブルにおける既存の記録に終了時刻を追加する)。
【００５９】
セッションを開始して終了するイベントに頼ると、不正確なセッションテーブルが作成される恐れがある。例えば、ネットワークの待ち時間(レイテンシー)により、イベントが遅くおよび/または順序が狂って到着する恐れがある。さらに、任意のものであるDHCPリリースメッセージ等のいくつかのイベントが、全く到着しないこともある。これらの問題は、ルールを使用して受け取り済みのイベントに基づいて黙示的にセッションの境界を決定することによって対処可能である。一実施の形態において、セッションの境界は、重複していないセッション情報について決定される。
【００６０】
セッション情報は、関連する情報の種類に基づいて、重複していたり、重複していなかつたりすることがある。セッション情報が重複していない場合、これは、任意の時間インスタンスにおいて、ある特定のキーについて、ただ1つの有効セッションのみが存在し、(従って、ただ1つの有効セッション記録のみが存在する)ことを意味する。DHCP情報は、重複していないセッション情報の一例である。これは、ある特定のネットワークゾーンについては、任意の時間インスタンスにおいて、DHCPサーバによって、IPアドレス(キー)がただ1つの装置(数値)のみに割り当て可能であるからである。この割り当てはその後にその他の装置に可能であるが、その時までには、先の装置は同じIPアドレスをリリースしているであろう。VPN情報は、重複していないセッション情報のその他の例である。VPNソフトウエアは、任意の時間インスタンスにおいて、そのコンフィギュレーションに基づいて、ただ1つのユーザ/マシーンにのみIPアドレスを割り当てる。
【００６１】
セッション情報が重複している場合、これは、任意の時間インスタンスにおいて、ある特定のキーについて、多数の有効セッションのみが存在し、(従って、多数の有効セッション記録が存在する可能性がある)ことを意味する。ログイン情報は、重複しているセッション情報の一例である。これは、ある特定のネットワークゾーンについては、任意の時間インスタンスにおいて、多数の装置(値)によってログインされ得るからである。
【００６２】
セッション情報の重複してる/重複していないという特徴は、セッションテーブルが必要とされるとき、どのような種類の値が返されるのかに影響する。セッションテーブルが重複していない情報を含む場合、キー／タイムスタンプの対に基づく成功した検索は、ただ1組のセッション情報のみを返す。一方、セッションテーブルが重複している情報を含む場合、キー／タイムスタンプの対に基づく成功した検索は、多数組のセッション情報(例えば、上述の如くその記入項目が複数組のセッション情報であるリスト)を返す。
【００６３】
セッション境界の黙示的な決定は、黙示的なセッションの終了および黙示的なセッションの分割という2つの形態で行われる。黙示的なセッションの終了は、既存のセッションが実際にセッション終了イベントを受け取ることなく終了したと判定することからなる。既存のセッションについてのキーを含むセッション開始イベントが到着した場合、該キーの前のセッションが終了され、前記セッション開始イベントに含まれる情報を使用して新たなセッションが作成され、開始される。(“ライブ”または“進行中”のセッションとも呼ばれる処理中のセッション)は、その記録中に終了時刻タイムスタンプを含まないセッションである。)DHCPサーバはリース満了イベントを記録しないので、この種の到着するセッション開始イベントは、通常、DHCPセッション情報と共に発生する。
【００６４】
一実施の形態において、黙示的なセッションの終了は次のように行われる。セッション開始イベントが到着すると、そのキーフィールドが検出され、ハッシュコードを発生するために使用される。そして、当該セッションテーブルに、該ハッシュコードに対応する、前から存在する処理中のセッションが在るか否かがチェックされる。前から存在する処理中のセッションが見つかった場合、セッション情報は重複できないので、このセッションは終了させられなければならない。前記前から存在する処理中のセッションは、前記セッション記録の終了時刻フィールドにタイムスタンプを入力することによって終了させられる。そして、前記セッション開始イベントの情報を使用して、(前記ハッシュコードに対応する)新たなセッションが作成され、開始される。
【００６５】
黙示的なセッションの終了の例：
セッションテーブル内の記録に従って、2007年10月12日午後10時において、特定のネットワークゾーン(キー)内のIPアドレスが、特定のホステ名およびMACアドレス
(192.168.0.1, Internal Zone 1) => (hostname1, 11:11:11:11:11:11)  に割り当てられる。2007年10月12日午後11時において、同一ゾーン(キー)における同一IPアドレスを異なる装置
(192.168.0.1, Internal Zone 1) => (hostname2, 22:22:22:22:22:22)   にマッピングするセッション開始イベントが到着する。このセッション開始イベントにより、(2007年10月12日午後11時の終了時とともに) 第1のセッションが終了させられ、(2007年10月12日午後11時の開始時とともに) 第2のセッションが作成され、開始させられる。
【００６６】
黙示的なセッション分割は2つの形態で行われる。第1の形態において、既に終了したセッションについてセッション終了イベントが到着する。新たに到着したイベントにおけるセッション終了時刻が対応するセッション記録に現在格納されている終了時刻より早い場合、該新たなセッション終了時刻が前記セッション記録に格納される。例えば、その前のセッション終了時刻が黙示的なセッション終了を使用して得られたものである場合、このシナリオが発生し得る。
【００６７】
黙示的なセッションの分割の例 (第１の形態) ：
セッションテーブル内の記録によると、2007年10月12日午後11時にセッションが終了した。このセッション記録に対応し、2007年10月12日午後10時30分の終了時刻を示すセッション終了イベントが到着する。該セッション記録における終了時刻は、2007年10月12日午後11時から2007年10月12日午後10時30分に変更させられる。
【００６８】
黙示的なセッションの分割の第2の形態において、そのタイムスタンプが既存のセッションに対応するセッション開始イベントまたはセッション終了イベントが到着する。この既存のセッションは、進行中のセッションまたは終了したセッションであり得る。前記既存のセッションに格納された値が前記イベントに格納された値とは異なる場合、前記既存のセッションが分割され、新たなセッションが作成され、その途中から開始させられる。
【００６９】
黙示的なセッションの分割の例 (第2の形態) ：
セッションテーブル内の記録によると、セッションS1が、2008年1月1日午後1時に開始し、2008年1月1日午後10時に終了し、そして、セッションS2が、2008年1月1日午後11時に開始するよう、作動中である。2008年1月1日午後6時に開始するセッションS3の存在を示すイベントが到着する。セッションS1は、2008年1月1日午後1時に開始し、2008年1月1日午後6時に終了するよう分割される。セッションS3は、2008年1月1日午後6時に開始し、2008年1月1日午後11時に終了するよう作成される。セッションS2は、2008年1月1日午後11時に開始する作動中のセッションのままである。
【００７０】
セッションが開始または終了する時とこの情報がセッションテーブルに記録される時との間に遅延が起こり得る。ときどき、このような遅延は小さい。例えば、セッション開始イベントが日本における装置によって発生させられると、該イベントが米国において収集され、処理されるのに1秒またはそれ以上要することがある。この場合、セキュリティイベントを該セッションイベントと相関させようと試みる前に待つことが有用であることがある。前記相関を行う試みが早すぎると、該セッションのデータは、失効していたり、存在しないことさえあるかもしれない。セキュリティイベントを相関させるのを待つことを、該セキュリティイベントを“パーキングする”という。一実施の形態において、セッションデータが存在する場合、セキュリティイベントは、最小の待ち時間だけパーキングさせられる。該セッションデータは、(必要な場合)前記待ち時間の間に更新され、相関のために利用可能になることが望ましい。一実施の形態において、セッションデータが存在しない場合、セキュリティイベントは、最大の待ち時間パーキングさせられる。セッションデータが前記待ち時間の間にロードされ、相関のために利用可能になることが望ましい。
【００７１】
前記遅延が大きいことがある。例えば、従業員識別システムからのセッション情報は、リアルタイムにロードされる代わりに、(バッチ処理により)毎夜インポートされることがある。これらの状況において、その時間インターバルのセッション情報と様々なセキュリティイベントとの間の相関が既に試みられているので、セッション情報は"遅れて"到着することになろう。一実施の形態によると、このような状況において、遅れて受け取られた前記セッション情報を活用するために、再び相関が行われる。例えば、過去のセキュリティイベント(例えば、過去2時間に受け取られたセキュリティイベント)のウィンドウ上において、相関ルールが再実行され得る。相関ルールが再実行されるべき状況(およびどのイベントについて再実行されるべきか)は、設定によって可変である。
実施の詳細
【００７２】
上述の如く、セッションデータはセッションテーブルに格納される。具体的には、セッションデータは各種類ごとに、異なるセッションテーブルに格納される(DHCPセッションについて1つのセッションテーブル、ログインセッションデータについて1つのセッションテーブル)。セッションデータを後で参照できるようにされるために、前記セッションテーブルは、ハードドライブのような持続的で不揮発性の記憶装置に格納される。一実施の形態において、前記セッションテーブルは、リレーショナルデータベースのようなデータベースに格納される。
【００７３】
セッションテーブルにおける記録数は時間の経過と共にかなり増加し、セッションテーブルは極めて大規模なものになることがある。大規模なテーブルについてクエリーを実行することは、小規模なテーブルについてクエリーを実行することよりも、(プロセッサ時間のようなコンピュータ資源に関して)はるかにコスト高となる。一実施の形態において、セッションテーブルは、各セッションテーブルパーティションにおける記録数が減少させられるよう区分(パーティション)される。これにより、各クエリーを実行するために必要とされる資源の量が減少する。
【００７４】
一実施の形態において、前記セッションテーブルは、セッション開始時刻に基づいてパーティション区分される。なお、セッションテーブルにおける各記録は開始時刻タイムスタンプを含む。このタイムスタンプの値は、当該記録がどのパーティションに格納されるのかを決める。一実施の形態において、各パーティションは、24時間の期間を示す。例えば、第1のパーティションは、2007年1月1日午前12時から2007年1月1日午後11時59分までを示し、第2のパーティションは、2007年1月2日午前12時から2007年1月2日午後11時59分までを示す。この実施の形態において、1年分のセッションデータは、1つの巨大なセッションテーブルではなく、365個のパーティションに格納される。
【００７５】
相関は、バッチモードまたはリアルタイムモードで実行可能である。バッチモードにおいては、セキュリティ情報/イベントが受け取られたとき、該セキュリティ情報/イベントが格納される。その後、このようにして格納された該セキュリティ情報/イベントは、セッション情報(具体的には、当該イベントのタイムスタンプで有効なセッション情報)と相関させられる。
【００７６】
リアルタイムモードにおいては、セキュリティ情報/イベントが受け取られたとき、該セキュリティ情報/イベントは、リアルタイムまたは略リアルタイムにセッション情報と相関させられる。この相関が略リアルタイムに行われるためには、セッションデータが、リアルタイムに維持されなければならず、且つ、リアルタイムクエリーをサポートしていなくてはならない。毎秒数千ものイベントが発生され、各イベントはセッション情報に対する1または複数の参照(例えば、IPアドレスが割り当てられたMACアドレスを特定するために使用される1または複数のIPアドレス、および、ホストにログインしたユーザを特定するために使用される1または複数のホスト名)を含むことがあるので、これを実現するのは大変難しい。例えば、5,000イベント/秒のイベント発生率で2つのセッション参照/イベントの場合、10,000セッション参照/秒となる。
【００７７】
一実施の形態においてアップデートおよび/またはクエリーのためにより速いアクセスをサポートするために、セッションテーブルの一部は揮発性メモリ(例えば、キャッシュまたはランダムアクセスメモリ(RAM))にも維持される。例えば、前記セッションテーブルが長期記憶装置において区分されている場合、現在のパーティション(またはその一部分)は、揮発性メモリにも格納される。一般的に、揮発性メモリにおけるセッションテーブルの一部分は、処理中のセッション、および、おそらくは、最近(例えば、最近10分以内に)終了させられたセッションを含む。ほとんどのリアルタイムアップデートおよびクエリーは処理中のセッションおよびクエリーに関するものなので、これらのセッションを揮発性メモリに格納することは、各リアルタイムアップデートおよびクエリーを実行するために必要とされる資源の量を減少させることになる。一実施の形態において、揮発性メモリに維持されるセッションテーブルの一部分は、当初、長期記憶装置からロードされる。揮発性メモリに格納される記録の数は、設定によって可変である。
【００７８】
長期記憶装置におけるセッションテーブルの整合性を維持するために、アップデート版が収集され、バッチ処理として定期的に前記セッションテーブルに適用される。例えば、アップデート版が1分の期間にわたって収集され、その後、バッチ処理として長期記憶装置内の前記セッションテーブルに適用される。
【００７９】
セッションテーブルがパーティション区分されている場合であっても、特定のセッションを探すことは依然として高くつく。例えば、セッションの開始時刻が未知である場合、各パーティションは見つかるまで探されなければならない。一実施の形態において、処理中のセッションが現在のパーティションに移動されるよう、セッションテーブルが定期的に処理される。“セッションロールアップ”と呼ばれるこの特徴は、セッションが処理中である場合、その記録が現在のパーティションに位置することを保証する。換言すれば、ライブセッション情報は、該情報が現在のパーティションですぐ利用可能なようにする前のパーティションから現在のパーティションへ(上述の如く揮発性メモリに格納される)の“ロールアップ”である。セッションロールアップは、現在のパーティションのみがクエリーされればよいので、セッションロールアップは、処理中のセッションにアクセスするのに必要とされる資源の量を減少させる。
【００８０】
セッションロールアップの後、過去のパーティションは終了したセッション(例えば、その記録が終了時刻タイムスタンプを含むセッション)のみを含むことになる。過去のパーティションはライブセッションデータを含まないので、これらのパーティションを除去または保存するのは容易である。
【００８１】
一実施の形態において、セッションロールアップは、スケジュールされたタスクを介して実現される。該タスクは、定期的に(例えば、前記パーティションが時間に基づくものである場合、各パーティション境界毎に)実行されるようスケジュールされる。具体的な期間は設定によって可変である。(パーティションが日付に基づいていることにより、且つ、セッションが2つの異なる日付においてライブであることによって)セッションが1つのパーティションから他のパーティションに延びている場合、該セッションはパーティション境界に基づいて多数のセッションに分割され、各セッションは異なるパーティションに格納される。
【００８２】
第1のパーティションは、2007年1月1日午前12時から2007年1月1日午後11時59分までを示し、第2のパーティションは、2007年1月2日午前12時から2007年1月2日午後11時59分までを示す。セッションロールアップは前記セッションを2つのセッション、すなわち、a) 2007年1月1日午後11時から2007年1月1日午後11時59分まで、および、b) 2007年1月2日午前12時から2007年1月2日午前1時に分ける。セッション(a)は終了したセッションとして前記第1のパーティションに格納され、セッション(b)は(これも終了したセッションとして)前記第2のパーティションに格納される。当該セッションがDHCP情報に関するものある場合、ある特定のIPアドレスおよびネットワークゾーンは、セッション分割に関わらず、2007年1月1日午後11時と2007年1月2日午前1時との間のタイムスタンプを有するすべてのイベントについての同一のホスト名およびMACアドレスに一致することになる。
【００８３】
他の例として、2007年10月1日午後2時に開始し2007年10月5日現在進行中のセッションに説明する。2007年10月5日にセッションロールアップを実行すると、前記セッションは5つのセッション(10月1日のもの、10月2日のもの、10月3日のもの、10月4日のもの、10月5日のもの)に分割される。最初の4つのセッションは、それぞれのパーティションに終了したものとして格納され、第5のセッション(10月5日)は、進行中のものとして処理中のパーティションに格納されることになる。
【００８４】
一実施の形態において、セッションロールアップは次のものを含む。最後のセッションロールアップ以後に開始したセッション(または、前のパーティションの間に開始したセッション)(これらのうちの早い方)について、どのセッションが処理中であるかを判定する。これらのセッションの各々について、パーティション境界に基づいて該セッションを多数のセッションに分割する。ある1つのセッションの終了した部分について、パーティション境界時刻に終了するよう、該部分を過去の部分に追加する。ある1つのセッションの進行中の部分について、パーティション境界時刻に開始するよう、該部分を現在のパーティションに追加する。
【００８５】
ある1つのセッション全体の長さを決定するために、前記分割されたセッションは組合せされることができる。具体的には、ある1つのセッションが特定の境界時刻に終了し、次のパーティションが前記特定の境界時刻に開始する同一のキーおよび値を有するセッションを含む場合、これらのセッションは互いに対応する。これらのセッションの持続時間は、全体的な(すなわち、分割されていない)セッションのー持続時間を特定するために組み合わせ可能である。
【００８６】
一実施の形態例において、多数のセッション部分に分割される場合、各セッション部分は、それがより大きなセッションの一部であることを示すために、なんらかの方法で注釈がつけられる。これは、例えば、全体的な(すなわち、分割されていない)セッションの持続時間を特定するとき、セッション部分同士を識別するのに役立つ。例えば、各セッション部分にフラグが付加される。その他の例として、全体的な(すなわち、分割されていない)セッションの開始時刻が各セッション部分の記録に付加される。この例において、対応するセッション部分は、同一のキーおよび値に加えて、前記全体的なセッションについての同一の開始時刻を有することになる。
【００８７】
以上本発明の好ましい実施の形態の動作について説明したが、ここでの説明は本発明の範囲を制限するものではない。本発明は、次の特許請求の範囲によってのみ限定されるものである。上記の説明から、本発明の精神および範囲に包含される多くの変更が可能であることが当業者に明らかであろう。
【図１】
2010511210.tif 000003
【国際調査報告】
2010511210.tif 000004