皆さん、こんにちは。Partner SA酒徳です。本日のやってみようシリーズは、Splunkを使ったマルチログの分析方法に関してです。ログソースが複数になるケースが多いかと思いますが、その際にSplunk Cloudを使ってどのように分析をかけることができるかをSCSK株式会社内藤様にご説明頂きます。
みなさん、こんにちは。SCSKの内藤です。Splunk Cloudの使い方Part2ということで、Part1にて取り込んだ複数のログを相関分析する方法、更には外部ファイルと突き合わすルックアップ機能をご紹介させて頂きます。
サービス・製品の説明と特徴
Splunk Cloudは、業界をリードするマシンデータ分析プラットフォームのSplunk EnterpriseをSaaS形式でご利用頂くことができるサービスです。クラウド、オンプレミス環境問わず、テクノロジーインフラ、セキュリティーシステム、及びビジネスアプリケーションから生成されるあらゆるマシンデータを、簡単に収集、分析、アクションすることができます。
Splunk Cloudは稼働率100%のSLAをご提供します。1日数GBのデータ収集から始め、10TB以上の収集規模にまでスケール可能であり、SOC2 Type2やISO 27001認定(*)取得済みの高度にセキュアな環境で安心してデータ分析を実施して頂けます。
(*)http://www.splunk.com/view/splunk-achieves-iso-27001-certification-for-splunk-cloud/SP-CAAAPGG
設定(構築)する内容
Part1ではサンプルログをSplunkへ取込みを行い、簡単なデータ分析までご紹介しました。Part2では取込んだログを使い、Webサーバ(Apache)のaccess.logやOS(Linux)のsecure.logといった複数のデータを使って相関分析を行います。更には、外部ファイルとの連携(ルックアップ)ができるところまで、ご紹介します。
今回はPart1で紹介したお試しサンプルログのダウンロードとSplunk Cloudへのログイン、サンプルログの取込みまでが完了していることを前提に、その後の操作をご紹介していきます。
参考:[Part1:「Splunk Cloud」をはじめてみた]
1. まずはSplunk Cloudへログイン
2. 相関分析を行う前の確認
これからaccess.logとsecure.logをIPアドレスで紐付けて、簡単な相関分析を行います。access.logには取込んだ際に自動で抽出されたclientipというフィールドが抽出されています。Part1でも紹介しましたが、フィールドはソースタイプに沿って抽出されますが、中には抽出されない項目もあります。そんなときは手動でフィールド抽出を行いましょう。
まずはソースタイプaccess_combined_wcookie(access.log)のサーチ結果からフィールドを確認してみます。
sourcetype=access_combined_wcookie
サーチ結果がスムーズに返ってきますね。clientipフィールドはサイドバーから確認します。フィールド名をクリックし、「選択済み」ボタンの「はい」をクリックするとサイドバーの上部に移動し、非常に見やすくなります。
3. 自動では未定義のフィールドを抽出
一方、ソースタイプsecure(secure.log)のログに出力されているIPアドレスはまだフィールドとしては抽出されていません。フィールドの抽出は正規表現で定義しますが、UI画面の操作で簡単に設定することができます。
では、srcipというフィールド名でフィールドを抽出してみましょう。
ソースタイプsecureのサーチ結果からフィールドを確認します。この時点ではまだsrcipフィールドは存在していません。
sourcetype=secure
ひとつイベントを展開し、「イベントアクション」から「フィールドの抽出」をクリックします。
「Delimiters」はCSVのように特定の文字や記号で区切られているようなログの場合に選択しますが、今回は「正規表現」を選択します。
IPアドレスをなぞってフィールド名は”srcip”、「Add Extraction」をクリック。
プレビュー画面にはまったく関係の無い値も抽出されてしまっていますね。
次に正規表現を編集して、不要な行を除外していきます。「正規表現を表示」から正規表現を編集します。編集後は「完了」ボタンをクリック。
変更する内容はこちら → ”from\s(?P<srcip>[^ ]+)\s”
フィールドの抽出が簡単にできました!
サーチを実行してフィールド“srcip“が抽出できているか確認しましょう。見事にサイドバーにsrcipのフィールドが追加されていますね。
sourcetype=secure
ソースタイプsecureにおいてもIPアドレスの抽出が完了しました。これで事前準備は完了です。
3. 最初は手動で分析してみよう!
ソースタイプsecureのsrcipフィールドの中で、トップ2のIPアドレス(87.194.216.51)の行動について、ソースタイプaccess_combined_wcookieを用いて探っていきましょう。
まず、ソースタイプaccess_combined_wcookieを入力し、そして自動抽出されたclientipフィールドの値として上記のIPアドレス(87.194.216.51)を選択します。次に、数をカウントし、視覚化もおこなってくれるSplunkの「stats」コマンドを使います。下記のサーチ文では、IPアドレス(87.194.216.51)において、アクション別の数を表示しています。
また、このstatsコマンド、数のカウントだけではなく、最大値、最小値、平均値など算出することもできます!
sourcetype=access_combined_wcookie clientip=87.194.216.51| stats count by action | sort -count
「視覚エフェクト」タブをクリックして円グラフで表してみましょう。
clientipが「87.194.216.51」で最も多いアクションは「カートに入れる(addtocart)」と、「購入する(purchase)」だということがわかりますね。
5. 本題の相関分析を・・・とその前に!
フィールド定義はソースタイプ毎に行うため、他ソースタイプと同じフィールド名も設定することができます。先ほどはわかり易いようにsrcipという名前で登録しましたが、clientipという名前でフィールドを定義することもできます。
つまり、ソースタイプsecureとソースタイプaccess_combined_wcookieに出力されているIPアドレスをclientipというフィールド名に統一することで簡単に相関分析が可能になります。このフィールド名を揃えるということが相関分析をするための必要条件なのです。
しかし、今回はsrcipフィールドをすでに作ってありますので、clientipという名前でエイリアスを登録する手順をご紹介したいと思います。
「設定」タブから「フィールドのエイリアス」をクリックします。
「新規」をクリックし、以下情報を入力したあとに「保存」します。
宛先App:「search」
名前:「srcip_alias」
ソースタイプ:「secure」
フィールドのエイリアス:「srcip」 = 「clientip」
サーチを実行して確認してみましょう。ソースタイプsecureでclientipに対するサーチ結果が返ってきましたね。
sourcetype=secure clientip=*
6. マルチソースのログを動的に相関分析してみよう
まずはマルチソースを対象としたサーチを実行します。2つのソースタイプが検索対象になっているのがわかりますね。
sourcetype=secure OR sourcetype=access_combined_wcookie
続いてtransactionコマンドを使いclientipフィールドでログを串刺しにします。これを行うことでマルチソースのログがclientipを元に1つにまとまります。
sourcetype=secure OR sourcetype=access_combined_wcookie | transaction clientip
ここでclientip毎のduration(トランザクション内の最初のイベントと最後のイベントのタイムスタンプの差)のTOP5をグラフにしてみましょう。durationはtransactionコマンドを実行すると自動で作成されるフィールドです。
sourcetype=secure OR sourcetype=access_combined_wcookie | transaction clientip | sort – duration | head 5 | stats values(duration) as duration by clientip
最後に、clusterコマンドを使って類似のイベントをクラスタ化(グループ化)して、頻繁に登場するイベントをサーチします。
sourcetype=secure OR sourcetype=access_combined_wcookie | cluster showcount=t | sort - cluster_count | table cluster_count _raw clientip
このように、複数のログを横断的にそして高速に検索できるのがSplunkの大きな特徴です。
7. ルックアップファイルを登録
Splunkではログと外部のファイルをルックアップして紐付けすることが可能です。例えるなら、RDB(リレーショナルデータベース)のSQL言語でいうところのjoin句やExcelのlookup関数などがイメージし易いかと思います。ログには出力されていない情報を表示させたい場合、とても便利ですね!それでは、ルックアップを行ってみましょう。
以下サイトからPrices.csv.zipのファイルをダウンロードし、ファイルを解凍します。
http://docs.splunk.com/images/d/db/Prices.csv.zip
次に「設定」から「ルックアップ」を開き、「ルックアップテーブルファイル」をクリックします。
「新規」をクリックして「prices.csv」をルックアップテーブルファイルとして登録します。宛先Appはデフォルトのまま、宛先ファイル名にはファイル名を入力しましょう。
「保存」ボタンをクリックするとルックアップテーブルの登録が完了します。
続けて、ルックアップ画面に戻り、今度はルックアップ定義をクリックします。以下の通り入力を済ませたら、保存をクリックします。
名前:「price_lookup」
タイプ:「ファイルベース」
ルックアップファイル:「prices.csv」
以上でルックアップファイルの登録とルックアップファイルの定義付けが完了しました。次は、先ほど紐付けを行ったルックアップファイルの中身を確認してみましょう。
8. ログと外部ファイルを紐付けてみよう!
以下サーチを実行し、先ほど登録したルックアップファイルの中身を確認しましょう。先頭には必ずパイプ(|)を入れる必要があります。
| inputlookup price_lookup
ソースタイプaccess_combined_wcookieのログとルックアップ定義「price_lookup」を共通項目「productId」で紐付けます。そして、ルックアップファイルから「price」と「product_name」の情報を抽出し、ログと紐付け表示させます。
以下サーチを実行してみましょう。
「lost」はevalコマンドを使い、サーチ内で新たに作成したフィールドです。evalコマンドは計算結果を挿入するコマンドで、今回は「count」と「price」を乗算し、先頭に”$”、そして3桁毎にカンマを挿入してみました。
まとめ
Part2はいかがでしたでしょうか?Splunkを使ったログ分析には、情報セキュリティやITオペレーションなど様々な用途に対応できる柔軟性があることを感じていただけましたでしょうか。
今回は手動での簡単な相関分析やtransactionを使った動的な相関分析などをご紹介しました。それからルックアップファイルを使った例では、製品の価格をログと紐付けする操作をご紹介しました。その他にもセキュリティ対策の用途として、悪意あるIPアドレスをブラックリストのように登録しておき、ブラックリストのIPアドレスからのアクセスを検知したいときにIPアドレス一覧として使うことも可能です。ぜひ、いろいろ試してみて下さい!
次回以降のブログでは、AWSのログを使ったアクセス分析をご紹介していきたいと思います。
参考情報
- Splunk Cloudの導入実績
世界中のお客様の、セキュリティ分析、ビジネス業務分析、ITオペレーション分析などのSplunk Cloud活用事例は以下サイトをご参照下さい。
http://www.splunk.com/en_us/customers.html#filter/filter1/CloudSolutions
- ライセンス体系とコスト
Splunk Cloudは1日に取込むデータ量に応じた課金体系となっています。
http://www.splunk.com/en_us/products/pricing.html#tabs/cloud
- お問い合わせ先
- Splunk Cloudご利用に際してのお問い合わせは下記宛先までお願い致します。
- SCSK株式会社 Splunk製品担当(https://www.scsk.jp/product/common/splunk/)
03-5166-2826
- SCSKでは、Splunk導入に関する設計、構築、サポート等トータルサービスをご提供いたします。業種問わず様々なお客様への幅広い導入実績から、ニーズに合った最適なサービスをご提案させていただきます。
また、サポート体制も整っておりますので、導入後の運用もご安心下さい。
お気軽に上記お問い合わせ先までご連絡下さい。
- またSplunk Cloudでの設定やサーチに関しての技術的なご質問は、以下コミュニティサイトも是非ご利用下さい。日本語でのご質問も可能です。
https://answers.splunk.com/ - その他技術情報
Splunk Cloud製品ドキュメントページ(英語)
http://docs.splunk.com/Documentation/SplunkCloud
Splunk Searchチュートリアル(日本語)※パート2以降参照下さい。
http://docs.splunk.com/images/d/da/Splunk-6.3.0-ja_JP-SearchTutorial.pdf
****
OpsJAWS メインページはこちら。
クラウド運用にご興味ある方は、こちらからOpsJAWSに登録ください。