2021年4月2日金曜日

syslog-ng Store Box大活用連載企画第17回「リライト機能。ログの整形や正規化!」

リライトルール設定画面例

螺子です。SSBは受信中のログのリライト機能を有しており、他のログ解析ソフトウェア(SIEMなど)用にログメッセージの整形や正規化ができます。


  • リライトルールは、マクロで定義されたデータの書き換え、文字列に一致したデータの置換を設定します。
  • リライトルールは、フィルター前とフィルター後に実行することができます。

今回は、リライト機能を使用してログメッセージを置換して整形してみます。



これまでの連載記事:


リライトルールの作成

新しいリライトルールを作成するには、[Log]>[Paths]に移動し、リライトルールを定義するパスの詳細を表示します。

選択したパスの右横のボタンをクリックします。パスの詳細フィールドが表示されます。

図1. パスの詳細表示例

[Rewrites]セクションの[Before message processing]または[After message processing]のボタンをクリックします。新しいリライトルールを作成するための追加のフィールドが表示されます。

図2. リライトルールフィールド例

※[Before message processing]は、ログパスのフィルターまたはパーサーを適用する前にリライトルールを実行します。このログパス内のすべてのメッセージに対して適用されます。

※[After message processing]は、ログパスのフィルターまたはパーサーを適用した後にリライトルールを実行します。

[In Message part]フィールドに変更するメッセージ部を入力します。補完機能により、入力した文字が含まれるメッセージ部がリストされます。

図3. [In Message part]フィールドの補完機能例

[Find]フィールドに検索する式を入力します。PCRE正規表現を使用できます。

[Replace with]フィールドに[Find]式を置換する式を入力します。デフォルトでは、SSBは、式の最初に現れた値を置換します。[Find]式のすべての現れた値を置き換えるには、[Global]オプションをチェックします。マクロを使用するには、マクロ名を波括弧で囲み、$記号を最初につけます。

ここでは、[In message part]に"MESSAGE"、[Find]に"src"、[Replace with]に"srcip"と入力し、[Global]オプションをチェックしています。

図4. リライトルール例(置換)

それでは、以下のログメッセージを送信してみます。

Transaction approved; checkout-id='46255763', src='192.168.91.240', dst='192.168.91.51'
図5. 送信ログメッセージ例

SSBで受信されたログメッセージは、"src"文字が"srcip"に置換されています。これは、異なるログメッセージの形式を統一するような場合に有益です。

図6. 置換ログメッセージ例(画面)
Transaction approved; checkout-id='46255763', srcip='192.168.91.240', dst='192.168.91.51'
図7. 置換ログメッセージ例(テキスト)

IPアドレスのマスク

次に、[Find]式に正規表現を使用して、IPアドレスをマスクしてみます。

ここでは、[In message part]に"MESSAGE"、[Find]に"192\.168\.91\.(\d\d\d|\d\d|\d)"、[Replace with]に"***.***.***"と入力し、[Global]オプションをチェックしています。

図8. リライトルール例(IPアドレスマスク)

※ここで使用している正規表現は便宜的な式になります。実際に汎用的に用いることはできませんのでご注意ください。

SSBで受信されたログメッセージは、IPアドレス部が"***.***.***"に置換されています。これは、秘匿情報(クレジットカード番号)などを保存するログメッセージに含めないようにするのに有益です。

図9. IPアドレスマスクログメッセージ例(画面)
Transaction approved; checkout-id='46255763', srcip='***.***.***', dst='***.***.***'
図10. IPアドレスマスクログメッセージ例(テキスト)

ソースIPアドレスをメッセージに追加

次に、マクロを使用して、ログ送信元のソースIPアドレスをメッセージテキスト部に追加します。

ここでは、[In message part]に"MESSAGE"、[Replace with]に"SOURCEIP=${SOURCEIP}; ${MSG}"と入力し、[Global]オプションをチェックしています。

図11. リライトルール例(ソースIPアドレス追加)

[In Message part]フィールドと同様に、[Replace with]フィールドでも補完機能により、入力した文字が含まれるマクロ名がリストされます。

図12. [Replace with]フィールドの補完機能例

SSBで受信されたログメッセージのテキスト部の先頭に、"SOURCEIP=<ソースIPアドレス>"が追加されています。これは、ログメッセージとともにソースIPアドレスを含めてSIEMなどのログ解析ツールに送信するような場合に有益です。

図13. ソースIPアドレス追加メッセージ例(画面)
SOURCEIP=192.168.93.59; Transaction approved; checkout-id='46255763', srcip='***.***.***', dst='***.***.***'
図14. ソースIPアドレス追加メッセージ例(テキスト)

空白文字置換

最後に、裏技的な使い方としてログメッセージ内の空白文字を異なる文字(ここでは、アンダースコア)に置換します。

SSBは、空白文字(タブを含む)は区切り文字としてハードコーディングされているため、空白文字を含む文字列をトークン(インデックス)として利用できません。空白文字を異なる文字に置換することで空白文字(ここでは、アンダースコアに置換された)を含む文字列を検索できます。

※トークンは59文字で切り捨てられます。これより長い文字列は正しく検索できない場合があります。

ここでは、[In message part]に"MESSAGE"、[Find]に"\s"(特殊文字)と入力し、[Replace with]に"_"(アンダースコア)と入力し、[Global]オプションをチェックしています。

図15. リライトルール例(空白置換)

"Transaction"と"approved"に分かれていた検索文字列が"_Transaction_approved"として(空白を含む文字列を)検索できるようになりました。

図16. 空白置換メッセージ例(画面)
SOURCEIP=192.168.93.59;_Transaction_approved;_checkout-id='46255763',_srcip='***.***.***',_dst='***.***.***'
図17. 空白置換メッセージ例(テキスト)


参考資料

詳細については、syslog-ng Store Box6 LTS管理者ガイドの「10.4 メッセージ部の置換、リライトルールによる新しいマクロの作成」および「10.5 ログメッセージのテキスト部の検索と置換」をご参照ください。

マクロの詳細については、syslog-ng Premium Edition 管理者ガイドをご参照ください。



いかがでしたでしょうか。今回は、リライト機能について紹介しました。


それでは、次回の連載記事をお楽しみに!



SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。


syslog-ng Store Boxについての詳細は、製品紹介ページ・製品ガイドをご参照ください。


評価版のダウンロード

問合わせ