フリーテキスト解析言語

フリーテキスト解析言語は、入力文字列を解析し、情報を取り出し、ログフィールドを定義することができます。ログフィールドは、ログサーバのCheck Pointログの一部として表示されます。また、イベントの定義として使用されます。各解析ファイルにはコマンドのツリーが含まれています。各コマンドで入力文字列の一部を確認または解析し(結果としてログにフィールドを追加する場合もあります)、文字列の解析を続けるかどうか判断します(実行の成功/失敗に基づきます)。

コマンド

各コマンドは以下のパートから成ります。

  • cmd_name - コマンドの名前。

  • command arguments - コマンドの動作を定義する引数。

  • on_success (オプション) - 現行コマンドの実行が成功した時に実行される次のコマンド。

  • on_fail (オプション) - 現行コマンドの実行が失敗した時に実行される次のコマンド。

サンプル

:command (
   :cmd_name (try)
   :try_arguments
        .
        .
   :on_success (
       :command()
   )
   :on_fail (
       :command()
   )
)

Try

tryコマンドは、入力文字列に対して正規表現を一致させます。

'Try'コマンドパラメータ

引数

内容

parse_from

start_position - 入力文字列の最初から正規表現を実行します。

last_position - 前回成功したコマンドの最後の場所から正規表現を実行します。

regexp

一致させる正規表現。

add_field

1つ以上のフィールドを結果に追加します(正規表現が成功した場合のみ)。

Group_try

コマンドgroup_tryは、以下のモードで1つ以上のコマンドを実行します。

  • "try_all"は、グループのすべてのコマンドを実行し、コマンドのリターンコードは無視します。

  • "try_all_successively"は、グループのすべてのコマンドを実行し、コマンドのリターンコードは無視します。

    各コマンドは前回成功したコマンドの最後の場所から実行します。

  • "try_until_success"は、いずれかが成功するまですべてのコマンドを実行し続けます。

  • "try_until_fail"は、いずれかが失敗するまですべてのコマンドを実行し続けます。

コマンド"group_try"は、取り出したい多くのフィールドを含むログのフリーテキスト部分を解析するときに通常使われます。

例:

%PIX-6-605004:Login denied from 194.29.40.24/4813 to outside:192.168.35.15/ssh for user 'root'

ログのこのセクションを見ると、このストラクチャを使用できます。

Switch

このコマンドにより、事前定義された一定値のリストに対して特定フィールドの結果を比較できるようになります。

'Switch'コマンドパラメータ

パラメータ

内容

パラメータ

内容

field_name

値が検査されるフィールド名。

case

1つ以上のcase属性に、比較する値が続きます。

default

関連するcaseが利用できない場合のみ実行。デフォルト値はオプションです。

Unconditional_try

このコマンドは"空の"コマンドで、条件なしで結果にフィールドを追加することができます。

Include

このコマンドにより、新しい解析ファイルを含むことができます。

file_name

フルパスと含まれるファイルの名前。

Add_field

各"add_field"にはいくつかのパラメータがあります。

  • Type - "add_field"コマンドのタイプ。このパラメータは次のいずれかの値になります。

    • Index - 正規表現の一部がフィールドとして取り出されます。"field_index"の値はどのパートが取り出されるかを示します("field_index"の箇所を参照)。

    • Const - 正規表現から取り出された情報に依存しない値を持つ、不変のフィールドを追加します。field_valueの箇所を参照してください。

  • field_name - 新しいフィールドの名前。

    一部のフィールドには、一致するカラムがSmartConsole > ログ&モニタリング > ログにあります。

    この表には、ログ&モニタリング > ログカラムで表示されるフィールドの名前が表されています(他の追加フィールドが表示される情報フィールドではない):

    与えられるフィールド名

    ログ&モニタリング > ログのカラム

    Src

    発信元

    Dst

    宛先

    proto

    プロトコル

    s_port

    ソースポート

    product

    製品

    service

    サービス(解決済みにポート

    とプロトコルが含まれる場合)

    Action

    アクション

    ifname

    インタフェース

    User

    ユーザ

    上記のフィールドにそれぞれ名前を付けると、ログ&モニタリング > ログの正しいカラムの位置に移動します。

    これにより、カラムでのあらゆるフィルタリングの対象にすることができます。これらのフィールド名は、既存のイベント定義に自動的に加わります。

  • field_type - ログのフィールドのタイプ。

    可能なフィールドタイプは、以下の表のとおりです。

    フィールドタイプ

    コメント

    int

     

    uint

     

    string

     

    ipaddr

    SrcとDstフィールドで使用するIPアドレス。

    pri

    ファシリティとsyslogの重要度。

    timestmp

    syslogの日付と時刻。フォーマットは'Oct 10 2019 15:05:00'

    time

    フォーマットは'15:05:00'

    string_id

    文字列のより効率的な使用法。このフィールドに使用可能な値が有限な場合に使用。

    action

    アクションは、drop、reject、accept、encrypt、decrypt、vpnroute、keyinst、authorize、deauthorize、authcrypt、defaultがあります。

    ifdir

    0 - 受信

    1 - 発信

    ifname

    インタフェース名("ifname"フィールドで使用)。

    protocol

    フィールド名は"proto"になります。

    port

    "service"には"s_port"または"port"フィールドとなります。

    このテーブルのフィールド名のフィールドタイプは以下のようになります。

    フィールド名

    フィールドタイプ

    Src

    ipaddr

    Dst

    ipaddr

    proto

    protocol

    s_port

    port

    service

    port

    Action

    action

    ifname

    ifname

  • field_indexまたはfield_value - 使われるパラメータは"type"フィールドの値に基づきます。

    • "type"フィールドがindexの場合、"field_index"が表示されます。

    • "type"フィールドがconstの場合は"field_value"が表示されます。

    "field_index"には、パターンのグループ化に従って正規表現のどの部分が取り出されるかが表わされます。

    グループ化するには、特定の表現を括弧で記します。

    この表現では、"field_index"の数字はパターンが考慮される括弧の数字を示します。

  • dict_nameは、値を変換するために使用するディクショナリ(辞書)の名前です。名前が辞書に見つからない場合は値が結果になります。

    フリーテキストパーサーで、辞書を使ってログから値を変換できます。これらは、異なるデバイスからのログで、同じ意味を持つ値を共通の値に変換し、イベント定義に使用するために利用します。

    辞書ファイルはそれぞれ.iniファイルとして定義されます。

    .iniファイルでは、セクション名は辞書名で値は辞書の値です(各辞書に1つ以上のセクションを含むことが可能)。

    [dictionary_name]

    Name1 = val1

    Name2 = val2

    [cisco_action]       [3com_action]

    permitted = accept   Permit    = accept

    denied = reject      Deny   = reject