レポート:IPDBルールの構文

Document created by RSA Information Design and Development on Apr 20, 2018
Version 1Show Document
  • View in full screen mode

このセクションでは、Reporting Engineでサポートされるさまざまなルールの構文について説明します。

NWDBルールの構文

NWDBルールは、Reporting Engineでサポートされるルール構文の1つです。Reportingエンティティの実行時間を短縮するには、「レポートの概要」の「レポートに関する推奨事項」セクションを参照してください。

ルールは、ルールの結果セットを処理する関数です。レポートの出力を絞り込んだり、データのクエリや表示以外の機能をルールに追加したりすることができます。このようなルール アクションを組み合わせて使用すると、NetWitness Suiteによって収集された情報から重複を排除したり、情報をより有益な形で表現したりすることができます。

Reporting Engineでは、次のカテゴリのNWDBデータ ソースのルール構文をサポートしています。

  • select

    • 集計を行わないルール
    • 集計を行うルール
  • エイリアス
  • where
  • where句演算子
  • then
  • 件数]フィールド
  • ルール アクション
  • ルール演算子

Select句

Select句は、値のコンマ区切りのリストです。たとえば、sessionid、time、serviceを選択します。

NWDBルールのselect句には、次の2種類あります。

  • 集計を行わないルール
  • 集計を行うルール

集計を行わないルール

グループ化なしでルールを定義するときは、[サマライズ]フィールドで[なし]を選択します。集計を行わないルールでは、Select句で任意の数のメタを選択できます。たとえば、sessionid、time、serviceを選択します。 

For example for select service, sessionid, time in select clause

集計を行うルール

特定のメタおよびそれに関連づけられている集計値に対するクエリを実行するときは、集計ルールを使用する必要があります。集計された結果を取得するには、[サマライズ]フィールドで、3つのメタ(イベント数、パケット数、セッション サイズ)のいずれか、または[カスタム]を選択して、Select句に集計関数を含める必要があります。たとえば、ip.src、sum (ip.dst)を選択します。カスタム集計ルールが有効になっている場合、ユーザ インタフェースでは次のフィールドが入力されています。

  • Group By
  • Order By
  • セッション閾値

次の図は、集計ルールの[ルールのビルド]ビューを示しています。

Build Rule view for Aggregate Rule

クエリを実行できる集計値は次の2種類あります。

  • コレクション集計
  • メタ集計

コレクション集計

コレクション集計では、イベント、セッション、パケットに関連する集計を取得できます。次の値は、コレクションの集計でクエリできます。

  • イベント数:イベントの総数。
  • パケット数:パケットの総数。
  • セッション サイズ:全セッション サイズ。

これらのオプションは、[サマライズ]フィールドにリストされており、ルール内でいずれかを選択できます。
たとえば、[サマライズ]フィールドで、コレクションの集計(イベント数、パケット数、セッション サイズ)のいずれかを選択し、ip.srcを選択します。

Example for Collection Aggregation

メタ集計

メタ集計では、メタ値の集計を取得できます。次に示すのは、サポートされているメタ集計関数です。

  • sum(meta)
  • count(meta)
  • countdistinct(meta)
  • min(meta)
  • max(meta)
  • avg(meta)
  • first(meta)
  • last(meta)
  • len(meta)
  • distinct(meta)

サポートされるメタ集計関数

NWDBサービスでは、このリリースで次のメタ集計関数と構文をサポートしています。

                                                   
構文関数
sum(<meta>)

すべてのメタ値の合計

たとえば、select句でフィールドsum(payload)を指定すると、結果セットは、ペイロードのサイズの合計です。

注:sum集計関数で選択するメタ フィールドは、数値データ型である必要があります。

count(<meta>)

返されるメタ フィールドの合計数。

たとえば、select句でフィールドcount(ip.dst)を指定すると、結果セットは、ip.dst値が返される回数です。 

countdistinct(<meta>)

返される個別のメタ フィールドの合計数。たとえば、select句でフィールドcountdistinct(ip.dst)を指定すると、結果セットは、個別のip.dst値が返される回数です。

min(<meta>)

すべてのメタ値の最小値。

たとえば、select句でフィールドmin(payload)を指定すると、結果セットは、ペイロードの最小サイズです。

max(<meta>)

すべてのメタ値の最大値。

たとえば、select句でフィールドmax(payload)を指定すると、結果セットは、ペイロードの最大サイズです。

avg(<meta>)

すべてのメタ値の平均

たとえば、select句でフィールドavg(payload)を指定すると、結果セットは、ペイロードのサイズの平均です。

注:avg集計関数で選択するメタ フィールドは、数値データ型である必要があります。

first(<meta>)

最初に出現するメタ値。

たとえば、select句でフィールドfirst(ip.src)を指定すると、結果セットは、そのグループに対して最初に出現するip.srcです。

last(<meta>)

最後に出現するメタ値。

