Azure Defender / Azure Security Center を活用した脆弱性スキャン


はじめに

皆さん、Azure Security を活用されていらっしゃいますか?
Azure Security Center (以下ASC)には、Virtual Machine に対して Azure Defender for Server を導入すると、脆弱性スキャンの機能も活用することができます。
公式ドキュメント:Azure およびハイブリッドのマシンに対する Azure Defender の統合された脆弱性評価にも様々な情報が掲載されていますが、エージェント側の動作についての記載が無かったため、本記事で取り上げて紹介してみたいと思います。

1. Azure Defender for Server による脆弱性スキャン構成

ASC にて Azure Defender for Serverを有効にすると、オプションで脆弱性スキャナー機能を有効にすることができます。脆弱性スキャナーは業界で有名な Qualys 社のエージェントを OEM で利用しており、エンドポイントの内部でエージェントが脆弱性をスキャンし、ASCに通知する仕組みになります。

導入に対して、以下注意事項が掲載されています。

  • Azure Virtual Machine は ASC の対象となる Log Analytics ワークスペースに居ること
  • Azure Virtual Machine は Azure Defender 機能を有効にすること(注:課金対象)
  • Azure Virtual Machine は、Outbound で Qualys サーバに接続が可能であること
  • Azure Virtual Machine が Qualys 脆弱性スキャンの対象OS、バージョンであること

2. 試してみる - ASC によるデプロイ

  • はじめに、ASC より Azure Defender for Server を有効にします。
    •  対象となるサブスクリプション毎に有効にします。
      •  管理メニュー「価格と設定」からサブスクリプションを選択し、「サーバー」のプランを有効化します。
      •  本設定を行うことで、Azure Defender for Server が有効化されます。
  • 脆弱性スキャナーエージェントを導入します。
    • 「推奨事項」より「脆弱性評価ソリューションを仮想マシンで有効にする必要があります」選択し、Unhealthy resourceを選んで Fix を選択します。
      • ちょっと分かり難いのですが、推奨事項のメニューを選択すると、脆弱性評価ソリューション == Qualys エージェントが導入されているかどうかの選択になります。
      • 最初は未導入のため、Unhealty resource を選んでFixを押すことで、Qualys Agent の導入がスタートします。

[注意] FixボタンでAgent導入を試みてから、上記画面のように「Healthy resources」に切り替わる時間が24時間(1日)かかるので注意してください。

3. Agent 側で Qualys によるエージェント導入、脆弱性調査が始まっているかをモニターする

公式ドキュメントでは、端末側で動作する Qualys エージェント側の状況について掲載がなく、デバッグなどの調査の際に困ってしまうように思います。Qualys社の情報から、Windows / Linux の出力先が掲載されていましたので、以下参考として記載しておきます。

3.1 Windows Qualys Agent のデバッグログ

Windowsサーバの場合、Qualys Agentのログは以下に出力されます。
C:\C:\Program Data\Qualys\QualysAgent

実際にログファイルをチェックすると、Qualys Agent が Qualys サーバと行った通信内容や、脆弱性スキャンのステータス情報が分かるため、現在サーバでどのようなことが行われているかどうかを調査する際に有益な情報になります。

3.2 Linux Qualys Agent のデバッグログ

Linuxサーバの場合、Qualys Agentのログは以下に出力されます。
/var/log/qualys/

ログは qualys-cloud-agent-scan.log などをtailするのが良さそうです。

4. サーバーの脆弱性情報を出力する

Azure Defender for Server によって、Qualys Agent が導入され脆弱性スキャンが行われると、ASC に脆弱性データが報告されます。

公式ドキュメントに掲載されている通り、脆弱性スキャンは4時間おきに行われており、2021.8 現在インターバルの変更は出来ない仕様になっています。

脆弱性スキャンの結果は、いくつかの方法で確認することができます。

4.1 ASC 「推奨事項」-> 「仮想マシンの脆弱性を修復する必要があります」でリストする(非推奨)

こちらはドキュメントに掲載がある方法で、推奨事項からリストする方法です。
以下が画面になるのですが、ASC の画面から2ステップ踏むことや、可視性があまりよくない点、エクスポート出来ない等の理由から、運用で本手法を使うのは大変だと思われます。

4.2 ASC 「ブック」より、脆弱性テンプレートダッシュボードを用いる

ASC にはブック機能があり、ASC で得られた情報をダッシュボードで作成することができます。
- Security Center データの豊富な対話型レポートを作成する

ブックのテンプレートに「脆弱性評価の調査結果」が用意されています。こちらを用いて、脆弱性スキャンのデータをダッシュボード等に表示しておくと、可視性も高く見やすいのではと思います。

4.3 Azure Resource Graph を用いてエクスポートする

脆弱性スキャンデータの抽出が目的であれば、本方法がお勧めです。
細かい設定内容は以下ブログに掲載されています。

方法は Azure Resource Graph を用いて、以下の Kusto クエリーを打つだけです。

securityresources
 | where type == "microsoft.security/assessments"
 | where * contains "Vulnerabilities"
 | summarize by assessmentKey=name //the ID of the assessment
 | join kind=inner (
    securityresources
     | where type == "microsoft.security/assessments/subassessments"
     | extend assessmentKey = extract(".*assessments/(.+?)/.*",1,  id)
 ) on assessmentKey
| where split(id, "/")[7] == "virtualMachines"
| project assessmentKey, vmname = split(id, "/")[8], subassessmentKey=name, id, parse_json(properties), resourceGroup, subscriptionId, tenantId
| extend description = properties.description,
         displayName = properties.displayName,
         resourceId = properties.resourceDetails.id,
         resourceSource = properties.resourceDetails.source,
         category = properties.category,
         severity = properties.status.severity,
         code = properties.status.code,
         timeGenerated = properties.timeGenerated,
         remediation = properties.remediation,
         impact = properties.impact,
         vulnId = properties.id,
         additionalData = properties.additionalData

結果は Azure Resource Graph エクスプローラーを用いて以下抽出することができます。
データをエクスポートすることもできますし、これは便利!ですね。

5. おわりに

Azure Defender / Azure Security Center ではエンドポイントの脆弱性運用も手軽にできそうです。本記事が Azure Security にご興味ある方々のためになれば幸いです。

*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。