2022年1月12日水曜日

syslog-ng Store Box (SSB)でリモートアクセスログを調査(その4)「サービス残業させていない?リライトを使用して日時を指定して検索してみる!」

パス設定(展開)画面

螺子です。本連載記事では、リモートアクセスログを、さまざまなSSBの機能を使用して調査してみます。
(リモートアクセスのセキュリティ対策については、こちらをご参照ください。)


今回は、リライト機能を使用して、日時を検索条件として指定し閲覧・検索をしてみます。






リライト

前回までで、リモートアクセスのユーザー毎のログオン、ログアウトのログが閲覧・検索できるようになりました。

しかし、特定の時間帯(例えば、就業時間中または業務時間外など)のログオン、ログアウトのログを閲覧・検索したい場合、どうでしょう?

SSBでは、タイムスタンプにインデックス付けされない為、日時を指定して検索することはできません。

「まてよ、SSBの検索ページはログの抽出(検索)期間を指定できるのでは?」と思った読者の皆様、するどい。SSBにかなり精通していますね。

確かに、SSBの検索ページでログの抽出(検索)期間を指定できるので、一日ごとに時間を指定すれば可能でしょう。ただし、1週間、あるいは1ヵ月間の中で特定の時間帯のログオン、ログアウトのログを閲覧・検索する場合、1日おきに時間指定を繰り返すことを想像してみてください。嫌になりますね。


前置きが長くなってしまいましたが、ここでは、リライト機能を使用し、日時を指定して閲覧・検索できるようにしてみます。

リライトを定義するには、[Log]>[Paths]に移動します。リライトを処理するパスを選択し、をクリックします。

画面が展開され、[Rewrites]セクションが表示されます。

図1. リライト設定画面例

[Before message processing]は、フィルターまたはパーサーの実行前に、記述されたリライトが処理されます。

[After message processing]は、フィルターまたはパーサーの実行後に、記述されたリライトが処理されます。

リライトを記述するには、各セクション横のボタンをクリックします。新しいリライトを記述するための追加のフィールドが表示されます。

図2. リライト入力状態

ここでは、[Before message processing]に以下のリライト設定を入力します。

各フィールドの意味は、[In Message part]は変更するメッセージ部、[Find]は検索する式、[Replace with]は置換する式、[Global]は [Find]式のすべての現れた値を置き換えるかどうかを指定し、[Match case]は[Find]式で大文字小文字を区別するかどうかを指定します。

[In Message part]フィールドに入力したメッセージ部は、メタデータ(key-valueペア)としてSSBにより自動的に追加され、マクロとして利用でき、動的カラムとしてSSBの検索インターフェースに表示することができます。つまり、この動的カラムは受信するメッセージフォーマット(BSD-syslogあるいはIETF-syslog)に関係なく追加し、利用できます。

※[In Message part]に指定したフィールドが存在しない場合、自動的に動的カラム(マクロ)が作成されます。
※動的カラム(マクロ)名に、既存のマクロ名を使用しないでください。同じ場合、マクロ値は上書きされます。

In message part:	.SDATA.custom@18372.4.hh
Find:			.*
Replace with:		${HOUR}
Global:			☑
Match case:		□
図3. "リライト"設定(その1)例
In message part:	.SDATA.custom@18372.4.Timestamp
Find:			.*
Replace with:		${S_FULLDATE}
Global:			☑
Match case:		□ 
図4. "リライト"設定(その2)例
図5. "リライト"設定画面例

リライトメッセージ部の閲覧

それでは、リライトしたメッセージ部(動的カラム)がどう表示(出力)されているか見てみましょう。
※動的カラムの表示方法の詳細については、過去記事「syslog-ng Store Box (SSB)でリモートアクセスログの調査(その2)「マルチログスペースを使用してログを集約してみる!」」を参照してください。