たとえば、select句でフィールドlast(ip.src)を指定すると、結果セットは、そのグループに対して最後に出現するip.srcです。

len(<meta>)

実際の値を返さずに、すべてのフィールド値をUInt32の長さに変換します。この長さは、実際の値を格納するためのバイト数で、メタ データベースに格納される構造の長さではありません。

たとえば、メタ値「NetWitness」の場合、長さは10が返されます。 IPv4フィールド(ip.srcなど)の場合は、すべて4バイトが返されます。

distinct(<meta>)

メタの個別の値。

たとえば、select句でフィールドdistinct(ip.src)を指定すると、結果セットは、そのグループに対してすべて個別のip.srcです。

[サマライズ]フィールドの[カスタム]フィールドを選択し、select句にメタとメタ集計関数を提供する必要があります。
Meta aggregate functions in the select clause

注:WHERE句ではメタ集計関数を使用できません。また、min_threshold/max_thresholdなどのルール アクションは、集計関数をフィルタするときに使用できます。「group by」を使用するときは、より絞り込んだwhere句を使用して、ルールのパフォーマンスを向上させることをお勧めします。

複数のメタの集計クエリ

複数のメタに対して集計クエリを実行するには、次のステップを実行します。

  1. [監視]>[レポート]を選択します。

    [管理]タブがハイライト表示され、[ルール]ビューが表示されます

  2. ルール ツールバーで、>[NetWitnessDB]をクリックします。

    たとえば、以下に示すハイライト表示されているフィールドに、次のメタを入力します。

    SELECT: ip.src, service, count(alias.host)
    ALIAS: Source IP Address, Service Type, count(alias.host)
    WHERE: ip.src = 59.96.136.142

    注:[エイリアス]フィールドには、Select句で使用されている列の名前を入力できます。Select句のいずれかのフィールドでエイリアスを指定していない場合は、デフォルトの説明が使用されます。たとえば、Select句にField1、Field2、Field3、Field4があり、エイリアスにはField1、Field3、Field4のみがある場合、Field2に対してはデフォルトの説明が使用されます。

  3. 画面下部の[ルールのテスト]ボタンをクリックします。

    [ルールのテスト]ページが表示されます。

    The Test Rule page is displayed

サマライズ 

[サマライズ]で、ルールの要約や集計のタイプを決定します。

               
名前構成
サマライズ

カスタム グループ化なしでメタに対してクエリを実行するには、以下を選択します。

  • なし:この場合、データはセッションによってグループ化されます。

コレクション(セッション/イベント/パケット)関連の集計を取得するには、次のいずれかを選択します。

  • イベント:イベントの総数。
  • パケット数:パケットの総数。
  • セッション サイズ:全セッション サイズ。

メタ ベースの集計を取得するには、次を選択します。

  • カスタム:これは、予期されるメタ集計関数が、ルールのselec句で定義されていることを示します。

Order By 

[整列]によって、結果セットをソートする方法が決まります。

                   
名前構成値
列名列名]は、結果をソートするための基準となる列の名前です。デフォルトでは、この値は空です。列をクリックすると、値は[サマライズ]フィールドに基づいて入力されます。
  • [なし]および[カスタム]の場合、値は、[選択]フィールドに基づいて入力されます。このリストから選択することも、カスタム名を追加することもできます。 
  • [イベント数]、[パケット数]、[セッション サイズ]の場合、使用できる値はTotalとValueです。 
  • Total - 集計値でソート
  • Value - メタごとのグループでソート
ソート基準ソート基準]によって、結果をソートする順序が決まります。値は次のとおりです。
  • 昇順
  • 降順

セッション閾値

[セッション閾値]フィールドに、選択したメタのスキャンを停止する
までの最適化設定を入力します。閾値は0(デフォルト)~2147483647の範囲の整数です。閾値0は、すべての一致するセッションをスキャンします。

注:ゼロ以外の値(ゼロより大きい値)を設定した場合、集計結果が不正確になることがあります。これは、集計値ではなく一意の値を調べる場合にのみ使用できます。

サポートされるwhere句

                   
構文説明
where <field1> [<field-operator>] <value1>,<value2>,<value3-value4> <logic-operator> <field2>,などとなります。where句はコンマで区切ったフィールドの値や範囲のリストで指定し、NwValues関数で使用します。where句では、文字列値を一重引用符で囲む必要があります。たとえば、where username = 'admin' && service = 22となります。
where <field1> [<field-operator>] <List1>レポートする値が複数ある場合、where句内でリストを使用できます。たとえば、where ip.src exists && alias.host exists && alias.host contains $[User Reports/List of Alias Host]となります。リストを使用する場合、$[<path>/<List name>]の形式で指定する必要があります。

