ログを「再構成」して欲しい情報だけをコンパクトに残そう
ログファイルは多くの情報を含んでいますが、
管理者の目当てはログメッセージのごく一部だけであることがほとんどです。
しかし、ログフォーマットは各社によりさまざまに異なるため、
あらゆるログフォーマットに対応する汎用的な解析方法は残念ながらありません。
(例. 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
WinSyslogの左上「保存」を押し、「再起動」、
「開始」が既に押されてグレーアウトされていることを確認し、
実際にファイアウォールからSyslogを送信してみます。
Fortigateファイアウォールのログファイルから4つの値を取り出し、
カンマ区切りでテキストファイルに書き出すことが出来ました。
弊社ではWindows上で稼働するSyslogサーバー製品
「WinSyslog」を提供、販売しております。
主な特長としては、
- 日本語インターフェイス
- 日本語ログを正常に処理
- フィルタにより受信時アクションをカスタマイズ
評価版のダウンロード、マニュアル等をご用意しておりますので、
WinSyslogをこの機会に是非お試しください。