検索ページ([Search]>[Logspaces])に移動し、ログスペースを選択(ここでは、"remotelog")します。をクリックし、動的カラム("nvpair:.sdata.custom@18372.4.timestamp"と"nvpair:.sdata.custom@18372.4.hh")を選択して表示します。

"nvpair:.sdata.custom@18372.4.timestamp"には、年が含まれたBSD-syslogスタイルのタイムスタンプフォーマット(例、2021 Nov 11 08:30:12)、"nvpair:.sdata.custom@18372.4.hh"には、時間(例、08)の値が、それぞれのカラムに出力されていることがわかります。

図6. リライトしたメッセージ部の出力例
また、以下のように検索式に動的カラムを使用して(つまり、日時を指定して)検索できることがわかります。
nvpair:.sdata.custom@18372.4.timestamp=2021\ Nov\ 11\ 08:30:12
図7. 動的カラム(日時)の検索式例
図8. 日時(動的カラム)を指定した検索例

時刻を指定した検索

ここで、業務時間外のログオン、ログアウトのログを確認してみます。

就業時刻を8時から18時までとし、それ以外の時刻を業務時間外とみなします。

ちょっと長くなりますが、以下の検索式を使用することで業務時間外のログオン、ログアウトのログを抽出できます。
(以降より、動的カラム"nvpair:.sdata.custom@18372.4.timestamp"の表示を無効にしています。)

NOT (nvpair:.sdata.custom@18372.4.hh=08 OR nvpair:.sdata.custom@18372.4.hh=09 OR nvpair:.sdata.custom@18372.4.hh=10 OR nvpair:.sdata.custom@18372.4.hh=11 OR nvpair:.sdata.custom@18372.4.hh=12 OR nvpair:.sdata.custom@18372.4.hh=13 OR nvpair:.sdata.custom@18372.4.hh=14 OR nvpair:.sdata.custom@18372.4.hh=15 OR nvpair:.sdata.custom@18372.4.hh=16 OR nvpair:.sdata.custom@18372.4.hh=17 OR nvpair:.sdata.custom@18372.4.hh=18)
図9. 業務時間外を抽出する検索式例
図10. 業務時間外のログオン、ログアウトの出力例

リライトによるデータの匿名(秘匿)化

さて、おまけとして、ここではリライト機能を使用してユーザーを匿名(秘匿)化してみます。
※IPアドレスの匿名(秘匿)化については、過去記事「syslog-ng Store Box大活用連載企画第17回「リライト機能。ログの整形や正規化!」」も参照してください。

ログパスの[Rewrites]>[After message processing]セクションに以下を入力します。

[After message processing]セクションにリライトを設定していることに注意してください。動的カラム(".SDATA.kv.user")はkey-value パーサー実行後に生成される為、[Before message processing]セクションに設定すると値が上書きされてしまうからです。

In message part:	.SDATA.kv.user
Find:			.*
Replace with:		xxxxx
Global:			☑
Match case:		□ 
図4. "リライト"設定(匿名化)例
図5. "リライト"設定(匿名化)画面例

".SDATA.kv.user"の値が、"xxxxx"に書き換えられ、ユーザー名が匿名(秘匿)化していることがわかります。

図7. ユーザー名の匿名(秘匿)例

SSBの機能

本記事で使用したSSBの機能は以下の通りです。

  • リライト
  • マクロ

参考資料

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

マクロの詳細については、syslog-ng PE 管理者ガイドの「14.1 マクロおよびテンプレートを使用したメッセージフォーマットのカスタマイズ」を参照してください。

また、過去記事「syslog-ng Store Box大活用連載企画第17回「リライト機能。ログの整形や正規化!」」も合わせてご参照してください。




いかがでしたでしょうか。今回は、リライト機能およびマクロ機能について紹介しました。次回は統計情報機能を使用してリモートアクセスログを調査してみます。



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


「syslog-ng Store Box大活用」連載記事リスト



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


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


評価版のダウンロード

問合わせ