where句では、メタ タイプに基づいた正しい構文であることを確認します。
例:
メタ タイプがテキストの場合、値をすべて引用符で囲みます。たとえば、username = ‘user1’。
メタ タイプがIPアドレス、Ethernetアドレス、数値の場合、引用符は使用しません。例:service = 80 && ip.src = 192.168.1.1。
メタ タイプが日付と時刻の場合、日付と時刻の形式が「YYYY-MM DD HH:MM:SS」であれば、引用符を使用します。
日付と時刻の形式が「1448034064」(EPOCH(1970年1月1日)以降の秒数)の場合、引用符は使用しません。

注:ルールでリストを使用する場合は、使用するメタ タイプに基づいて、リストの値が引用符で囲まれているか、または囲まれていないことを確認してください。[リストの定義]ページの[すべての値に対して引用符を挿入します]チェックボックス(詳細については、「ルールの構成」のリスト作成またはグループ作成のセクションを参照)を選択すると、すべてのリストの値に引用符が付きます。

サポートされるwhere句演算子

                                                   
構文説明
=指定した値と一致するフィールドを結果として返します。たとえば、tcp.dstport = 21-25,110は、TCP宛先ポートの21、22、23、24、25、110のいずれかのセッションを返します。
!=指定した値と一致しないフィールドを結果として返します。  たとえば、eth.type !=0x0800は、16進数値0x0800(10進数値の2048)以外のセッションを返します。これはすべて非IPベースのプロトコルです。
beginsテキストまたはバイナリ フィールドの先頭部分にある値を確認します。
contains部分的に一致するテキストまたはバイナリの値を検索します。
endsテキストまたはバイナリ フィールドの末尾にある値を確認します。
existsそのフィールド値が存在すれば、値にかかわらず、この演算はtrueと評価されます。
!existsそのフィールド値が存在しなければ、この演算はtrueと評価されます。
lengthフィールドの長さを評価します。たとえば、username length 20-uは、文字数が20以上のユーザ名を返します。
regexテキストまたはバイナリ値に対して正規表現による検索を実行します。
 
notnot演算子を使用して、句や条件を無効にします。たとえば、(not(user.dst ends "$"))では、ユーザ宛先の値が表示されません。

サポートされているthen句

               
構文説明
then <rule action>then句には、ルールの元の結果セットを処理するルール アクションが含まれます。このようにして、レポートの出力をより具体的にしたり、データのクエリや表示以外の機能をルールに追加したりすることができます。たとえば、dedup (filename)。

[件数]フィールド

これは、データベースからデータをフェッチするとき、クエリに対して設定する件数を示します。結果セットがイベント数、パケット数、セッション サイズによってソートされる場合、件数(=N)を指定すると、上位(下位)N個の値が返されます。結果セットをソートしない場合は、最初のN個の値が返されます。

ルール アクション

NWDBデータ ソースのルール構文は、次のルール アクションをサポートしています。

  • dedup
  • filter_on
  • filter_out
  • lookup_and_add
  • max_threshold
  • min_threshold
  • regex
  • sum_count
  • sum_values
  • show_whats_new

dedup (string field)

dedupは、ソートされていない結果セットから重複するエントリーを削除し、適切なデータだけを表示します。dedupルール アクションは、レポート内の特定のフィールドの重複するエントリーを削除し、最初に出現する値だけがレポートに表示されるようにします。

注:dedupルール アクションは、集計ルールと一緒に使用できません。

たとえば、個々のセッションで生成されるメタ データには重複が多いケースがあります。特に、DNSの検索が何度も行われるセッションや、さまざまなリソース(javascript、cssなど)が同じホストに何度もアクセスするWebセッションなどでその傾向があります。重複したホストのエントリーを削除するには、dedupルール アクションを使用します。

例:

次の例は、長くなる結果セットです。同じセッションで重複する値を削除することでトリミングできます。

Example of lengthy result set that can be trimmed by removing the duplicate values in the same session

次の図は、dedupルール アクションを使用して結果セットから重複するエントリーを削除する方法を示しています。

Example of dedup rule action to remove the duplicate entries from the result set

ルール結果セット内の各エントリーで重複する値が1つに減っていることが分かります。

Rule with Dedup Rule actions

filter_on (string filter, string field, bool matchExact)

filter_on は、 filter 条件を含まない値を結果セットから削除します。 結果セットに複数のフィールドが含まれる場合は、フィルタを適用する特定のフィールドを選択する必要があります。単一の結果セットに結果を追加するには、lookup_and_addなどの関数を含めます。

matchExactパラメータによって、完全一致か部分一致かを指定します。

  • matchExactを false,に設定すると、フィルタ テキストを含むあらゆる値が一致と見なされます。
  • matchExactを trueに設定すると、指定したフィルタ テキストに一致する値だけが結果セットに含まれるようになります。

注:matchExactパラメータが指定されていない場合は、フィルタ パラメータで指定された文字に対する完全一致がルール アクションのデフォルトの動作になります。フィルタ テキストを含む結果を結果セットで保持するように指定する場合は、matchExactパラメータをfalseに設定する必要があります。

