2021年9月15日水曜日

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



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

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

しかし、ログフォーマットは各社によりさまざまに異なるため、
あらゆるログフォーマットに対応する汎用的な解析方法は残念ながらありません。
(例. 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をこの機会に是非お試しください。



WinSyslogについての詳細は、製品紹介ページをご参照ください。

評価版のダウンロード

問合わせ