Windowsの運用管理を快適にする10の裏ワザ/表ワザ
[ テクニカルライター 山市 良 ]

テクニック.10 - マルウェア対策の最適化

2022年01月21日配信
2023年09月28日更新

yamaichi_tec010_top_1800x540

 

 Windows 10およびWindows Server 2016以降には、Microsoft Defenderウイルス対策(旧称、WindowsDefender)が標準搭載されており、サードベンダーのウイルス対策製品がインストールされていない限り既定で有効です。サードベンダーのウイルス対策製品がインストールされている場合は、⾃動的に無効化されます。

 マルウェア対策としてMicrosoft Defenderウイルス対策を利⽤している場合、リアルタイムスキャンが有効であること、エンジンと定義ファイル(セキュリティインテリジェンス更新プログラム)が最新版に更新されていること、および定期的にスキャンが実⾏されていることが⾼いセキュリティを維持する上で重要です。

 その上で、特にサーバーのパフォーマンスを最適化するためには、適切な除外設定を⾏うことが重要です。除外設定なしで運⽤する場合、パフォーマンスが劣化したり、サービスやアプリケーションでエラーが発⽣して正常に動作しなくなったりすることがあります。ここではMicrosoft Defenderウイルス対策の除外設定の具体的な⽅法、およびHyper-Vの役割とWindowsコンテナー⽤コンテナーホストのための除外設定について説明します。

 

■ Microsoft Defenderの⾃動除外

 Windows Server 2016以降のMicrosoft Defenderウイルス対策では、⾃動除外(Automatic Exclusions)という機能を備えており、既定で有効になっています。この機能はWindows 10にもあり既定で有効ですが、特にさまざまな役割やサーバーアプリケーションを実⾏するWindows Serverでこの機能が有効になっていることが重要です。

 Microsoft Defenderウイルス対策の⾃動除外が有効になっているかどうかは、PowerShellの以下のコマンドラインの実⾏結果がFalseになっているかどうかで分かります。

(Get-MpPreference).DisableAutoExclusions
False・・・自動除外が有効

 

 Windows Serverで⾃動除外が有効になっている場合、有効になっているサーバーの役割に応じて定義済みの除外設定 が適⽤されます。

具体的にはWindows Updateのデータベースやログファイル、Windowsのセキュリティデータベース、グループポリシー関連ファイル、WINSデータベース、ファイルレプリケーションサービス(FRS)データベース、分散ファイルシステムレプリケーション(DFSR)のデータベースとプロセス、Hyper-V関連のファイルの種類、ディレクトリ、およびプロセス、Active DirectoryのNTDSデータベース、SYSVOL共有、DHCPサーバーのデータベース、DNSサーバーのデータベース、クラスター共有ストレージ、プリンタースプーラーのディレクトリおよびプロセス、IIS Webサーバーのディレクトリとプロセス、Windows Server Update Services(WSUS)のコンテンツとデータベースなどが除外されます。

詳しくは、以下のドキュメントで説明されています。

Windows Server で Microsoft Defender ウイルス対策の除外を構成する
https://docs.microsoft.com/ja-jp/windows/security/threat-protection/microsoft-defender-antivirus/configure-server-exclusions-microsoft-defender-antivirus

 例えば、Hyper-Vの役割が有効になっている場合、表1に⽰す除外設定が適⽤されます。

 

 表1 Hyper-Vの役割の自動除外設定

ファイルの種類の除外 .vhd、.vhdx、.avhd、.avhdx、.iso、.rct、.vsv、.vmcx、.vmrs
ディレクトリの除外 %ProgramData%¥Microsoft¥Windows¥Hyper-V
%ProgramFiles%¥Hyper-V
%Public%¥Documents¥Hyper-V¥Virtual Hard Disks
%SystemDrive%¥ProgramData¥Microsoft¥Windows¥Hyper-V¥Snapshots
プロセスの除外 %systemroot%¥System32¥Vmms.exe(Virtual Machine Management Service)
%systemroot%¥System32¥Vmwp.exe(Virtual Machine Worker Process)

 

 

■ Microsoft Defenderの⾃動除外+カスタム設定

 ⾃動除外設定でカバーされない場所に除外するべきデータベースやファイルを配置している場合は、⾃動除外に加えて、カスタム設定を追加することを推奨します。また、⾃動除外設定の対象外の役割やアプリケーションを利⽤している場合もカスタム設定を検討してください。除外設定によりパフォーマンスを改善できる場合があります。⼀⽅で、除外対象からはマルウェアが検出されなくなるというデメリットにも留意してください。

 