例:

以下の図に、国とそれぞれのイベント数のリストを示します。

Example to  list of countries and their event count

以下の図に、スペイン、中国、米国、英国以外の国を結果セットから除外するfilter_onルール アクションを示します。

Example to filter_on rule action to filter out countries

次の図は、filter_onルール アクションの出力を示しています。

Output of  filter_on rule action

結果セットからエントリを除外する方法として、除外する変数のリストを作成する方法もあります。たとえば、値として英国、フランス、ドイツを含むリストを作成できます。ルール アクションでこのリストを使用して、同じ結果セットを得ることができます。たとえば、COUNTRY_LISTというリストを作成した場合、次のように使用できます。

filter_on ('$COUNTRY_LIST', 'country.src', 'false');

filter_out (string filter, string field)

filter_out (string filter, string field, bool matchExact)

filter_outは、filter条件を含む値を結果セットから除外します。結果セットに複数のフィールドが含まれている場合は、フィルタを適用する特定のフィールドを選択する必要があります(たとえば、lookup_and_addを使用して、結果を単一の結果セットに追加できます)。

matchExactパラメータによって、完全一致か部分一致かを指定します。

  • matchExactをfalseに設定すると、フィルタ テキストを含むあらゆる値が一致と見なされます。
  • matchExactをtrueに設定すると、指定したフィルタ テキストに一致する値だけが結果セットから除外されるようになります。

注:matchExactパラメータが指定されていない場合は、フィルタ パラメータで指定された文字に対する完全一致がルール アクションのデフォルトの動作になります。フィルタ テキストを含む結果を結果セットから除外するように指定する場合は、matchExact パラメータをfalseに設定する必要があります。

例:

以下の図に、国とそれぞれのイベント数のリストを示します。

 Example for list of countries and their event count

次の図は、filter_outルール アクションを使用して結果セットからスペイン、中国、米国、英国のイベント数を削除する方法を示しています。

Example to filter_out rule action to remove the event count for countries

次の図は、filter_outルール アクションの出力を示しています。

Output of Rule with filter_out rule action

lookup_and_add (string select, string field)

lookup_and_add (string select, string field, int limit)

lookup_and_add (string select, string field, int limit, boolean inherit)

lookup_and_add (string select, string field, int limit, boolean inherit, string extraWhere)   

lookup_and_add(string select, string field, int limit, boolean inherit, string extraWhere, boolean aggregate)

このルール アクションは、結果セット内の値のリストを反復処理し、他のメタ データを検索して、結果セット内の要素間の関係を示すことができます。

注:lookup_and_addルール アクションは、集計ルールでのみ使用できます。

最初のパラメータであるselectは、結果セットの要素に追加する必要があるメタ データのタイプを指定します。2つ目のパラメータであるfieldは、結果セット内のどこに追加すべきかを指定します。また、limit(制限)を適用することで、結果セットが大きくなりすぎるのを防ぐことができます。

デフォルトでは、SDKに対する後続のクエリは、親ルールのwhere句を継承します。一意のwhere句を使用するには、4つ目のパラメータにブール値を指定し、5つ目のパラメータに別のwhere句を指定します。

