ログを「再構成」して欲しい情報だけをコンパクトに残そう
ログファイルは多くの情報を含んでいますが、管理者の目当てはログメッセージのごく一部だけであることがほとんどです。
しかし、ログフォーマットは各社によりさまざまに異なるため、あらゆるログフォーマットに対応する汎用的な解析方法は残念ながらありません。
(例. 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をこの機会に是非お試しください。