■ カスタム除外設定の追加

 Microsoft Defenderウイルス対策の除外設定は、Windows 10やWindows Server 2016以降のバージョンによって異なります。Windows Server 2016デスクトップエクスペリエンスの場合、[設定]アプリの[更新とセキュリティ]-[Windows Defender]-[除外]から除外を編集します。Windows Server 2019デスクトップエクスペリエンスの場合は、[Windowsセキュリティ]の[ウイルスと脅威の防⽌]-[ウイルスと脅威の防⽌の設定]の[設定の管理]から除外設定を編集します(画⾯1)。

 

001

画面1 Windows Server 2019デスクトップエクスペリエンスでのカスタム除外設定

 

 PowerShellのDefenderモジュールのコマンドレットを使用すると、Windowsのバージョンによる設定の場所の違いや、インストールの種類(デスクトップエクスペリエンスとServer Core)に関係なく、一貫性のある方法で除外設定が行えます(画面2)。

Get-MpPreference |Select  Exclusion* 
Set-MpPreference -ExclusionExtension ".拡張子" (新たに設定)  
Add-MpPreference -ExclusionExtension ".拡張子" (設定を追加)  
Remove-MpPreference -ExclusionExtension ".拡張子" (設定を削除)  
Set-MpPreference -ExclusionPath "ディレクトリパス" (新たに設定)  
Add-MpPreference -ExclusionPath "ディレクトリパス" (設定を追加)  
Remove-MpPreference -ExclusionPath "ディレクトリパス" (設定を削除)  
Set-MpPreference -ExclusionProcess "実行可能ファイルのパス"  (新たに設定)  
Add-MpPreference -ExclusionProcess "実行可能ファイルのパス"  (設定を追加)  
Remove-MpPreference -ExclusionProcess "実行可能ファイルのパス"  (設定を削除)  

 

002

画面2 PowerShellのDefenderモジュールのコマンドレットを使用したカスタム除外設定。なお、自動除外の設定内容は表示されない

 

Hyper-Vホストのためのカスタム設定

 以下の「Hyper-V ホストに推奨されるウイルス対策の除外」のドキュメントの説明によると、自動除外に含まれない以下のファイルの種類、ディレクトリ、およびプロセスを除外することが推奨されています。Hyper-V環境ではホストとゲストの両方でMicrosoft Defenderウイルス対策またはサードベンダーのマルウェア対策製品の保護が働きます。スキャンが重複しないようにホスト側での除外設定は重要です。

  • VHDセット(.vhds)(Windows Server 2016以降)

  • VMゲスト状態ファイル(.vmgs)(Windows Serverバージョン1709以降の仮想マシン構成バージョン8.2以降)

  • メモリ状態ファイル(.bin)(Windows Server 2012 R2の古い仮想マシン構成バージョン5.0)

  • 仮想マシン構成ファイルが配置されているカスタムディレクトリ

  • 仮想ハードディスクファイルが配置されているカスタムディレクトリ

  • Hyper-Vレプリカを使用している場合はレプリケーションデータのディレクトリ

  • SMB 3.0共有に仮想マシンを配置している場合は、共有しているディレクトリ(ファイルサーバー側のウイルス対策で除外)

  • %SystemRoot%¥System32¥Vmsp.exe(Virtual Machine Security Process、Windows Server 2016以降)

  • %SystemRoot%¥System32¥Vmcompute.exe(Hyper-V Host Compute Service、Windows Server 2019以降)

Hyper-V ホストに推奨されるウイルス対策の除外

https://docs.microsoft.com/ja-jp/troubleshoot/windows-server/virtualization/antivirus-exclusions-for-hyper-v-hosts

 

Windowsコンテナーのためのカスタム設定

 Windows Server 2016以降の新しい機能である、Mirantis Container Runtime(旧称、Docker Engterprise)対応のWindowsコンテナーに関しては自動除外の対象として明記されていません。
 Microsoft Defenderウイルス対策は、Windows Serverベースのコンテナーホストの保護をサポートしますが、Windowsコンテナー内ではMicrosoft Defenderウイルス対策はサポートされません。WindowsコンテナーのベースOSイメージであるservercoreおよびnanoserverにはMicrosoft Defenderウイルス対策のバイナリ(C:¥Program Files¥Windows Defender)やサービス(WinDefend)は含まれません。言い換えると、Windowsコンテナー内の実行環境でMicrosoft Defenderによる保護は提供できないため、コンテナーのイメージやプロセスをコンテナーホスト側で保護することが重要です。
 Microsoft Defenderを対象としたものではありませんが、コンテナーホストにおけるマルウェア対策の最適化については、マイクロソフトおよびDockerのドキュメントで説明されています。