注:クエリで一意のwhere句を使用する場合は、シングル クォート(')で引数を囲み、ダブル クォート(")で文字列値を囲みます。

このように、[カスタム]サマライズと[Group By]機能を使用することで、lookup_and_addルール アクションがなくても結果を達成できます。groupbyを含む新しいルール構文により、結果はフラット構造で表示されます。これは、groupbyが含まれない前のルール構文よりも優れているため、適切な場合は必ず、lookup_and_addルール アクションを使用して手動でルールを編集/更新し、groupby句を使用することをお勧めします。

注:Lookup_And_Addルール アクションは、SELECT句に1つのメタと集計関数が含まれる場合にのみサポートされます。

たとえば、次のシナリオを参照してください。例2aでは、lookup_and_addルール アクションが使用されています。lookup_and_addルール アクションを使用せずに、同じ結果を達成するには、[カスタム]サマライズと[Group By]機能を使用します。次の例2bを見てください。

しかし、lookup_and_addルール アクションは、次の条件では、NWDBルールに対して引き続きサポートされています。

  • [イベント数]、[パケット数]、[セッション サイズ]としてサマライズが含まれるNWDBルールのすべてのバージョン。
  • [カスタム]サマライズの場合、lookup_and_addルールに必要なのは、1つのgroup byメタと1つの集計関数のみです。この集計関数はsum()またはcount()のいずれかである必要があります。

注:「サマライズ - なし」ではサポートされません。

たとえば、次のルールに対してlookup_and_addルール アクションを使用できます。

  • select ip.src, sum(size) group by ip.src
  • select ip.src, count(filename) group by ip.src

次のルールに対しては使用できません。

  • select ip.src, sum(size),count(filename) group by ip.src
  • select ip.src, sum(size),avg(size) group by ip.src
  • select ip.src,ip.dst count(filename) group by ip.src,ip.dst

例:

1. lookup_and_add('ip.dst','ip.src', 2);

このルール アクションは、最初の結果セットの各ip.srcを反復処理し、ip.srcごとに上位2個の宛先IPアドレスを検索して追加します。

次の図にルールの定義を示します。

Example for lookup_and_add('ip.dst','ip.src', 2)

次の図は、ソースIPアドレス(ip.src)と、ip.srcごとに上位2個の宛先IPアドレス(ip.dst)を含む結果セットを示しています。

Output of lookup_and_add('ip.dst','ip.src', 2)

2a. lookup_and_add('ip.dst','ip.src', 2); lookup_and_add('service','ip.src', 3);

このルール アクションは、最初の結果セットで各ip.srcを反復処理し、ip.srcごとに上位2個の宛先IPアドレス(ip.dst)と、各ip.srcで使用される上位3個のポート(service)を検索します。

次の図にルールの定義を示します。

Example of lookup_and_add('ip.dst','ip.src', 2); lookup_and_add('service','ip.src', 3);

次の図は、ソースIPアドレス(ip.src)、ip.srcごとに上位2個の宛先IPアドレス(ip.dst)、そして各ip.srcで使用される上位3個のポート(service)を含む結果セットを示しています。

Output of lookup_and_add('ip.dst','ip.src', 2); lookup_and_add('service','ip.src', 3);

結果セットでさまざまなフィールドを選択し、別の部分に追加することで、複雑なクエリを作成できます。たとえば、それぞれの送信元IPにどのファイルが添付されているかを知りたいとします。しかし、親ルールには、service = '6667'というWHERE句が指定されています。このルール アクションのデフォルトの動作は元のWHERE句の継承であるため、親WHERE句のオーバーライドが必要です。この概念を理解する最も簡単な方法は、以前のlookup_and_add call lookup_and_add('ip.dst','ip.src',2)を見ることです。実際にサーバに送信されるクエリは、SELECTip.dstWHEREservice = 6667ip.src= 206.42.199.194となります。親ルールから継承したWHERE句の「service = '6667'」の部分を強制的にオーバーライドするには、例3のように、4つ目のパラメータとしてfalseを指定します。

2b. Lookup_and_addルールなし

このルールでは、[カスタム]要約と[Group By]機能を使用して、結果をソートします。

次の図にルールの定義を示します。

Example of  Without Lookup_and_add Rule

次の図は、ソースIPアドレス(ip.src)、ip.srcごとに上位2個の宛先IPアドレス(ip.dst)、そして各ip.srcで使用される上位3個のポート(service)を含む結果セットを示しています。

Output of Without Lookup_and_add Rule

3. lookup_and_add('filename', 'ip.src', 2, false);

この呼び出しでサーバに発行するクエリは、SELECT filename WHERE ip.src = 90.0.0.142のようになります。SELECT filename WHERE service = 6667' && ip.src = 90.0.0.142ではありません。これは、親ルールの最初のWHERE句を無視するルール アクションを指定しているためです。

次の図にルールの定義を示します。

Example of  lookup_and_add('filename', 'ip.src', 2, false);

次の図に結果セットを示します。

Output of  lookup_and_add('filename', 'ip.src', 2, false);

testリストはグループ名netwitnessにあります。このリストには、次の構文を使用してアクセスできます。

これらの追加された結果を絞り込み、ファイル名(filename)の拡張子が.gifであるファイル名だけが含まれるようにすることもできます。それには、ルール アクションで5つ目のパラメータを使用します。5つ目のパラメータでは、WHERE句の条件を追加で指定できます。.gifファイル名拡張子のファイルは、testリスト(DocTeamListという名前のグループ内)に格納されます。次の構文を使用して、このリストにアクセスできます。threat.source = $[DocTeamList/test]
これは、次のようにして追加のwhere句パラメータで参照できます。

4. lookup_and_add('filename', 'ip.src', 5, false, 'filename CONTAINS $[DocTeamList/test]');

次の図にルールの定義を示します。

Example of  lookup_and_add('filename', 'ip.src', 5, false, 'filename CONTAINS $[DocTeamList/test]');

次の図に結果セットを示します。

Output of  lookup_and_add('filename', 'ip.src', 5, false, 'filename CONTAINS $[DocTeamList/test]');

5. lookup_and_add('ip.dst','ip.src', 2,true,,false);

このルール アクションは、最初の結果セットの各ip.srcを反復処理し、ip.srcごとに上位2個の宛先IPアドレスを検索して追加します。「aggregate」パラメータは「false」に設定されています。これにより検索値の集計がスキップされるため、検索クエリの実行がより迅速になります。

注:
「aggregate」のデフォルト値は「true」です。「aggregate」が「false」に設定されると、Reporting Engineはthreshold=1、Sort by='value'、Order=AscendingをNWDBに渡して、検索クエリが迅速に実行されるようにします。
。ルールに集計関数が含まれる場合、またはルールがより広い時間範囲に対して実行される場合に、「aggregate」をfalseに設定する必要があります。これにより、ルールをより迅速に実行できます。

次の図にルールの定義を示します。

Exaample of  lookup_and_add('ip.dst','ip.src', 2,true,,false);

次の図に結果セットを示します。

Output of  lookup_and_add('ip.dst','ip.src', 2,true,,false);

max_threshold (string quantity)

max_threshold (string quantity, string field)

max_thresholdは、結果セットから最大閾値を超える数量の結果をまとめて削除します。数やサイズについて数量を指定でき、これは親ルールのソート オプションにも関連します。サイズでルールをソートする場合、ルール アクションのパラメータはバイトで指定します(KB、MB、GB、TBをパラメータに追加してサイズ変換できます)。 

max_thresholdルールを使用して、集計関数の値に基づいて値をフィルタすることもできます。次のように、ルールで使用されているサマライズのタイプに基づいて構文を使用します。

  • max_threshold(String quantity): イベント数、パケット数、セッション サイズのフィルタに使用できます。
  • max_threshold(String quantity, String field): カスタム集計または任意のメタの値のフィルタに使用できます。

例:

1. max_threshold(200);

次の図は、max_threshold引数を指定しなかった場合の結果を示しています。出力結果のイベント数は200を超えています。

Output of max_threshold(200);

次の図は、出力に対して200バイトの制限を適用するmax_thresholdルール アクションを示しています。データが200バイトを超える出力は表示されません。

Example for max_threshold rule action that puts a limit of 200 bytes on the output

次の図は、max_thresholdルール アクションが適用された場合の結果を示します。上記のスクリーン キャプチャの番号1の結果は、結果から削除されます。

Result of  when the max_threshold rule action is applied

2. max_threshold(5,count(alias.host));

次の図は、max_threshold引数を指定しなかった場合の結果を示しています。出力結果のalias.host数は5を超えています。

 Result of without the max_threshold argument

次の図は、出力に対して5の制限を適用するmax_thresholdルール アクションを示しています。値が5を超える出力は表示されません。

Example of max_threshold rule action that puts a limit of 5 on the output

次の図は、max_thresholdルール アクションが適用されるときの結果を示します。値が5を超える出力は結果から削除されます。

Result when the max_threshold rule action is applied

min_threshold (string quantity)

min_thresholdは、結果セットから最小閾値を下回る数量の結果をまとめて削除します。数やサイズについて数量を指定でき、これは親ルールのソート オプションにも関連します。サイズでルールをソートする場合、ルール アクションのパラメータはバイトで指定します(KB、MB、GB、TBをパラメータに追加してサイズ変換できます)。

min_thresholdルールを使用して、集計関数の値に基づいて値をフィルタすることもできます。次のように、ルールで使用されているサマライズのタイプに基づいて構文を使用します。

  • min_threshold(String quantity): イベント数、パケット数、セッション サイズのフィルタに使用できます。
  • min_threshold(String quantity, String field): カスタム集計または任意のメタの値のフィルタに使用できます。

例:

1. min_threshold(200);

次の図は、min_thresholdを指定したクエリの例です。

Example of min_threshold query

この図では、出力に対して200バイトの制限が適用されます。データが200バイト未満の出力は表示されません。出力にmin_thresholdルール アクションが適用されます。

The output with the min_threshold rule action is applied

図のように、すべての値が200バイトを超えています。

2. min_threshold(100,count(alias.host));

次の図は、min_threshold引数を指定しなかった場合の結果を示しています。出力結果のalias.host数は100を下回っています。

The result without the min_threshold argument

次の図は、出力に対して100の下限を設定するmin_thresholdルール アクションを示しています。データが100を下回る出力は表示されません。

The min_threshold rule action that sets the minimum limit of 100 on the output

次の図は、min_thresholdルール アクションが適用された場合の結果を示します。データが100未満の出力は結果から削除されます。

The result when the min_threshold rule action is applied

regex (string regex, string field)

regexルール アクションは、結果セットに正規表現を適用します。Regexルール アクションの形式を次に示します。

regex(regular_expression, meta_name)

各項目の意味は以下のとおりです。

  • regular_expression:メタの値と一致する正規表現。
  • meta_name:regexを適用するメタまたはフィールド名。

サポートされるregexパターンのリストについては、http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.htmlを参照してください。

regexルール アクションの例:

さまざまなセッションからPNGとJPEG形式のファイルのファイル名をすべて列挙する場合は、次のregexルール アクションを含むルールを記述します。

regex(".+.(png|jpg)", filename);

次の図は、このルールを示しています。

Sample regex rule action

次の図は、regexルール アクションが適用された出力を示しています。

Regex rule action output

sum_count()

ある結果セットについて数量を合計します。たとえば、イベント数でソートされたルールに対してsum_count()を呼び出すと、結果セット内のすべての値のサイズが合計され、その結果セットの代わりに合計が表示されます。

例:

次の図は、sum_count()ルール アクションを示しています。

Example of sum_count() rule action

sum_count()ルール アクションを指定した場合は、出力にすべてのイベント数の合計サイズが示されます。

Output of sum_count() rule action

sum_values()

ある結果セットの値の数を合計します。このアクションは、特定のルールに一致するものがいくつ存在するかを表示するために使用します。

例:

次の図は、sum_values()ルール アクションを示しています。

Example of sum_values() rule action

次の図は、sum_valuesルール アクションを指定した場合の結果を示しています。

Output of sum_values() rule action

show_whats_new()

show_whats_new()ルール アクションは、結果セットのすべての結果を受け取り、現在実行中のレポートのタイム フレームより前のNetWitnessメタ データベースに存在する値を除外します。レポートを実行すると、NetWitness Suiteはレポートの時間範囲で最初のセッションのIDを判断します。結果セットの値の最初のセッションIDがレポートのタイム フレームの最初のセッションIDよりも大きければ、その値はレポート実行前のNetWitnessメタ データベースには存在せず、NetWitnessシステムにとってレポートのタイム フレームよりも新しい値であることになります。

show_whats_new()ルール アクションも、カスタム集計ルールでサポートされています。複数のメタがカスタム ルールで選択されている場合、最初のメタは、古い値を除外するために考慮されます。次の例2で、このルール アクションが、カスタム集計ルールでどのように使用されているかを確認してください。

注:show_whats_new()ルール アクションは、集計ルールでのみ使用できます。

例:

1. イベント数が指定された集計ルールに対するshow_whats_new()

次の例では、過去2週間で使用できたすべてのソースIPアドレスが表示されます。

Example for all the Source IP Addresses available for the past two weeks are listed

次の図では、show_whats_newルール アクションを使用して、過去2週間の新しいエントリーのみを一覧表示しています。

Use of show_whats_new rule action to list only the new entries for the past two weeks

次の図は、過去2週間の新しいエントリーを一覧表示しています。

Exaample for lists of new entries for the past two weeks

2. カスタム集計ルールに対するshow_whats_new()

次の例では、過去2週間で使用できたすべてのソースIPアドレスが表示されます。

Example for All the Source IP Addresses available for the past two weeks are listed

次の図では、show_whats_newルール アクションを使用して、過去2週間の新しいエントリーのみを一覧表示しています。

Example to show_whats_new rule action to list only the new entries for the past two weeks

次の図は、過去2週間のソースIPアドレスの新しいエントリーを一覧表示しています。

Lists of new entries of Source IP Addresses for the past two weeks

この機能の利点は、レポートの実行時刻に関係なく、NetWitnessにとって新しい値を識別できることです。この機能の注意点は、データがリセットされるとデータが失われるということです。しかし、この機能を使用すれば、システムに大きな負荷をかけずに(ただし、結果セットのサイズによります)、簡単にシステムの基準を定めて変更点や新しいアイテムを識別できます。

サポートされるルール演算子

Reporting EngineでのNWDBデータ ソースのルール構文では、NetWitness Suiteでサポートされているルール演算子のサブセットをサポートしています。

                                           
構文説明
*アスタリスク(*)を単独の演算子としてルールに使用すると、すべてのトラフィックやログを検索できます。
=等号
!= 不等号
&&論理積
||論理和
-u上方境界。たとえば、tcp.port = 40000-uは、40000より大きいすべてのTCPポートを選択します。
-l下方境界。たとえば、tcp.port = l-40000は、40000より小さいすべてのTCPポートを選択します。
-ダッシュ(-)演算子は数値のみに使用できます。範囲の上限と下限をダッシュ(-)で区切って指定します。  たとえば、tcp.port = 25-443は、25と443の間にあるすべてのTCPポートを選択します。
  レポート:IPDBルールの構文  

サポートされるクエリの例

Respondのルール構文

対応サービスを使用する場合のルール構文について、サポートされる構文とサポートされない構文の例を挙げて説明します。対応サービスを使用してレポート用のルールを作成する場合、サポートされる構文とサポートされない構文があります。

Reporting Engineでは、次のカテゴリの対応データ ソースのルール構文をサポートしています。

  • select

    • 集計を行わないルール
    • 集計を行うルール
  • エイリアス
  • where
  • where句演算子
  • Group By
  • Order By
  • 件数]フィールド

