「Back to the future」 | Splunker's ブログ

こんにちは。先日2015年10月21日、ついにその日がやって来ました。バックトゥーザフューチャーの未来の時間が来たのです。昔はSFというジャンルが少年たちの心をワクワクさせていました。しかし年をとるにつれて、その時間に到達してしまうものです。1999年の7月、ノストラダムスの大予言を僕はちょっとドキドキして待っていましたが、結局地球は滅亡しませんでしたし、空からなにかが降ってくることもありませんでした。そして今年自動車は残念ながら空を飛んでいませんでしたが、主人公の2人は健在で自動車メーカーが新車発売開始日の宣伝に起用したり、あるTV番組でサプライズで本人達が登場したり、日本ではタイムマシンに使われた車を本当にゴミを再利用して走らせていました。

データセンターの洞窟をググる。

2002年、ErickとDanという2人のエンジニアがハイテク、製造、製薬、金融などさまざまな業種の数十社のエンジニアに、今困っていることは何かと聞いたところ、ITシステムの障害対応という意見が多かったそうです。まず、障害対応にはログを集める、集めたログをgrepする。わからないので、さらに担当者に聞いてまわる。Webサーバ担当者は問題ないという。ネットワークエンジニアは特に変わりがないという。(エリックにいわせると一番問題になるのはネットワークだ!と言っています)仕方がないので、自作プログラムでgrepから集計プログラムを作成したり、CSVに変更してエクセルやアクセスでレポート作成などをしていたのですが、担当が変わると使われなくなったり、細かい修正をしたりと障害の改善は一向に進みませんでした。彼らはグーグルのような検索エンジンでこれらの膨大なログを検索すれば便利ではないかと気が付いたのです。

Splunkは高級なgrepではない

Splunkはあらゆるテキストデータを取り込んで統合的なインデックスを作ります。簡単にいうとマシンデータを集めてwikipediaをサーバ内で作成しているような感じです。
「log* error」を検索すると、辞書から「log(なんでも) error」を探し始めます。探し先はunixのsecure.log, apacheのログ、アプリケーションのログ、、、等とりこんだログから作った辞書に聞きに行きます。こんな事は時間をかければgrepで出来そうです。しかしサーバ台数が多いデータセンター、月間数億ページビューのECサイト、月曜日の朝にトランザクションが大発生する自社ポータルサイト、、となるとログも膨大になります。実際にあるお客様先でSplunk導入前にネットワークルータの1GBのログをエクセルで開くシーンに同席しましたが、1分以上お互いに無言となりました。(笑)

Splunkを使えば弊社のテストで50GBのデータを2秒で表示6万イベント/秒というスピードで検索ができます。(計測時のSplunkはVer.5.0を使用)

時間を遡り、調査範囲を広げる

Splunkはマシンデータを取り込む際にログのタイムスタンプを自動認識します。Splunk辞書には「_time」というデータの単語が自働的に追加されます。これこそがgrepとの違いで皆さんがSplunkのトリコになる理由の一つです。

Splunkの検索窓に「log*」を入れてみます。右の時間は試しに24時間にしてみましょう。
タイムラインに緑の棒グラフが出てきます。では、その棒グラフの1つをダブルリックしましょう。
さらにグラフが少なくなり、イベントが絞り込まれます。最後の1つのグラフをダブルクリックしますと、イベントにたどり着きます。わずか数秒です。左上に発生時間が表示されています。

時間を遡り、調査範囲を広げる

緑の棒グラフ1つをダブルクリック

緑の棒グラフ1つをダブルクリック
  • 緑の棒グラフ1つをダブルクリック

89543件→1712件→241件のイベントと絞り込まれてきました。
時間も2015/11/07 6:29:39 に絞り込まれています。
ここで、検索窓の文字をDeleteキーで全部消して、「* NOT fail*」と入れて虫メガネボタンをクリックします。

  • 緑の棒グラフ1つをダブルクリック

「nagios」さん(笑)がログインに失敗してますね。

Splunkは一回問題発生時間にたどり着いてから、その同じ時間に他のログで何か発生していないか関連を調べることが可能です。grepで時間を遡って徹夜なんていやですね。私が実際に見たケースでは、Windowsパソコンで秀丸エディタでファイルをいちいち開いて、CTRL+Fで文字列を探し2か月かかると言われたお客様もいらして絶句した記憶があります。

不正通信はいつから起こったのか?その時に誰が何をしているのか?

元々システムの障害対応に使っていた、Splunk。ですがネットワーク機器やセキュリティ機器にも使えます。これは多層防御という方法に有効です。
未知のマルウェアに感染した端末はなんらかの動きをします。外部から社内環境を偵察していたり、広告サーバとの通信、第2弾のマルウェアのダウンロードなどです。
Splunkではファイヤーウォールやプロクシ―サーバのデータを取る事により、普段使わないようなインターネットの通信ポート番号を教えてくれます。この番号をまず見つけます。(たいていの企業では通信しないように設定されています。)

そこを起点にしてアクセスしている社員のパソコンのIPアドレス、ネットワークカードのMACアドレス、ファイルサーバのアクセス情報、PCの操作ログなどを調べていきますが、
今度は逆に3か月前までそのPCのログを遡ります。最初に通信が始まった時期を起点にしてさらに全社のIPアドレスを調べると同じ時期に別の社員が感染していなか、調べる事ができます。これは最近の標的型攻撃ウィルスの場合は内部増殖をするからです。院内感染の対策に似ていますね。

  • 不正通信はいつから起こったのか?その時に誰が何をしているのか?

サイバーエージェント様ではこれら不正通信などのレポート作成に10時間(ほぼ1日)かかっていたのがわずか30分になったという結果が出ています。

900日は気が付かない

最近不動産会社に勤める友人から聞いたのですが、実在の会社名から送られてくるウィルス添付メール、実際に届いているそうです。顧客情報が軒並み狙われていると想像します。懐かしい(笑)マクロウィルスも復活しています。マクロ実行されると外部のサイトへ通信が発生します。これらを常に監視して、通信を遮断しなくてはなりません。ITの世界にも禍は忘れた頃にやってきますね。ファイア・アイ社の説明会では日本の組織はセキュリティ侵害に900日は気が付かないと指摘しています。

…という事は3年分のログを遡る必要があります。Splunkならすぐにできますね!

さて、最後にまとめますと、Splunkはあるイベントを起点にして時間範囲を広げたり、調査ログを広げたりすることで見逃していた原因を自由に高速に発見する事ができるツールなのです。「干し草から針=無駄骨」のgrepから卒業してSplunkで問題解決の時間を短くしたいですね。

2020年にむけて

Back to the future、、、2020年の東京オリンピック、日本は変わっているでしょうか。セキュリティデバイス、高速通信、新しいメディア、新しい端末....時代が変わってもマシンデータは存在していると思います。Splunkはその時も「_time」を刻んでいることでしょう。

それではまた次回! Splunk>Needle in the Haystack!
@fujiosuzuki