はじめに
AzureでVMを使っていると、「セキュリティ対策どうしよう?」って思うことありませんか?そんなとき頼りになるのがMicrosoft Defender for Cloudです。このサービスを使うことで、Azure VMに対してマルウェア対策や脆弱性スキャンを簡単に導入することができます。
今回は、Defender for Cloudの以下の2つの機能を試してみました。
- マルウェア対策(リアルタイム保護)
- 脆弱性スキャン
「とりあえず触ってみたい」「どんな感じで動くのか知りたい」という方におすすめです。
-
マルウェア対策
ファイルアクセス時にマルウェアを検出・ブロックすることで、感染を未然に防ぎ、ランサムウェアやウイルスによる被害を最小化します。 -
脆弱性スキャン
サーバーにインストールされているOSやソフトウェアの既知の脆弱性を検出し、CVE(Common Vulnerabilities and Exposures)情報に基づいてリスクを可視化します。
Microsoft Defender for Cloudとは
Defender for Cloudは、クラウド全体のセキュリティを保護するための統合ソリューションで、クラウドネイティブアプリケーション保護プラットフォーム(CNAPP)に分類されます。CSPMやCWPPといった複数の機能を組み合わせ、クラウド環境の設定から仮想マシンやコンテナなどのワークロードまで幅広く保護することができます。
主要機能
-
クラウドセキュリティ態勢管理(CSPM)
- クラウド環境全体のセキュリティ構成を評価・改善
- 例:クラウドの設定ミスやポリシー違反を防ぎたい
-
クラウドワークロード保護プラットフォーム(CWPP)
- 実際のワークロード(仮想マシン、コンテナ、DBなど)を脅威から保護
- 例:Azure VMやコンテナをマルウェアや脆弱性から守りたい
-
開発セキュリティ運用(DevSecOps)
- アプリケーションコードレベルのセキュリティを保護
- 例:IaC(Infrastructure as Code)の構成ミス検出やコード上の機密情報を検出したい
各プランについて
Defender for Cloudを有効化すると、Foundational CSPMのみ既定で有効化されます。
それ以外のプランは、サブスクリプションごとに必要なプランを選択し、有効化します。
| カテゴリ | プラン | 主な機能 |
|---|---|---|
| CSPM | Foundational CSPM | セキュリティ推奨事項、セキュリティスコア |
| CSPM | Defender CSPM | 攻撃パス分析、エージェントレス脆弱性スキャン、規制コンプライアンス評価 |
| CWPP | Defender for Servers | WindowsおよびLinuxサーバーの保護 |
| CWPP | Defender for Containers | Kubernetesやコンテナの脆弱性スキャン、ランタイム保護 |
| CWPP | Defender for Databases | DBの脆弱性評価、脅威検出 |
| CWPP | Defender for Storage | ストレージのマルウェアスキャン、不正アクセス検出 |
| CWPP | Defender for AI Services | AIサービスのプロンプト攻撃対策 |
| CWPP | Defender for API | APIの脆弱性評価、脅威検出 |
| CWPP | Defender for App Service | App Serviceの保護 |
| CWPP | Defender for Key Vault | Key Vaultへの不正アクセス検出 |
| CWPP | Defender for Resource Manager | ARM操作の異常検出 |
今回の検証対象であるAzure VMのマルウェア対策や脆弱性スキャンはCWPPのDefender for Serversに含まれます。各プランの概要については、以下よりご確認ください。
既定で有効化されるFoundational CSPMのみ無料で、それ以外のプランは有料です。基本的には「プラン単価×対象リソース数×時間単位」で課金されます。リソース数が多い場合は、高額な費用が発生することがありますのでご注意ください。
Microsoft Defender for Cloud の価格
Microsoft Defender for Serversとは
Defender for Serversは、Azureやハイブリッド環境で稼働するサーバーを保護するためのサービスで、CWPPの中核機能です。Plan1とPlan2の2つのプランから選択することができます。
- Plan1:サーバのマルウェア対策、脆弱性スキャン、EDRなど基本機能を提供
- Plan2:高度な機能(エージェントレススキャン、FIM、JITアクセスなど)もサポート
基本的なマルウェア対策と脆弱性スキャンのみであればPlan1で十分ですが、エージェントレススキャンを使用してパフォーマンスへの影響を最小限に抑えたい場合や、FIMなど高度な機能が必要な場合はPlan2を検討してください。
| 機能 | Plan1 | Plan2 |
|---|---|---|
| マルチクラウド & ハイブリッドサポート | ✅ | ✅ |
| Defender for Endpoint 自動オンボード | ✅ | ✅ |
| Microsoft Defender for Endpoint の EDR | ✅ | ✅ |
| 統合アラート & インシデント管理 | ✅ | ✅ |
| ソフトウェアインベントリ検出 | ✅ | ✅ |
| 規制コンプライアンスの評価 | ✅ | ✅ |
| 脆弱性スキャン(エージェントベース) | ✅ | ✅ |
| 脆弱性スキャン(エージェントレス) | ❌ | ✅ |
| 脅威検出 (Azure ネットワーク層) | ❌ | ✅ |
| OS システムの更新 | ❌ | ✅ |
| Defender 脆弱性の管理 プレミア機能 | ❌ | ✅ |
| マルウェア スキャン (エージェントレス) | ❌ | ✅ |
| マシン シークレットのスキャン (エージェントレス) | ❌ | ✅ |
| ファイル整合性監視(FIM) | ❌ | ✅ |
| Just-In-Time VMアクセス | ❌ | ✅ |
| ネットワークマップ | ❌ | ✅ |
| 無料データ取り込み(500MB) | ❌ | ✅ |
有効化手順
それでは、サブスクリプションに対して、Defender for Servers Plan1を有効化し、Azure VMにマルウェア対策と脆弱性スキャンを導入してみます。今回の検証ではRHEL VMを使用しています。
前提条件
- 以下の要件を満たしたAzure VMがデプロイされていること
- 統合URLリストに記載の通信が許可されていること
マルウェア対策(リアルタイム保護)の有効化手順
基本的な流れについては、Windows/Linuxともに同様ですが、Linuxの場合は他のウイルス対策ソフトウェアとの競合を防ぐため、既定ではリアルタイム保護は無効化されています。そのため、Defender for Servers Plan1を有効化した後、別途OS内にシリアルコンソールなどで接続し、手動でリアルタイム保護を有効化する必要があります。
- Microsoft Defender for Cloudを検索して開きます
- [管理] → [環境設定]を選択します
- サブスクリプションを選択します
- クラウドワークロード保護(CWPP)の一覧から、サーバプランの状態を[オン]にします
- 初期設定ではプラン2が選択されているため、プラン1に変更します
- 画面上部から[保存]を選択し、プランを有効化します
- しばらく待つと、自動オンボード機能により、RHEL VMに対して、MDE.LinuxというAzure拡張機能が追加されます。→うまくいかない場合はこちら
- OS内に接続し
mdatp healthコマンドを実行します。
healthyはtrueとなっており、正常に稼働している一方で、real_time_protection_enabledはfalseとなっており、リアルタイム保護が無効化されていることが確認できます。
-
mdatp config real-time-protection --value enabledを実行し、リアルタイム保護を有効化します。
- 再度
mdatp healthコマンドを実行すると、リアルタイム保護が有効化されていることが確認できます。
マルウェア対策(リアルタイム保護)の動作確認
EICARテストファイル(動作確認用の無害なテスト用ファイル)をダウンロードし、マルウェア対策(リアルタイム保護)が機能していることを確認します。手順は以下を参考にしました。
-
curl -O https://secure.eicar.org/eicar.com.txtを実行し、EICARテストファイルをダウンロードします
-
mdatp threat listコマンドを実行すると、脅威として検出され、EICARテストファイルが隔離されたことを確認できます
- ダウンロード先にもEICARテストファイルが存在しないことを確認できます
- Microsoft Defender for Cloud画面から[セキュリティ警告]を開くと、アラートが表示されます。重要度は高・中・低・情報のうち、
情報として表示されているため、テストファイルとして検知しているようです。
アラートにはメール通知を設定できるため、重要度が「高」以上のアラートについてはメール通知を構成することをお勧めします。ただし、Azure Portalのメール通知では、重要度は「低」「中」「高」からのみ選択できるため、「情報」レベルのアラートがメール通知されることはありません。アラートと攻撃パスの電子メール通知を構成する
脆弱性スキャンの有効化手順
次に、脆弱性スキャン(エージェントベース)を有効化していきます。
- Microsoft Defender for Cloudを検索して開きます
- [管理] → [環境設定]を選択します
- サブスクリプションを選択します
- クラウドワークロード保護(CWPP)の一覧から、サーバプランの監視対象の[設定]を選択します
- [マシンの脆弱性評価]を[オン]にします
- 画面上部の[続行]を選択し、その後の画面で[保存]を選択します
脆弱性スキャンの動作確認
脆弱性スキャンを有効化してしばらく待つと、結果が表示されるようになります。
- Microsoft Defender for Cloudを検索して開きます
- [全般] → [推奨事項]を選択します
- [マシンでは、脆弱性の検出結果が解決されている必要がある]を検索して開きます
- 調査結果に脆弱性の一覧が表示されます
- 選択すると詳細が表示され、「推奨事項」「CVE ID」「対象リソース」を確認できます。以下は表示例です
まとめ
- 簡単な機能だけであればAzure Portalのみで完結可能
- Plan1でAzure VMにマルウェア対策と脆弱性スキャンを簡単に導入可能(有料)
- Linuxはリアルタイム保護がデフォルト無効 → 手動有効化が必要
- 脆弱性スキャンはCVEベースでリスク可視化が可能
- 次のステップ:メール通知設定、CSPMや他のCWPP機能の活用
補足:手動でオンボードする場合
マルウェア対策の自動オンボード(ステップ7)がうまくいかない場合や、すぐにインストールしたい場合は、CloudShell(PowerShell)を使って、Azure拡張機能(MDE.Linux)を手動でインストールできます。
※<resource group>、<vm name>、<OS>は適宜置き換えてください。
$vm = Get-AzVM -ResourceGroupName <resource group> -Name <vm name>
$mdePackage = Invoke-AzRestMethod -Uri https://management.azure.com/subscriptions/$($vm.id.split('/')[2])/providers/Microsoft.Security/mdeOnboardings/?api-version=2021-10-01-preview
#You can add forceReOnboarding = $true below if you want to force onboarding again
#OS == Windows or Linux
$Setting = @{
"azureResourceId" = $vm.Id
"vNextEnabled" = $true
}
$protectedSetting = @{
"defenderForEndpointOnboardingScript" = ($mdePackage.content | ConvertFrom-Json).value.properties.onboardingPackage<OS>
}
Set-AzVMExtension -Name 'MDE.<OS>' -ExtensionType 'MDE.<OS>' -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name -Location $vm.Location -Publisher 'Microsoft.Azure.AzureDefenderForServers' -Settings $Setting -ProtectedSettings $protectedSetting -DisableAutoUpgradeMinorVersion -TypeHandlerVersion '1.0'
We Are Hiring!