注:Respondのデータ ソース ルールではリストはサポートされません。

Select句

Select句はコンマ区切りの値のリストです。例:select alert.severity, alert.name, count(*)

対応ルールのselect句には、次の2種類あります。

  • 集計を行わないルール
  • 集計を行うルール

集計を行わないルール

グループ化なしでルールを定義するときは、[サマライズ]フィールドで[なし]を選択します。集計を行わないルールでは、Select句で任意の数のメタを選択できます。たとえば、alert.severity、alert.nameを選択します。

集計を行うルール

特定のメタおよびそれに関連づけられている集計値に対するクエリを実行するときは、集計ルールを使用する必要があります。集計された結果を取得するには、[サマライズ]フィールドで[カスタム]を選択して、Select句に集計関数を含める必要があります。例:select alert.severity, alert.name, count(*) 

次の図は、集計ルールの[ルールのビルド]ビューを示しています。

Build Rule view for Aggregate Rule

サポートされる集計関数

対応サービスのルールでは、次の集計関数と構文をサポートしています。

  • count
  • max
  • min
  • sum
  • avg

注:集計関数は、集計クエリのselect句の最後に追加する必要があります。たとえば、 alert.name, alert.severity, sum(alert.numEvents)のようになります。デフォルトでは、最大10,000行の結果が取得され、rsa.response.query.QueryPropertiesを使用して構成することができます。

