これは、当社組織内でTaniumプラットフォームをどのように活用しているかを探る、全4回にわたるブログシリーズの第3回です。 今回の記事では、SecOpsエンジニアのグレッグ・ポティエ氏が、TaniumとSplunkを組み合わせてパッチ管理データを提供する方法について解説します。CSOやその他のセキュリティ責任者は、このデータを活用して潜在的なリスクを評価することができます。
平均時間の追跡
ネットワーク上のすべてのデバイスについて、「パッチ適用までの平均時間」を追跡することは、どれほど有用でしょうか? CIO、CSO、あるいはオペレーション担当副社長から求められた際、いつでも未解決のパッチの数に関する正確な結果を即座に提供できるようになったらどうでしょうか?
これらは、私たちタニウムで自問し始めた問いでした。 これらの回答は、当社のセキュリティおよびITの責任者にとって真のビジネス価値をもたらします。彼らはこのデータを活用して、攻撃対象領域やパッチ適用状況を継続的に監視することができます。
確かに、多くの組織では、自社のネットワーク全体におけるパッチの適用状況さえ把握できていないのが実情ですが、Taniumではこれを把握しているだけでなく、パッチ適用にかかる平均時間を追跡するための指標も作成しました。
これは、Tanium社において、Taniumプラットフォームを活用し、当社のパッチ管理の実施状況に関する指標を収集する上で、最も正確な方法です。 Tanium を使用すれば、大規模な企業であっても、未適用の重要なパッチや、インストールされているすべてのアプリケーションの状態など、正確な情報を簡単に収集することができます。 CSOやその他のセキュリティ責任者にとって、企業全体における未適用パッチの状況を把握することは、潜在的なリスクを評価する上で重要な指標となります。 Taniumを活用すれば、さらに一歩踏み込んで、企業全体でのパッチ適用にかかる平均時間を測定することで、パッチ適用の効率性を評価することができます。 Taniumと を活用して、これを実現する方法は以下の通りです。Splunk (新しいタブで開きます)データ分析ツールである。
Tanium Connect
まず、Tanium Connect (新しいタブで開きます) を設定し、Taniumのクエリ「すべてのマシンからコンピュータ名、オペレーティングシステム、および利用可能なパッチを取得する」をSplunkに送信するようにします。 オペレーティングシステムは任意の項目です。将来、特定のオペレーティングシステムに基づいて検索結果を絞り込む必要が生じた場合に備えて、追加しています。

Taniumで「Connect」を作成したら、それを実行し、Splunkで確認して、結果が期待どおりに処理されていることを確認します。 この接続は「Tanium」としてインデックス登録されるように設定されているため、検索は「index="tanium"」というクエリから開始します。 次に、次のように追加します:
<code>index=”tanium”
Question="すべてのマシンからコンピュータ名、シリアル番号、および利用可能なパッチを取得する"
</code>これにより、コンピュータ名ごとに一覧表示された、利用可能なすべてのパッチ結果が表示されます。 これで、タイトル、深刻度、CVE_IDなどを含む、すべてのパッチの一覧が揃いました。 (注:以下のスクリーンショットでは、結果の見やすさを高めるためだけに表形式を採用しています。この書式設定は、それ以外には必要ありません。)

ここで、深刻度別パッチの状況をわかりやすく可視化します。 重複した結果を処理しないようにするため、接続情報を次のような重複排除関数にパイプで渡します:
<code>| Computer_Serial_Number、KB_Article、CVE_ID、Titleの重複排除</code>
これにより、これらの値(Computer_Serial_Number、KB_Article、CVE_ID、Title)が1回のみ報告され、一意であることが保証されます。 一意の値が得られたら、簡単な関数を実行して、深刻度ごとに結果をグラフ化します:
<code>| 深刻度別のチャート数
</code>この結果から、各深刻度タイプの総件数と割合を示す見やすいグラフが作成されました:

これで、深刻度別に分類された現在未解決のパッチを一覧表示できる、信頼性の高い自動化されたダッシュボードが整いました。 なお、Linux や Mac OS X など、他のオペレーティングシステムを実行しているマシンについても、同様に簡単に処理を行うことができます。 「パッチ適用までの平均時間を計算して表示する自動化ソリューション」を作成するという目標に向けて、引き続き進めていきましょう。
次に、基本クエリに戻り、重複排除を解除して、受信したすべてのパッチログを処理できるようにします。 次に、次のように追加します:
<code>| Computer_Name、CVE_ID、Severity、Title ごとに、_time の最小値を First、最大値を Last として集計</code>
ここでは、統計機能を活用して、コンピュータ名、CVE_ID、深刻度、およびタイトルごとに、パッチが最初に報告された日時と最後に報告された日時を確認します。 このレポートには、パッチが最初に確認された日時と最後に確認された日時が記載されています。 ここで、2つの値の差を求め、その値がどのくらいの期間に相当するかを確認し、エポックタイム形式を読みやすい文字列に変換します:
<code>| eval diff = Last - First | eval diff2 = tostring(diff, "duration")</code>
結果には、コンピュータ名、パッチ情報、および各コンピュータにおいて各パッチが「未解決」として報告されていた期間が一覧表示されます。 それでは、これらの差の値について、実際の最大値、最小値、および平均値を計算します:
<code>| 統計値:件数、最大差、最小差、平均差
</code>以上です。 これで、すべてのパッチの最大値、最小値、および平均値がわかりました。 mean(diff) の名前を average に変更し、小数点以下の余分な桁を四捨五入し、日・時間・分などがきれいに表示されるようにフォーマットされた文字列を作成することで、見栄えを良くします。
<code>| mean(diff) の名前を average に変更 | eval average = round(average, 0) | eval averageTime = tostring(average, </code>
このブログ記事では、Taniumに保存されていた1つのクエリを、Tanium Connectを介して1日1回Splunkに送信することで、2つの重要な自動メトリクスを作成しました。 IT部門のリーダーは、この情報を活用して、現在の状況および経時的な変化において、攻撃対象領域やパッチ適用状況を評価することができます。
これは全4回シリーズの第3回です。 『 』()の第1部()では、Tanium社において重要な脆弱性をどのように追跡しているかについて解説しています。 『 』()の第2部()では、Taniumを活用して重要なコンプライアンス指標を追跡する方法について解説しています。 『 』()の第4部()では、平均対応時間に関するガイドラインをご紹介するとともに、迅速な対応があらゆるビジネスにとってなぜ重要なのかについて解説しています。
著者について:グレッグ・ポティエ氏は、Tanium社のセキュリティエンジニアであり、セキュリティの自動化、データ分析、侵入テスト、ソフトウェア開発の分野で豊富な経験を有しています。 Taniumに入社する前は、グレッグ氏は米国の複数の情報機関および政府機関でシニアエンジニアを務めていました。 グレッグ氏はジョージ・メイソン大学でコンピュータサイエンスの修士号を取得し、在学中にはNSA情報保証サイバー奨学金を授与されました。
