TIPS & TRICKS

Splunk Streamを使って DNS データを Splunking! - 簡単な方法

DNSは、分析のためにSplunkにインジェストする最も強力なデータソースの1つであり、セキュリティやIT運用のユースケースを満たすため、あるいはビジネスの運用を洞察するためにも利用できます。Splunkに取り込むデータソースを1つだけ選ぶとしたら、それはDNSデータにしてください」とRyan Kovar氏は言います。

これを実現するには、特にMicrosoft Windows環境では必ずしも容易ではありません。DNSデバッグモードを有効にするのも選択肢の一つですが、DNS サーバーに負荷がかかりますし、Splunkでうまく表示するには多くの前作業が必要になります。

新しく公開された「Splunk Essentials For Wire Data」アプリでは、ワイヤーデータを中心に組織内で適用できるユースケースが多数紹介されています。このアプリのカテゴリの1つは“Network Resoution Analysis” で、主にDNSデータに焦点を当てています。このアプリには以下のようなユースケースが含まれています。

  • Misconfigured DNS endpoints : 誤って設定されたDNSエンドポイント
  • Detecting IOC’s through DNS : DNSによるIOCの検出
  • Detecting Dynamic DNS domains : ダイナミックDNSドメインの検出
  • Detecting domain spoofing : ドメインスプーフィングの検出
  • Resolution of sites outside the top 1 million : 上位100万件以外のサイトの名前解決

これらの各例では、Splunk Stream を使用して DNS データを環境に取り込むことの価値や、セキュリティや IT 運用のユースケースとの関連性が強調されています。

では、どのようにしてこの魔法を実現するのでしょうか?必要な設定を順を追って説明していきましょう。ここでは、Splunk 環境があり、Splunk Stream App がインストールされていることを前提とします。そうでない場合は、まず「Installing and Managing Splunk Stream in a Distributed Environment」を参照してください。

Splunk Stream App の中で、設定 > Configure Stream を選択します。

Configure Streams ダッシュボードには、収集するプロトコル情報のデフォルト設定が表示されます。

キャプチャしたいDNSの詳細を収集するための新しいストリームを作成します。New Stream ボタンを選択して、Metadata Stream を選択することから始めます。

これで、ストリームを設定するためのワークフローに入ります。

最初のステップでプロトコルとしてDNSを選択します。

DNSを選択したら、を選択したら、データを識別するのに役立つように、Name とDesctiption を入力します。[Next >]をクリックします。


集計ステップで、Aggregation に「No」が選択されていることを確認してから、[Next >] をクリックします。(個々のDNSレコードを確認すべきなので、集約 (Aggregation) はするべきではありません)。

フィールド画面で、Splunk に収集、格納する(DNS に関連する)フィールドを選択します。 デフォルトですべてのフィールドが選択されていないことに注意してください。

収集するDNSフィールドを選択したら、[Next >]をクリックします。

収集したデータのフィルタリングをフィルタ画面で定義します。フィルタは前の画面で選択したフィールドに基づきます。例えば、タイプ「A」のクエリからのデータのみを収集したい場合は、ここで定義します。

フィルターは、しばらくの間データを収集した後で、自分が何を収集して、何を保持しておきたいか(または破棄したいか)が分かったら、後で戻っていじってみたくなるかもしれません。

フィルタを定義した後、再度 [Next >] ボタンを選択して設定画面に移動し、DNSデータの宛先インデックスを定義します。

ドロップダウンメニューから目的のインデックスを選択します。トップメニューにある 設定 > インデックスから、カスタムインデックスを作成した後で、ここで作成済みのカスタムインデックスを選択することができます。(default インデックスを選択すると main インデックスに格納されます)

宛先インデックスを選択した後、まだデータ収集を開始する準備ができていない場合は、Disabled モードで設定を保存することができます。また、収集するデータの量を把握するために、Estimate モードにすることもできます。


Groups 画面では、Stream 設定を関連付けるグループを選択することができます。

最初の選択肢は、環境内の Windows DNS サーバーのみにデプロイすることです。その場合は、Splunk Universal Forwarderをそれらのホストにデプロイし、それらのサーバーを含む Stream グループを作成してください。このオプションはクライアント側とサーバー側のリクエストとレスポンスをキャプチャします。これは実際のエンドポイントに触れることなく行うことができ、環境からすべての DNS データを取得することができます。

2つ目のオプションは、DNSサーバーインフラに全く何もインストールせずにエンドポイントマシンである分散フォワーダーからDNSデータを収集したい場合、新しいグループを作成してフォワーダーを追加します。このオプションを使用すると、クライアント側のDNSリクエストとレスポンスを見ることができます。環境内のDNSサーバやUFを持たないエンドポイントからのリクエストは表示されません。

Splunk Stream を使用するためのオプションやアーキテクチャは他にもありますが、それについては後のブログ記事で説明します。例えば、ネットワークの TAP ポートや SPAN ポートからトラフィックを受信する Stream フォワーダーを使用したり、ネットフローや sflow データをキャプチャする Stream の機能を活用したりすることができます。

最後に、Create Stream をクリックして設定を保存します。これで完了です。

設定の検証

設定を有効にしていれば、DNSデータを収集しているはずです。これを検証するには、以下のようにサーチします。(※default インデックスを指定している場合)

sourcetype=stream:dns

JSON形式のDNSトランザクションイベントが確認でき、左側に利用可能なフィールドが表示されます。

Splunk は DNS データ(netflow も含む)をインジェストするための低価格ライセンスを提供しています。このライセンスを利用すると、通常のSplunk Enterpriseライセンスよりも1GBあたりのコストを抑えて、個々のソースタイプ(私たちの場合はDNS)をインジェストすることができます。

次のステップは?

Splunkbaseにアクセスして、新しい Splunk Essentials for Wire Data appをダウンロードしてみてはいかがでしょうか。このアプリでは、セキュリティ、IT部門、不正行為など49のユースケースが紹介されています。ダウンロードはこちらから

このコンテンツの多くを作成したSteve Brant氏とDavid Veuve氏に感謝します。Steve Brant氏David Veuve氏に感謝します。

*このブログはこちらのSplunk英語ブログの翻訳です。

Simon O'Brien
Posted by

Simon O'Brien

I am a Sales Engineer based out of Brisbane, Australia. I live in the best place in the world, and have the best job in the world.

TAGS
Show All Tags
Show Less Tags