select句の構文の例

次の表では、select句の構文の例を示します。

               
説明
select column1,column2,column3,...,columnN対応データ ソースから具体的なメタを選択します(各列はコンマで区切る必要があります)。 

サポートされているSELECTクエリの例

select alert.name, alert.numEvents, count(alert.numEvents)

select alert.severity, avg(alert.severity)

select alert.timestamp, incidentCreated where alert.timestamp >= 1475658011

サマライズ 

[サマライズ]で、ルールの要約や集計のタイプを決定します。

               
名前構成
サマライズ

カスタム グループ化なしでメタに対してクエリを実行するには、以下を選択します。

  • なし

メタ ベースの集計を取得するには、次を選択します。

  • カスタム:これは、予期されるメタ集計関数が、ルールのselec句で定義されていることを示します。

エイリアス

一部のメタ名はわかりやすくない可能性があります。この場合、説明を[エイリアス]フィールドに追加して、列名を読みやすくすることができます。たとえば、SELECT:alert.severity, alert.name, count(*)
ALIAS:Alert Severity, Alert Name

[エイリアス]フィールドには、Select句で使用されている列の名前を入力できます。Select句のいずれかのフィールドでエイリアスを指定していない場合は、デフォルトの説明が使用されます。たとえば、Select句にField1、Field2、Field3、Field4があり、エイリアスにはField1、Field3、Field4のみがある場合、Field2に対してはデフォルトの説明が使用されます。

