螺子です。本記事では、「SSBからSplunk EnterpriseへHEC転送」と題して、SSBから受信したログをSplunk EnterpriseへHEC(HTTP Event Collector)転送させる方法について投稿します。
はじめに
前回の記事では、Splunk Enterpriseへのログ転送にシスログを使用しました。SSBを前段に置くことで必要なログのみSplunk(SIEM)に転送させ、ログ量を減らしコストを削減させることができました。また、SSBを前段に置くことのメリットについても述べました。本記事を読み進めるにあたっては、前回の記事も参考になるので、ぜひご一読ください。
本記事では、HEC(HTTP Event Collector)を使用してSplunk Enterpriseへログを転送する方法について説明します。
SSBのHEC転送はシスログ転送に比べて以下のメリットがあります。Splunkへのログ転送はHEC転送を使用することをお奨めします。
- ログメッセージをJSON型式で転送するので、Splunkとの親和性が向上します。
- httpsを使用することで通信が暗号化されセキュリティが向上します。
- ロードバランスを使用できるのでSplunkインデクサへの負荷分散が可能でスケーラビリティが向上します。
Splunkデータ入力設定
Splunk EnterpriseでHEC(HTTP Event Collector)型式のログを受信する設定を行います。
グローバル設定
[設定]>[データ]>[データ入力]を選択します。
[ローカル入力]>[タイプ]>[HTTPイベントコレクター]をクリックします。
[グローバル設定]をクリックします。
[グローバル設定]を以下に設定し、[保存]をクリックします。
全トークン: 有効 // 変更
デフォルトソースタイプ: ソースタイプの選択
デフォルトインデックス: デフォルト
デフォルトアプトプットグループ: なし
デプロイサーバーを使用: ☐
SSLを有効にする: ☐ // 変更 [※]
HTTPポート番号: 8088
※ここでは、転送データを覗き見(パケットキャプチャして中身を確認)する為、SSLを無効にしています。
トークン作成
[新規トークン]をクリックします。
[ソースの選択]画面で以下を設定し、[次へ]をクリックします。
名前: SSB // 任意の名前
ソース名上書き: オプション
詳細: オプション
アウトプットグループ(任意): なし
インデクサ確認を有効化: ☐
[入力設定]画面で以下を設定し、[確認]をクリックします。
ソースタイプ: 自動 // デフォルト
インデックス>許可されたインデックスを選択: history, main, summary // デフォルト
インデックス>デフォルトインデックス: デフォルト // デフォルト
[確認]画面で内容を確認し、問題なければ[実行]をクリックします。
正常に作成されると以下の画面が表示されます。トークン値を控えておきます(後から確認することもできます)。
トークン値: a348935e-1fdb-4bf9-ae73-fc66da4be4b1 // トークン値例
ソースタイプ変更
[設定]>[データ]>[データ入力]に移動し、[データ入力]>[ローカル入力]>[HTTPイベントコレクター]をクリックします。
前述で作成したトークの[アクション]>[編集]をクリックします。
[ソースタイプ]を`オペレーティングシステム`>`syslog`に変更して、[保存]をクリックします。
[ソースタイプ]が`syslog`に変更されていることを確認します。
SSBの転送設定
ここでは、既にSSBでWindowsイベントログを受信して保存しているものとします。
※Windowsには、SSBライセンスで無償で利用できるエージェント(syslog-ng Agent for Windows)をインストールし、SSBにWindowsイベントログを送信しています。
syslog-ng Agent for Windowsについては、過去記事「syslog-ng Agent for Windowsのご紹介」を参照してください。
ディスティネーション設定
[Log]>[Destinations]に移動します。
Splunk EnterpriseへHEC転送するSplunkディスティネーションを新規に作成します。
以下を設定し、[Commit]をクリックし設定を保存します(ここでは、ディスティネーション名を`splunk_hec`としています)。以下の設定以外はデフォルト値を使用します。
- [Destination type]: Splunk destination
- [Transport]: HTTP
- [HTTP connection settings]: http://10.0.2.101:8088/services/collector/event [※]
- [Token]: a348935e-1fdb-4bf9-ae73-fc66da4be4b1
- [Index]: main
※SplunkドキュメントSet up and use HTTP Event Collector in Splunk Webの「Send data to HTTP Event Collector on Splunk Enterprise」に以下の記載があります。JSON形式のイベントには`event`エンドポイントを使用します。
<endpoint> is the HEC endpoint you want to use. In many cases, you use the
/services/collector/event
endpoint for JavaScript Object Notation (JSON)-formatted events or theservices/collector/raw
endpoint for raw events
パス設定
[Log]>[Paths]に移動し、`splunk_hec`ディスティネーション用に新しいパスを作成します。
ここでは、前回と同様にカスタムフィルターを設定し、イベントログをフィルターしてSplunk Enterpriseへ転送します。カスタムフィルターは要件に応じて変更できます。今回のカスタムフィルターの内容は以下の通りです。
("${.SDATA.win@18372.4.EVENT_NAME}" eq "Application" and "${.SDATA.win@18372.4.EVENT_TYPE}" ne "情報") // アプリケーションイベントの`情報`を除く
or
("${.SDATA.win@18372.4.EVENT_NAME}" eq "System" and "${.SDATA.win@18372.4.EVENT_TYPE}" ne "情報") // システムイベントの`情報`を除く
or
("${.SDATA.win@18372.4.EVENT_NAME}" eq "Security" and "${.SDATA.win@18372.4.EVENT_TYPE}" eq "Failure Audit" and "${.SDATA.win@18372.4.EVENT_ID}" eq "4625") // セキュリティイベントのログオン失敗
or
("${.SDATA.win@18372.4.EVENT_NAME}" eq "Security" and "${.SDATA.win@18372.4.EVENT_TYPE}" eq "Success Audit" and "${.SDATA.win@18372.4.EVENT_ID}" eq "4624" and message("DESKTOP-10H188M\\\\")) // セキュリティイベントのログオン成功(ローカルユーザー)
ログ受信の確認
Splunk Enterpriseでのログ受信
それでは、SSBからHEC転送されたログがSplunk Enterpriseで受信できているか確認してみましょう。
管理画面の[Search & Reporting]をクリックします。
[サーチ]に以下のサーチ式を入力して検索します。必要に応じて期間などを指定します。
source="syslog-ng" // サーチ式例
無事にログが受信されているようです。また、改行も正しく解釈されています。
HEC転送の覗き見
ここで、HEC転送されたパケットの中身を覗いてみましょう。Wiresharkでパケットをキャプチャし、HTTPストリームの内容を確認します。
HTTPのPOSTメソッドでログデータが転送されており、ログメッセージはJSON形式であることがわかります。
おわりに
いかがでしたでしょうか?
SSBでの設定はディスティネーションとパスの2つの設定でSplunk EnterpriseへログをHEC転送できました。
なお、SSBですべてのログを長期的に保存することで標的型攻撃などSplunk Enterpriseへ転送しなかったログを調査する必要がある場合でも、SSBに保存されたログを高速に検索することが可能で、迅速な調査ができます。
ログを長期的に保存することは有益です。
標的型攻撃等では、最初の攻撃から認知までに1年近くを要する場合もあり、インシデント発生時に原因究明を適切に行うために、過去に遡った調査も必要にることからログは十分な期間保存しておくことが必要だからです。
また、ログを迅速に検索できないと、サイバー攻撃やその他の脅威への対応に時間がかかる可能性があります。
SSBの機能
本記事で使用したSSBの機能は以下の通りです。
- Splunk destination(Splunkディスティネーション)およびパス
参考資料
Splunk destination(Splunkディスティネーション)およびパスについては、syslog-ng Store Box 7 LTS管理者ガイドの「9.6 Splunk へのメッセージ転送」および「10 ログパス:メッセージのルーティングと処理」を参照してください。
過去連載記事
「SIEMのコスト削減とパフォーマンス向上(誤検知防止)の技」連載記事リスト
- (技1)「フィルター(Add filter)を使用したログ容量削減!」
- (技2)「カスタムフィルター(Custom filter)を使用したログ容量削減!」
- (技3)「Message throttleを使用した転送レート制限!」
- (技4)「Rewritesを使用した正規化!」
「リモートアクセスログを調査」連載記事リスト
- (その1)「フィルターログスペースを使用して必要なログのみ検索・抽出してみる!」
- (その2)「マルチログスペースを使用してログを集約してみる!」
- (その3)「リモートログスペースを使用して他のSSBに保存したログを検索・抽出してみる!」
- (その4)「サービス残業させていない?リライトを使用して日時を指定して検索してみる!」
- (その5)「サービス残業させていない?業務時間外勤務の実態をグラフで見やすく!」
- (その6)「サービス残業させていない?レポートを日ごと、週ごと、月ごとに定期的に送信!」
- (その7)「不正アクセスされていない?アクセス元IPアドレスから国・都市・ASNの調査!」
- (その8)「不正アクセスされていない?認証エラーの確認はしなくて大丈夫?」
- (その9)「不正アクセスされていない?認証エラーのログを見逃さない!(コンテンツベースアラート)」
- (その10)「不正アクセスされていない?認証エラーのログを見逃さない!(パターンデータベースアラート)」
- (その11)「不正アクセスされていない?認証エラーのログを見逃さない!(メッセージレートアラート)」
- (その12)「不正アクセスされていない?認証エラーログを可視化(平常時の確認)」
「syslog-ng Store Box大活用連載企画」連載記事リスト
- 第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の有効活用および安定稼働のためのポイントを紹介!」
SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。
syslog-ng Store Boxについての詳細は、製品紹介ページ・製品ガイドをご参照ください。