螺子(ネジ)です。
本連載記事では、リモートアクセスログを、さまざまなsyslog-ng Store Box (SSB)の機能を使用して調査してみます。
(リモートアクセスのセキュリティ対策については、こちらをご参照ください。)
今回は、リライト機能を使用して、日時を検索条件として指定し閲覧・検索をしてみます。
リライト
前回までで、リモートアクセスのユーザー毎のログオン、ログアウトのログが閲覧・検索できるようになりました。
しかし、特定の時間帯(例えば、就業時間中または業務時間外など)のログオン、ログアウトのログを閲覧・検索したい場合、どうでしょう?
SSBでは、タイムスタンプにインデックス付けされない為、日時を指定して検索することはできません。
「SSBの検索ページはログの抽出(検索)期間を指定できるのでは?」と思った読者の皆様、するどい。SSBにかなり精通していますね。
確かに、SSBの検索ページでログの抽出(検索)期間を指定できるので、一日ごとに時間を指定すれば可能でしょう。
ただし、1週間、あるいは1ヵ月間の中で特定の時間帯のログオン、ログアウトのログを閲覧・検索する場合、1日おきに時間指定を繰り返すことを想像してみてください。
嫌になりますね。
前置きが長くなってしまいましたが、ここでは、リライト機能を使用し、日時を指定して閲覧・検索できるようにしてみます。
リライトを定義するには、[Log]>[Paths]に移動します。リライトを処理するパスを選択し、をクリックします。
画面が展開され、[Rewrites]セクションが表示されます。
[Before message processing]は、フィルターまたはパーサーの実行前に、記述されたリライトが処理されます。
[After message processing]は、フィルターまたはパーサーの実行後に、記述されたリライトが処理されます。
リライトを記述するには、各セクション横のボタンをクリックします。すると新しいリライトを記述するための追加のフィールドが表示されます。
ここでは、[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)例
リライトメッセージ部の閲覧
それでは、リライトしたメッセージ部(動的カラム)がどう表示(出力)されているか見てみましょう。
※動的カラムの表示方法の詳細については、過去記事「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)の値が、それぞれのカラムに出力されていることがわかります。
また、以下のように検索式に動的カラムを使用して(つまり、日時を指定して)検索できることがわかります。
nvpair:.sdata.custom@18372.4.timestamp=2021 Nov 11 08:30:12
図7. 動的カラム(日時)の検索式例
時刻を指定した検索
ここで、業務時間外のログオン、ログアウトのログを確認してみます。
就業時刻を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. 業務時間外を抽出する検索式例
リライトによるデータの匿名(秘匿)化
さて、おまけとして、ここではリライト機能を使用してユーザーを匿名(秘匿)化してみます。
※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. “リライト”設定(匿名化)例
“.SDATA.kv.user”の値が、”xxxxx”に書き換えられ、ユーザー名が匿名(秘匿)化していることがわかります。
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大活用」連載記事リスト
これまでの連載記事(2021年12月全20回公開)
- 第1回「syslog-ng Store Boxを知る」
- 第2回「syslog-ng Store Boxを仮想環境にインストールする」
- 第3回「syslog-ng Store Boxで出来ることまとめ」
- 第4回「Wiresharkでsyslogプロトコルパケットを覗く」
- 第5回「ciscoスイッチ、fortigateファイアウォールログをSSBで受信!よりログを検索しやすく」
- 第6回「RPC APIを使ってみる、自社システムに統合!ログ検索の自動化!」
- 第7回「Active Directoryと連携して、Active Directoryユーザー認証!」
- 第8回「SSBをHA(High Availability)構成で構築してみる!」
- 第9回「ログをバイナリおよびテキスト形式で保存、違いを比較してみる」
- 第10回「ログファイルを共有して、外部ホストからアクセスしてみる!」
- 第11回「フィルターを使用して、必要なログのみ保存してみる!」
- 第12回「SSBの監視とアラート!SNMPマネージャーで監視およびSNMPトラップを受信してみる」
- 第13回「コンテンツベースアラート。重要なログを見逃さない!」
- 第14回「設定変更履歴。コンプライアンスにも対応!」
- 第15回「トラブルシューティングに役立つ機能。問題を迅速に解決!」
- 第16回「ユーザーアクセス制御。アクセス権限とタイプを設定してみる!」
- 第17回「リライト機能。ログの整形や正規化!」
- 第18回「バックアップリストア。システムデータおよびログデータをバックアップ、リストアしてみる!」
- 第19回「アーカイブ/クリーンアップ。ログデータをアーカイブ、クリーンアップしてみる!」
- 第20回「SSBの有効活用および安定稼働のためのポイントを紹介!」