パス設定(展開)画面 |
螺子です。本連載記事では、リモートアクセスログを、さまざまな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: □
In message part: .SDATA.custom@18372.4.Timestamp Find: .* Replace with: ${S_FULLDATE} Global: ☑ Match case: □
図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
図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)
図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: □
図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大活用」連載記事リスト
- syslog-ng Store Box大活用連載企画第1回「syslog-ng Store Boxを知る」
- syslog-ng Store Box大活用連載企画第2回「syslog-ng Store Boxを仮想環境にインストールする」
- syslog-ng Store Box大活用連載企画第3回「syslog-ng Store Boxで出来ることまとめ」
- syslog-ng Store Box大活用連載企画第4回「Wiresharkでsyslogプロトコルパケットを覗く」
- syslog-ng Store Box大活用連載企画第5回「ciscoスイッチ、fortigateファイアウォールログをSSBで受信!よりログを検索しやすく」
- syslog-ng Store Box大活用連載企画第6回「RPC APIを使ってみる、自社システムに統合!ログ検索の自動化!」
- syslog-ng Store Box大活用連載企画第7回「Active Directoryと連携して、Active Directoryユーザー認証!」
- syslog-ng Store Box大活用連載企画第8回「SSBをHA(High Availability)構成で構築してみる!」
- syslog-ng Store Box大活用連載企画第9回「ログをバイナリおよびテキスト形式で保存、違いを比較してみる」
- syslog-ng Store Box大活用連載企画第10回「ログファイルを共有して、外部ホストからアクセスしてみる!」
- syslog-ng Store Box大活用連載企画第11回「フィルターを使用して、必要なログのみ保存してみる!」
- syslog-ng Store Box大活用連載企画第12回「SSBの監視とアラート!SNMPマネージャーで監視およびSNMPトラップを受信してみる」
- syslog-ng Store Box大活用連載企画第13回「コンテンツベースアラート。重要なログを見逃さない!」
- syslog-ng Store Box大活用連載企画第14回「設定変更履歴。コンプライアンスにも対応!」
- syslog-ng Store Box大活用連載企画第15回「トラブルシューティングに役立つ機能。問題を迅速に解決!」
- syslog-ng Store Box大活用連載企画第16回「ユーザーアクセス制御。アクセス権限とタイプを設定してみる!」
- syslog-ng Store Box大活用連載企画第17回「リライト機能。ログの整形や正規化!」
- syslog-ng Store Box大活用連載企画第18回「バックアップリストア。システムデータおよびログデータをバックアップ、リストアしてみる!」
- syslog-ng Store Box大活用連載企画第19回「アーカイブ/クリーンアップ。ログデータをアーカイブ、クリーンアップしてみる!」
- syslog-ng Store Box大活用連載企画第20(最終)回「SSBの有効活用および安定稼働のためのポイントを紹介!」
SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。