where句

where句は言語フィールドの値と範囲であり、対応関数で使用します。where句では、文字列値を一重引用符で囲む必要があります。

                   
説明
alert.host summary ='(Primary) Link status ''Down'' on interface INTNAME.'テキストまたは文字列タイプのデータの場合、文字列またはテキストを一重引用符または二重引用符で囲みます。データ内に特殊文字(アポストロフィなど)が含まれている場合、追加の一重引用符または二重引用符を付加する必要があります。たとえば、alert.name = ’top alerts from Cote d''Ivoire'
alert.timestamp >= 1475658011日付と時刻(date/timestampデータ タイプの列)では、
EPOCH構文を使用します。

サポートされるwhere句演算子

                                   
演算子構文
=(等しい)column1 = 'value'
!=(等しくない)column1 != 'value'
>column1 > 'value'
>=column1 >= 'value'
<column1 < 'value'
<=column1 <= 'value'

Group By 

               
構文関数

group by : alert.severity, alert.timestamp, incidentCreated

注:[グループ化]フィールドは集計クエリに対して有効化されますが、編集はできません。

対応は、[グループ化]フィールドのメタを選択されたSelect句から自動的に取得します。

Order By

[整列]によって、結果セットをソートする方法が決まります。大文字と小文字は区別されません。

                   
名前構成値

列名

[列の名前]は、結果をソートするための基準となる列の名前です。デフォルトでは、この値は空です。列をクリックすると、値は[サマライズ]フィールドに基づいて入力されます。

  • order by alert.name asc
  • order by incidentCreated desc
  • order by count(numEvents)
  • order by status

ソート基準

[ソート基準]によって、昇順や降順など、結果をソートする順序が決まります。

注:[整列]フィールドはすべてのクエリに対して選択する必要があります。

[件数]フィールド

これは、データベースからデータをフェッチするとき、クエリに対して設定する件数を示します。結果セットがイベント数、パケット数、セッション サイズによってソートされる場合、件数(=N)を指定すると、上位(下位)N個の値が返されます。結果セットをソートしない場合は、最初のN個の値が返されます。

    
Previous Topic:付録
You are here
Table of Contents > 付録 > ルール構文

Attachments

    Outcomes