Windows コンテナー用のウイルス対策最適化
https://docs.microsoft.com/ja-jp/windows-hardware/drivers/ifs/anti-virus-optimization-for-windows-containers
Antivirus software and Docker
 https://docs.docker.com/engine/security/antivirus/

 Dockerドキュメントによると、Dockerが使用中のファイルをマルウェア対策ソフトウェアがスキャンすると、対象のファイルがロックされることにより、dockerコマンドのハングが発生する可能性があるそうです。この問題を緩和するには、Dockerのデータディレクトリ(Windows Serverベースのコンテナーホストの場合の既定はC:¥ProgramData¥docker)を保護の対象から除外します。しかし、除外により、イメージ内にウイルスやマルウェアが含まれる場合やコンテナーボリュームに書き込まれた場合、それを検出できません。なお、除外設定なしでも通常は問題なく機能しますが、スキャンの負荷がコンテナーの開始と実行に影響する可能性はあります。
 Dockerのデータディレクトリ(既定のパスまたはdaemon.jsonのgraphパスで指定されたカスタムパス)を保護から除外する場合は、Dockerサービスの停止、除外の解除、データディレクトリのスキャン、除外の再設定、Dockerサービスの起動を定期的なタスクをスケジューリングするとよいでしょう。Microsoft Defenderの場合は、PowerShellの次の一連のコマンドラインをタスクとして実行することで実現できます。PowerShellコマンドやPowerShellスクリプト(.ps1)のタスク登録については、Windowsの運用管理を快適にする10の裏ワザ/表ワザ 4.タスクスケジューラの使いこなし』で説明しました。

Stop-Service -Name Docker 
Remove-MpPreference -ExclusionPath "C:¥ProgramData¥docker" 
Start-MpScan -ScanPath "C:¥ProgramData¥docker" -ScanType CustomScan 
Add-MpPreference -ExclusionPath "C:¥ProgramData¥docker" 
Start-Service -Name Docker 

 

SQL Serverのためのカスタム設定

 SQL Serverを実行しているコンピューターのマルウェア対策の一般的なガイドラインは以下のドキュメントに記されています。
How to choose antivirus software to run on computers that are running SQL Server
 https://support.microsoft.com/en-us/topic/feda079b-3e24-186b-945a-3051f6f3a95b
 ガイドラインでは、SQL Serverのパフォーマンスの改善に寄与するディレクトリ、拡張子、プロセスの除外設定が詳細に記されています。適切な除外設定を行うことで、SQL Serverのサービスが関連ファイルを使用する際にスキャンツールがロックするのを回避できます。ただし、除外設定したファイルがマルウェアに感染した場合、マルウェア対策ソフトウェアはそれを検出できないというデメリットがあります。
 SQL Server用に除外設定を行う場合は、Windowsコンテナーの場合と同様に、業務時間外などにSQL Serverのサービスを停止した上で、除外設定を解除してカスタムスキャンを実施することをお勧めします。

 

■他社マルウェア対策製品を利用する場合の考慮事項

 Windows Serverでサードベンダーのマルウェア対策製品を利用する場合は、Microsoft Defenderウイルス対策の除外設定、およびHyper-Vホストに推奨されるウイルス対策の除外のドキュメントを参考に、サーバーの役割に適切なすべての除外設定をカスタム設定で実装してください。

 

■Microsoft Defenderオフラインの注意事項

 Windows 10とWindows 11のMicrosoft Defenderマルウェア対策には、スキャンオプションの1つとしてMicrosoft Defenderオフラインがあります。この機能は、WinPEベースで動作し、オフラインのWindowsのファイルシステムをスキャンして駆除することで、オンライン中にスキャンエンジンから身を隠している(またはスキャンエンジンが既に侵害されていて信頼できない可能性がある)場合に、脅威を取り除くことができるというものです。ただし、この機能、スキャンを実行し、検出や駆除が終了すると自動的に再起動してしまい、結果をレポートしてくれないという問題があります(本来であれば保護の履歴に残るはずですが機能していない可能性があります)。また、Windows 11では検出しても駆除してくれないという不具合も確認しています。詳しくは、以下の記事をご覧ください。
疑惑を検証! Windows 11の「Microsoft Defenderオフライン」は“いざ”というときに役に立つのか?
 https://atmarkit.itmedia.co.jp/ait/articles/2204/08/news004.html

 

※本ページは2022年6月22日現在の情報です。

 

■ ホワイトペーパーをダウンロードする

こちらのページの続きを含めた、全10テクニックをまとめたホワイトペーパーをご覧いただけます。以下のフォームよりお申込みください。

 

■ Microsoft Defenderウイルス対策の設定でサーバーパフォーマンスを最適化する

 山市氏がご紹介したテクニックをより簡単に自動化できる方法をご紹介します。

詳しくはこちらをご確認ください。
https://www2.say-tech.co.jp/special/ryo-yamaichi/say/tec-010

最新記事