ファイアウォールのログは長い!管理者の欲しい値「だけ」を取り出し、ファイルに書き出すには?

ログを「再構成」して欲しい情報だけをコンパクトに残そう

ログファイルは多くの情報を含んでいますが、管理者の目当てはログメッセージのごく一部だけであることがほとんどです。

しかし、ログフォーマットは各社によりさまざまに異なるため、あらゆるログフォーマットに対応する汎用的な解析方法は残念ながらありません。
(例. FortigateとCisco ASAのフォーマットの違いなど)

このような場面では、WinSyslogの「再構成」アクションが有効です。
本アクションを利用すると、メッセージを加工し、欲しい情報だけ残すことができます。

上図はファイアウォール(Fortigate)のログを再構成したイメージです。
数多くのパラメーターから必要とする項目だけを抽出し羅列しています。
管理者の目に分かりやすい形にしたり、解析などの後工程に適したフォーマットに整形することができます。

本稿では、Syslogサーバー製品「WinSyslog」のさまざまな機能のうち、「再構成」アクションの設定法について順を追って解説します。

Step 1 – 再構成アクションの追加

サービス(Syslogサーバーなど)、ルールセット(Default RuleSetなど)は既に設定済みとして話を進めます。Actionsを右クリックし「再構成」を選択して下さい。

再構成アクションが追加されました。
「再構成」が「ファイルログ」より上にあることを確認して下さい。

Step 2 – ファイアウォールからのSyslogデータ

以下はFortigateファイアウォールのログファイルのサンプルです。
全ての変数が空白で区切られています。

色付けされた変数を抽出し、ファイルに書き出す手順を、以下のステップでご案内いたします。

Step 3 – 再構成アクションの設定

再構成アクションの設定を始めましょう。

最初のプロパティ行の設定を、以下の通りにします。
ドロップダウンリストから選択し、プロパティ名を「Filler」に、タイプを「UpTo」にします。
値に「date=」と入力します。

ここで行っている指示は、『文字列「date=」の先頭までの文字群全てを得、そして破棄せよ』です。
現在、ポインター(=再構成アクションの処理の対象)位置は、文字列「date=」の先頭、つまり「d」にあります。

次のプロパティ行で、プロパティ名を「Filler」、タイプを「Character Match」、
値を「date=」にします。

ここで行っている指示は、『ポインター位置を、文字列「date=」の末尾に移動せよ』です。

※「Character Match」による解析の対象は、「現在のポインター位置から行末まで」であり、
行頭から「date=」までは解析の対象ではない、という点に注目して下さい。
これが、先ほどの「UpTo」により「date=」まで前もってジャンプしておく必要があった理由です。

先ほど述べた通り、解析対象となるポインター位置は「date=」の末尾にあります。
よってこれから、オリジナルのログファイルから、最初のカスタム変数「日付」の抽出が出来ることになります。

これを達成するためには、次のプロパティ行で、プロパティ名を「u-date」またはお好きな名前に、タイプを「Single Word」にします。

「現在のポインター位置から、次に見つかる空白まで」の全ての文字列を抽出します。
ファイアウォールのSyslogデータから取り出した日付は、変数「u-date」へと代入されました。

次の行を挿入します。
プロパティ名を「Filler」、タイプを「UpTo」、値を「time=」にします。

再び行を挿入します。
プロパティ名を「Filler」、タイプを「Character Match」、値を「time=」にします。

これら2行により、現在のポインター位置から文字列「time=」の末尾までの全ての文字群を得、そして破棄します。

ポインター位置は現在、文字列「time=」の末尾です。

再び新たな行を挿入します。
プロパティ名を「u-time」、タイプを「UpTo」、値を「 device_id=」にします。
※device_id=の前に空白「 」があります。

これで、「time=」の末尾から「 device_id=」までの文字列を変数「u-time」に代入されます。

以下の2行を挿入します。
1行目、プロパティ名を「Filler」、タイプを「UpTo」、値を「SN=」にします。
2行目、プロパティ名を「Filler」、タイプを「Character Match」、値を「SN=」にします。

ポインター位置は現在、文字列「SN=」の先頭です。

次に新たなプロパティ行を、
プロパティ名「u-SN」で作成します。

変数「u-SN」に、ファイアウォールのSyslog行に含まれるシリアルナンバーを代入します。

タイプを「Integer」にし、WinSyslog上で「保存」を押します。
『現在のポインター位置から、Integer(整数)型(の変数)の終わりまで』を範囲としたInteger(整数)文字列を抽出し、変数「u-SN」に代入します。

WinSyslogから抽出したい変数4つのうち、3つを得ました。残るは1つです。

同様に2行を挿入します。
1行目、プロパティ名を「Filler」、タイプを「UpTo」、値を「src=」にします。
2行目、プロパティ名を「Filler」、タイプを「Character Match」、値を「src=」にします。

ポインター位置は現在、文字列「src=」の先頭です。

最後に残った、ソースIPアドレスの抽出には、「Single Word」タイプを利用してみましょう。

新たなプロパティ行を、プロパティ名「u-source」で作成し、タイプを「Single Word」にします。

『現在のポインター位置から、次の空白まで』の文字列を、変数「u-source」に代入します。

これで今回欲しかった4つの変数すべてが抽出できました。

Step 4 – 抽出した変数をファイルに書き出す

「Actions」を右クリック、「アクションを作成」で「ファイルログ」を選択して下さい。
※既に「ファイルログ」や「File Logging」が存在するのであれば、新たに作成はせず、既存の「ファイルログ」を流用し設定して下さい。

新たに作成した、または既存の「ファイルログ」を選択し、右ペインで「ファイルパス」にお好きな保存場所を指定します。下にスクロールします。

「ファイルフォーマット」でデフォルトでは「Adiscon」となっている所を「カスタムフォーマット」に変更します。

「出力メッセージ」にて
%u-date%,%u-time%,%u-SN%,%u-source%%$LF%
を入力します。

先ほど「再構成」アクションで新たに定義し、代入された4つの値

  •  u-date
  •  u-time
  •  u-SN
  •  u-source

を%%で囲み、カンマ区切りとし、行末に改行%$LF%を加えました。

WinSyslogの左上「保存」を押し、「再起動」、「開始」が既に押されてグレーアウトされていることを確認し、実際にファイアウォールからSyslogを送信してみます。

Fortigateファイアウォールのログファイルから4つの値を取り出し、カンマ区切りでテキストファイルに書き出すことが出来ました。


弊社ではWindows上で稼働するSyslogサーバー製品「WinSyslog」を提供、販売しております。

主な特長としては、

  • 日本語インターフェイス
  • 日本語ログを正常に処理
  • フィルタにより受信時アクションをカスタマイズ

などです。

評価版のダウンロード、マニュアル等をご用意しておりますので、WinSyslogをこの機会に是非お試しください。

こんな記事も読まれています

最新記事

おすすめ記事

  1. 【Syslog監視】Syslogサーバーとネットワーク監視を連携。PRTGで重要なSyslogだけを監視する。

  2. システム管理者の特権アカウントを保護するための7つの方法

  3. 「Wiresharkでsyslogプロトコルパケットを覗く」syslog-ng Store Box活用連載企画vol.4

製品カテゴリー

JTC IT用語集
TOP