これらのセキュリティ制御は、ESXi セキュリティのベスト プラクティスのベースライン セットを提供します。それらは、制御を実装した場合のメリットとトレードオフを説明する形で構成されています。ほとんどの制御は、システムの詳細設定の形式になっています。システムの詳細設定を変更するには、提供される PowerCLI または vSphere Client[ホスト] > [構成] > [システム] > [システムの詳細設定])のいずれかを使用します。

使用される変数

このセクションの PowerCLI コマンドでは、次の変数を使用しています。

  • $ESXi = "host_name"
  • $vmkernel_interface = "vmkernel_adapter"

DCUI アカウントのアクセスが拒否されるようにする

ESXi ホストでは、dcui ユーザー アカウントのシェル アクセスを拒否する必要があります。

dcui ユーザー アカウントは、DCUI 自体のプロセス分離に使用されます。攻撃対象領域を減らすには、dcui ユーザー アカウントのシェル アクセスを無効にします。

インストールのデフォルト値:True
ベースラインの推奨値:False
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.account.list.Invoke() | Where-Object { $_.UserID -eq 'dcui' } | Select-Object -ExpandProperty Shellaccess
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.account.set.CreateArgs()
$arguments.id = "dcui"
$arguments.shellaccess = "false"
$ESXcli.system.account.set.Invoke($arguments)

Annotations.WelcomeMessage

VMware Host Client および DCUI に表示されるログイン メッセージのテキストを構成します。

ESXi には、ログイン メッセージを表示する機能があります。ログイン メッセージの使用には、攻撃者のアクティビティが違法であることを攻撃者に通知すること、およびシステムの使用時に対応および同意する必要がある期待される行為と義務を、許可されたユーザーに伝達することが含まれます。

インストールのデフォルト値:未定義
ベースラインの推奨値:環境に適用可能なテキストについては、組織の法律顧問に相談してください。

メッセージ テキストの例:許可されたユーザーのみ。このシステムを実際に無断使用することまたはそれを試みることは禁止されており、刑事、民事、安全、または管理上の手続きおよび/または罰則を招く可能性があります。この情報システムを使用した場合、予告や許可なしに監視および記録に同意したものと見なされます。ユーザーは、このシステムの使用においてプライバシーを期待しないものとします。このシステムに保存されている情報、またはこのシステムを通過する情報、または監視および/または記録によって取得された情報は、連邦法、州法、および組織ポリシーに従って法執行機関に開示および/または使用される場合があります。このシステムの許可されたユーザーでない場合は、この時点でシステムを終了してください。

必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
DCUI で「F2/F12」および IP アドレス情報をマスクします。場合によっては環境のドキュメントやトレーニングも必要になります。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Annotations.WelcomeMessage
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Annotations.WelcomeMessage | Set-AdvancedSetting -Value "your_message"

Config.HostAgent.vmacore.soap.sessionTimeout

vSphere API のセッション タイムアウトを構成します。

このプラクティスは、許可されていないユーザーや悪意のあるソフトウェアによって悪用される可能性のある無人セッションが無期限に開かれたままにしないようにすることで、潜在的なセキュリティ リスクを軽減するのに役立ちます。

インストールのデフォルト値:30
ベースラインの推奨値:30
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.vmacore.soap.sessionTimeout
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.vmacore.soap.sessionTimeout | Set-AdvancedSetting -Value 30

Config.Etc.issue

ユーザーが SSH を使用して ESXi ホストに接続するときに表示されるバナーのテキストを構成します。

ESXi には、SSH 接続に対してバナーを表示する機能があります。バナーの使用には、攻撃者のアクティビティが違法であることを攻撃者に通知すること、およびシステムの使用時に対応および同意する必要がある期待される行為と義務を、許可されたユーザーに伝達することが含まれます。トラブルシューティング操作を実行する場合を除き、SSH サービスは無効のままにします。ESXivCenter Server の実装に不整合があるため、両方のシナリオに対応するためには Config.Etc.issue の「issue」が小文字で表記されている必要があります。

インストールのデフォルト値:未定義
ベースラインの推奨値:環境に適用可能なテキストについては、組織の法律顧問に相談してください。

メッセージ テキストの例:許可されたユーザーのみ。このシステムを実際に無断使用することまたはそれを試みることは禁止されており、刑事、民事、安全、または管理上の手続きおよび/または罰則を招く可能性があります。この情報システムを使用した場合、予告や許可なしに監視および記録に同意したものと見なされます。ユーザーは、このシステムの使用においてプライバシーを期待しないものとします。このシステムに保存されている情報、またはこのシステムを通過する情報、または監視および/または記録によって取得された情報は、連邦法、州法、および組織ポリシーに従って法執行機関に開示および/または使用される場合があります。このシステムの許可されたユーザーでない場合は、この時点でシステムを終了してください。

必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.Etc.issue
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.Etc.issue | Set-AdvancedSetting -Value "****************************************************************************`n* Authorized users only. Actual or attempted unauthorized use of this      *`n* system is prohibited and may result in criminal, civil, security, or     *`n* administrative proceedings and/or penalties. Use of this information     *`n* system indicates consent to monitoring and recording, without notice     *`n* or permission. Users have no expectation of privacy. Any information     *`n* stored on or transiting this system, or obtained by monitoring and/or    *`n* recording, may be disclosed to law enforcement and/or used in accordance *`n* with Federal law, State statute, and organization policy. If you are not *`n* an authorized user of this system, exit the system at this time.         *`n****************************************************************************`n"

vpxuser のシェル アクセスを無効にする

ESXi ホストでは、vpxuser ユーザー アカウントのシェル アクセスを拒否する必要があります。

ESXi ホストが最初に接続されると、vCenter Server によって vpxuser アカウントが作成されます。この vpxuser アカウントは、その後、ESXi への特権認証に使用されます。vpxuser アカウントのパスワードは VirtualCenter.VimPasswordExpirationInDays オプションで管理される間隔で vCenter Server によって自動的にローテーションされますが、vpxuser アカウントはシェル アクセス権も持ちます。攻撃対象領域を減らすには、vpxuser アカウントを無効にします。

インストールのデフォルト値:True
ベースラインの推奨値:False
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
シェル アクセス権のないユーザー アカウントでは、特権レベルに関係なく、他のユーザーのシェル アクセスを再構成できません。 vCenter Server は vpxuser アカウントとして ESXi ホストに接続するため、vpxuser のシェル アクセスを無効にすると、他のアカウントのアカウント設定を変更するために使用できなくなります。以降の再構成は、許可されたアカウントを使用してホストごとに行う必要があります。
ESXi 8.0 以降では、メディアからの起動や起動時のシェルへの init の変更など、従来のパスワードまたはアカウントの復旧操作はサポートされなくなりました。
ESXi ホストに、完全な特権を持つユーザー アカウントが少なくとも 1 つあり、このアカウントを適切に保護していることを確認します。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.account.list.Invoke() | Where-Object { $_.UserID -eq 'vpxuser' } | Select-Object -ExpandProperty Shellaccess
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.account.set.CreateArgs()
$arguments.id = "vpxuser"
$arguments.shellaccess = "false"
$ESXcli.system.account.set.Invoke($arguments)

vCenter Server で vSphere Authentication Proxy を使用して Active Directory 認証情報が保存されないようにする

vSphere Authentication Proxy を使用すると、vCenter Server は Active Directory 認証情報を直接保存することなく、Active Directory エンティティに接続して管理できるため、認証情報の漏洩や誤用のリスクが軽減されます。

インストールのデフォルト値:未構成
ベースラインの推奨値:機能を使用する場合に構成
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VMHostAuthentication | Select-Object VMHost,Domain,DomainMembershipStatus
PowerCLI コマンドの修正例
該当なし

DCUI.Access

ESXi ホストには、正確な DCUI.Access リストがある必要があります。

ロックダウン モード例外ユーザー リストにユーザーの正確なリストが含まれるように設定し、ロックダウン モードが有効な場合に、許可されたユーザーのみが ESXi ホストにダイレクト コンソール ユーザー インターフェイス (DCUI) でアクセスできるようにします。

リストから root ユーザーを削除することはできません。

ESXi Shell および SSH アクセスを制御するには、ロックダウン モード例外ユーザー リストを使用します。ESXi ホストに正確な例外ユーザー リストがあることを確認するを参照してください。

インストールのデフォルト値:root
ベースラインの推奨値:root
必要なアクション
リストを監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
ホストへの管理アクセスが失われる可能性があります。ロックダウン モードを構成する前に、 ESXi ホストを vCenter Server に接続していること、およびアクセス リストと例外リストを構成していることを確認します。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting DCUI.Access
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting DCUI.Access | Set-AdvancedSetting -Value root

ESXi ホストに正確な例外ユーザー リストがあることを確認する

ESXi ホストに正確な例外ユーザー リストがある必要があります。

ロックダウン モード例外ユーザー リストにリストされているユーザーは、ホストがロックダウン モードになっても特権を失いません。この状況では、ロックダウン モードの目的が無効になる可能性があります。

インストールのデフォルト値:Null
ベースラインの推奨値:Null
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
ESXi ホストへの管理アクセスが失われる可能性があります。ロックダウン モードを構成する前に、 ESXi ホストを vCenter Server に接続していること、およびアクセス リストと例外リストを構成していることを確認します。
PowerCLI コマンドの評価
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).QueryLockdownExceptions()
PowerCLI コマンドの修正例
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).UpdateLockdownExceptions($NULL)

通常のロックダウン モードを有効にして ESXi へのアクセスを制限する

ロックダウン モードを有効にすると、ESXi ホストへの直接アクセスが無効になります。ロックダウン モードでは、vCenter ServerESXi ホストを直接管理する必要があります。

この方法でアクセスを制限すると、vCenter Server がロールと権限を確実に適用できます。また、ユーザーは、ESXi ホストに直接ログインしてこれらのロールと権限をバイパスすることができなくなります。すべての操作が vCenter Server を介して行われるようにすることで、誤ってユーザーが昇格された特権を取得するリスクや、適切に監査されていないタスクを実行するリスクが軽減されます。

ESXi ホストの例外ユーザー リストにリストされているユーザーは、ロックダウン モードをオーバーライドしてログインできます。デフォルトでは、例外ユーザー リストにユーザーはリストされていません。

ロックダウン モードの設定は、[無効]、[標準]、[厳密] です。ロックダウン モードが [厳密] に設定されている場合に、ESXi ホストと vCenter Server との通信が失われると、その接続が復旧するまでホストを管理できなくなります。接続を復旧できない場合は、ESXi ホストを再構築する必要があります。通常、[厳密] ロックダウン モードは、ほとんどのデプロイのニーズを超えます。そのため、[標準] ロックダウン モードで十分です。

インストールのデフォルト値:lockdownDisabled
ベースラインの推奨値:lockdownNormal
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
ホストへの管理アクセスが失われる可能性があります。ロックダウン モードを構成する前に、 ESXi ホストを vCenter Server に接続していること、およびアクセス リストと例外リストを構成していることを確認します。
バックアップやトラブルシューティングなどの一部の操作では、 ESXi ホストに直接アクセスする必要があります。このような場合は、特定のホストのロックダウン モードを一時的に無効にし、操作が完了した時点でロックダウン モードを再度有効にすることができます。
PowerCLI コマンドの評価
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).LockdownMode
PowerCLI コマンドの修正例
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).ChangeLockdownMode('lockdownNormal')

Syslog.global.auditRecord.storageEnable

監査レコードをローカルに保存するように ESXi ホストを構成します。

ESXi ホストで監査レコードのログ作成を有効にする必要があります。

インストールのデフォルト値:False
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
ログによって追加のストレージ容量が使用されます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageEnable
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageEnable | Set-AdvancedSetting -Value TRUE

Syslog.global.auditRecord.storageCapacity

ESXi ホストで 1 週間分の監査レコードのストレージ容量を有効にする必要があります。

リモート監査レコードのストレージ設備が使用可能な場合は、ローカル ストレージに、設備へのレコード送信時の予期される中断中に蓄積される可能性のある監査レコードを保持するのに十分な容量があることを確認することが不可欠です。これにより、リモート ストレージが使用できない期間に監査レコードが失われたり上書きされたりすることがなくなり、監査証跡とコンプライアンス要件をシームレスに継続できます。

インストールのデフォルト値:4
ベースラインの推奨値:100
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
ログによって追加のストレージ容量が使用されます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageCapacity
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageCapacity | Set-AdvancedSetting -Value 100

ScratchConfig.CurrentScratchLocation および Syslog.global.auditRecord.storageDirectory

ESXi ホスト上にローカルに保存されるすべての監査レコードのパーシステントなログの場所を構成します。

監査レコードをインメモリ ファイル システムに保存するように ESXi を構成できます。この動作は、ホストの「/scratch」ディレクトリが「/tmp/scratch」にリンクされている場合に発生します。これを行うと、常に 1 日分のレコードのみが保存されます。また、再起動するたびに監査レコードが再初期化されます。この場合、ホストにログインしたユーザーのアクティビティが一時的に保存されるのみで、再起動をまたいで保持されないため、セキュリティ上のリスクになります。また、監査が複雑になり、イベントの監視や問題の診断が困難になる場合もあります。常に ESXi ホストの監査レコードのログ作成がパーシステントなデータストアに行われるように構成します。

スクラッチ ボリュームが一時的であるかパーシステントであるかを確認するには、ScratchConfig.CurrentScratchLocation の詳細設定を照会します。照会に対して「/tmp/scratch」が返された場合、ボリュームは一時的です。この場合は、監査レコードのストレージをパーシステント デバイスに再マッピングする必要があります。

vSAN データストアをストレージにすることはできません。vSAN 以外の唯一のローカル ストレージが(ログからの繰り返しの書き込みで信頼できなくなる可能性がある)SD または USB メディアの場合は、ログを RAM ディスクに残し、代わりにリモート ログ ホストを構成することを検討してください。将来の監査に備えて決定と根拠を文書化します。

インストールのデフォルト値:

ScratchConfig.CurrentScratchLocation:起動デバイスによって異なる

Syslog.global.auditRecord.storageDirectory/scratch/auditLog

ベースラインの推奨値:パーシステント ストレージの場所
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
ログによって追加のストレージ容量が使用されます。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.syslog.config.get.Invoke() | Select LocalLogOutput,LocalLogOutputIsPersistent

# If your LocalLogOutput is set to a directory in /scratch, and LocalLogOutputIsPersistent is true, that means your boot device is of a type and size that makes /scratch persistent. Verify that your audit storage is also on /scratch, and that /scratch points to a VMFS datastore:

Get-VMHost -Name $ESXi | Get-AdvancedSetting ScratchConfig.CurrentScratchLocation
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageDirectory
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageDirectory | Set-AdvancedSetting -Value "/vmfs/volumes/$Datastore/audit"

Syslog.global.auditRecord.remoteEnable

監査ログをリモート ホストに送信するように ESXi ホストを構成します。

インストールのデフォルト値:False
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.remoteEnable
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.remoteEnable | Set-AdvancedSetting -Value TRUE

Syslog.global.logFiltersEnable

ESXi ホストでログ フィルタリングを有効にします。

ログ フィルタを作成すると、重複エントリ数を削減したり、特定のログ イベントをすべて拒否したりできます。

インストールのデフォルト値:False
ベースラインの推奨値:False
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logFiltersEnable
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logFiltersEnable | Set-AdvancedSetting -Value FALSE

LocalLogOutputIsPersistent、ScratchConfig.CurrentScratchLocation、および Syslog.global.logDir

ESXi ホスト上にローカルに保存されるすべてのログのパーシステントなログ作成を構成します。

ログ ファイルをインメモリ ファイル システムに保存するように ESXi を構成できます。この動作は、ホストの「/scratch」ディレクトリが「/tmp/scratch」にリンクされている場合に発生します。これを行うと、常に 1 日分のログのみが保存されます。また、再起動するたびにログ ファイルが再初期化されます。この場合、ホストにログインしたユーザーのアクティビティが一時的に保存されるのみで、再起動をまたいで保持されないため、セキュリティ上のリスクになります。また、監査が複雑になり、イベントの監視や問題の診断が困難になる場合もあります。常に ESXi ホストのログ作成がパーシステントなデータストアに行われるように構成します。

スクラッチ ボリュームが一時的かパーシステントであるかを確認するには、高度なパラメータ ScratchConfig.CurrentScratchLocation を照会します。照会に対して「/tmp/scratch」が返された場合、ボリュームは一時的です。この場合は、監査レコードのストレージをパーシステント デバイスに再マッピングする必要があります。

vSAN データストアをストレージにすることはできません。ただし、Syslog.global.vsanBacking を設定する場合を除きますが、これには注意事項と依存関係があります。vSAN 以外の唯一のローカル ストレージが(ログからの繰り返しの書き込みで信頼できなくなる可能性がある)SD または USB メディアの場合は、ログを RAM ディスクに残し、代わりにリモート ログ ホストを構成することを検討してください。将来の監査に備えて決定と根拠を文書化します。

インストールのデフォルト値:ScratchConfig.CurrentScratchLocation:起動デバイスによる

Syslog.global.logDir/scratch/log

ベースラインの推奨値:パーシステント ストレージの場所
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.syslog.config.get.Invoke() | Select LocalLogOutput,LocalLogOutputIsPersistent

# If your LocalLogOutput is set to a directory in /scratch, and LocalLogOutputIsPersistent is true, that means your boot device is of a type and size that makes /scratch persistent. Verify that your log storage is also on /scratch, , and that /scratch points to a VMFS datastore:

Get-VMHost -Name $ESXi | Get-AdvancedSetting ScratchConfig.CurrentScratchLocation
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logDir
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logDir | Set-AdvancedSetting -Value "/vmfs/volumes/$Datastore/logs"

Syslog.global.logHost

リモート ログ作成を構成します。

中央のログ ホストへのリモート ログ作成を構成する場合は、ESXi ログ用の安全で一元化されたストアを提供します。中央のホストにホスト ログ ファイルを収集すると、すべてのホストを 1 つのツールで監視できます。集計分析を実行し、複数のホストに対する組織的攻撃などの項目を検索することもできます。セキュアな中央のログ サーバへのログ作成により、ログの改ざんを防ぐことができ、長期間の監査記録も作成できます。

インストールのデフォルト値:未定義
ベースラインの推奨値:サイト固有
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logHost
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logHost | Set-AdvancedSetting -Value "log_collector"

Syslog.global.certificate.checkSSLCerts

TLS の証明書を確認します。

ESXi ホストでは、TLS リモート ログ作成エンドポイントの証明書を検証する必要があります。TLS 証明書は、エンドポイントが本物であり信頼できることを確認するのに役立ちます。

インストールのデフォルト値:True
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.checkSSLCerts
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.checkSSLCerts | Set-AdvancedSetting -Value TRUE

Syslog.global.certificate.strictX509Compliance

TLS が有効なリモート ログ作成エンドポイントに対して厳密な x509 検証を実行します。

ESXi ホストでは、TLS が有効なリモート ログ作成エンドポイントに対して厳密な x509 検証を使用する必要があります。Syslog.global.certificate.strictX509Compliance 設定は、検証中に CA ルート証明書に対して追加の有効性チェックを実行します。

インストールのデフォルト値:False
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.strictX509Compliance
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.strictX509Compliance | Set-AdvancedSetting -Value TRUE

Mem.MemEagerZero

揮発性キーの破棄を有効にします。

デフォルトでは、ESXi は、割り当て時に、仮想マシン、ユーザースペース アプリケーション、およびカーネル スレッドに割り当てられたページをゼロアウトします。これにより、非ゼロのページが仮想マシンまたはユーザースペース アプリケーションに公開されなくなります。この対策は、仮想マシンまたは userworld から他のクライアントへの暗号化キーの漏洩を防ぐための措置です。

ただし、メモリが再利用されない場合、これらのキーがホスト メモリに長期間保持される可能性があります。これに対処するには、userworld プロセスまたはゲストが終了したときに userworld ページとゲスト メモリ ページのゼロアウトを強制するように MemEagerZero 設定を構成します。カーネル スレッドの場合、シークレットが不要になるとすぐに、キーを保持しているメモリ スペースがゼロアウトされます。

インストールのデフォルト値:0
ベースラインの推奨値:1
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
仮想マシンには、割り当てられたメモリの量に対応する追加のシャットダウン時間が必要です。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Mem.MemEagerZero
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Mem.MemEagerZero | Set-AdvancedSetting -Value 1

ESXi バージョンでのアクティブ メンテナンスを確認する

ESXi のバージョンが VMware のジェネラル サポートの終了ステータスに達していないことを確認します。

インストールのデフォルト値:該当なし
ベースラインの推奨値:該当なし
必要なアクション
ESXi バージョンを定期的に監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
必ずリリース ノートを読み、ステージングされたロールアウトを使用して新しいソフトウェア バージョンをテストおよびデプロイします。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Select-Object Name,Version,Build
PowerCLI コマンドの修正例
該当なし

時刻同期ソースを有効にする

ESXi ホストでは、時刻同期サービスを有効にして実行する必要があります。

暗号化、監査ログ作成、クラスタ操作、インシデント レスポンス、フォレンジックは、同期された時刻に依存します。サービスと操作間で時刻を確実に同期するには、NTP または PTP サービスがホストと連動して開始されるようにして、それらのサービスが実行中であることを確認します。

インストールのデフォルト値:停止、手動で起動および停止
ベースラインの推奨値:実行中、ホストと連動して停止および起動
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostService -VMHost $ESXi | Where-Object{$_.Key -eq "ntpd"}
PowerCLI コマンドの修正例
Get-VMHostService -VMHost $ESXi -ErrorAction:Stop | Where-Object{$_.Key -eq "ntpd"} | Set-VMHostService -policy "on" -Confirm:$false
Get-VMHostService -VMHost $ESXi -ErrorAction:Stop | Where-Object{$_.Key -eq "ntpd"} | Restart-VMHostService -Confirm:$false

信頼性の高い時刻同期ソースを構成する

ESXi ホストには、信頼性の高い時刻同期ソースが構成されている必要があります。

暗号化、監査ログ作成、クラスタ操作、インシデント レスポンス、フォレンジックは、同期された時刻に依存します。Network Time Protocol (NTP) には、少なくとも 4 つのソースが必要です。2 つのソースか 1 つのソースかを選択する必要がある場合は、1 つのソースが推奨されます。

Precision Time Protocol (PTP) は、ミリ秒以下の時間精度を提供する NTP の代替手段です。PTP のアーキテクチャは NTP とは異なり、プライマリ サーバの障害に対する回復力は同じではありません。NTP を PTP のバックアップ ソースとして構成し、精度が低くても時刻ソースを引き続き使用できるようにすることを検討してください。

インストールのデフォルト値:未定義
ベースラインの推奨値:

サイト固有または:

0.vmware.pool.ntp.org、

1.vmware.pool.ntp.org、

2.vmware.pool.ntp.org、

3.vmware.pool.ntp.org

必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostNtpServer -VMHost $ESXi
PowerCLI コマンドの修正例
$ntp0 = "0.vmware.pool.ntp.org"
$ntp1 = "1.vmware.pool.ntp.org"
$ntp2 = "2.vmware.pool.ntp.org"
$ntp3 = "3.vmware.pool.ntp.org"

Add-VMHostNTPServer -NtpServer $ntp0 , $ntp1 , $ntp2 , $ntp3 -VMHost $ESXi -Confirm:$false

TLS 暗号を使用する

ESXi ホストでは、最新の TLS 暗号を有効にして、転送の機密性と整合性を維持する必要があります。

ESXi 8.0 Update 3 以降では、TLS プロファイルにより、強力な暗号のみを使用するようにクライアントとサーバの TLS 設定が構成されます。次のコマンドを使用して、暗号のリストとスイート全体を表示できます。

$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.tls.server.get.CreateArgs()
$arguments.showprofiledefaults = $true
$arguments.showcurrentbootprofile = $true
$ESXcli.system.tls.server.get.invoke($arguments)

TLS プロファイルを変更した後、ESXi ホストを再起動する必要があります(vSphere Client では、ホストに「再起動が必要」というサフィックスが表示されます)。

インストールのデフォルト値:COMPATIBLE
ベースラインの推奨値:NIST_2024
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
暗号スイートの変更は、外部システムとの接続に影響します。この TLS プロファイルの変更を有効にするには、ホストを再起動する必要があります。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.tls.server.get.invoke() | Select-Object -ExpandProperty Profile
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.tls.server.set.CreateArgs()
$arguments.profile = "NIST_2024"
$ESXcli.system.tls.server.set.invoke($arguments)

UserVars.ESXiVPsDisabledProtocols

ESXi ホストでは、サポートされている最新バージョンの TLS を有効にする必要があります。

ESXi 8.0 では TLS 1.2 がデフォルトで有効になっていますが、必要に応じて他のプロトコルを有効にすることもできます。ESXi 8.0 Update 3 以降では、TLS 1.3 がデフォルトで有効になっています。

インストールのデフォルト値:sslv3,tlsv1,tlsv1.1
ベースラインの推奨値:sslv3,tlsv1,tlsv1.1
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiVPsDisabledProtocols
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiVPsDisabledProtocols | Set-AdvancedSetting -Value "sslv3,tlsv1,tlsv1.1"

TPM ベースの暗号化を構成する

ESXi ホストには、TPM ベースの構成暗号化が必要です。

ESXi ホストの構成は、ホストで実行される各サービスの構成ファイルで構成されます。構成ファイルは通常、/etc/ ディレクトリに存在しますが、他の名前空間にも存在できます。構成ファイルには、サービスの状態に関する実行時情報が含まれています。時間の経過とともに、構成ファイルのデフォルト値が変更される可能性があります。たとえば、ESXi ホストでの設定が変更された場合などです。

cron ジョブは、ESXi 構成ファイルを定期的(ESXi が正常にシャットダウンしたとき、またはオンデマンドでシャットダウンしたとき)にバックアップし、ブート バンクにアーカイブ構成ファイルを作成します。ESXi が再起動すると、システムによって、アーカイブされた構成ファイルが読み取られ、バックアップが作成されたときの ESXi の状態が再作成されます。

vSphere 7.0 Update 2 以前では、アーカイブされた ESXi 構成ファイルは暗号化されません。vSphere 7.0 Update 2 以降 では、アーカイブされた構成ファイルが暗号化されます。ESXi ホストが Trusted Platform Module (TPM) で構成されている場合、TPM は構成をホストに「シーリング」するために使用され、強力なセキュリティの確保とオフライン攻撃からの追加の保護を提供します。

構成暗号化では、物理 TPM がインストール時またはアップグレード時に使用可能でサポートされていれば、これを使用します。TPM が後で追加されるか有効になった場合は、新しく使用可能な TPM を使用するように ESXi ホストを明示的に再構成する必要があります。TPM 構成暗号化をいったん有効にすると、無効にすることはできません。

インストールのデフォルト値:サイト固有
ベースラインの推奨値:TPM
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
セキュア ブートと TPM 適用の構成暗号化を使用すると、従来の root パスワードの復旧操作が使用できなくなります。 ESXi 管理者アカウントへのアクセスが失われることのないようにしてください。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.settings.encryption.get.Invoke() | Select Mode
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.settings.encryption.set.CreateArgs()
$arguments.mode = "TPM"
$ESXcli.system.settings.encryption.set.Invoke($arguments)

ESXi ソフトウェアが最新であることを確認する

常に最新の ESXi パッチを適用しておくことで、ハイパーバイザーの脆弱性を軽減できます。

知識のある攻撃者は、ESXi ホストへのアクセスや特権の昇格を試みるときに既知の脆弱性を悪用する可能性があります。更新が利用可能な場合は、常に vCenter Server を更新してから、ESXi を更新します。

インストールのデフォルト値:Downlevel
ベースラインの推奨値:Current
必要なアクション
ESXi のパッチ レベルを定期的に監査します。
必ずリリース ノートを読み、ステージングされたロールアウトを使用して新しいソフトウェア バージョンをテストおよびデプロイします。
デフォルト値を変更した場合の潜在的な機能上の影響
vSphere Update リリースでは機能の追加と変更が行われます。パッチ リリースでは問題の解決のみが行われます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Select-Object Name,Version,Build
PowerCLI コマンドの修正例
該当なし

VMkernel.Boot.execInstalledOnly

VIB によってのみ提供されるバイナリを実行します。

ESXi は、許容レベルに基づいて VIB の整合性チェックを実行します。ホストにインストールされている有効な VIB からのバイナリのみを実行するよう ESXi に指示すると、事前構築済みのツールキットを攻撃者が侵入時に使用することが困難になるほか、検出の可能性が高まります。

インストールのデフォルト値:False
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
署名のないサードパーティのソフトウェアがインストールされたり、実行されたりしない可能性があります。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting VMkernel.Boot.execInstalledOnly
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting VMkernel.Boot.execInstalledOnly | Set-AdvancedSetting -Value True

VMkernel アダプタ上の管理サービスを無効にする

vSAN、vMotion、およびその他の専用 VMkernel アダプタで管理サービスが有効になっていないことを確認します。

管理機能を使用すると、特定用途向けの VMkernel ネットワーク インターフェイスを構成できます。これは、ネットワークの隔離とセキュリティの取り組みを無にする可能性があります。管理を目的とした VMkernel インターフェイスでのみ管理サービスを有効にします。

インストールのデフォルト値:サイト固有
ベースラインの推奨値:サイト固有
必要なアクション
サイト固有の値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
サードパーティの一部の管理対象ソリューションでは、VMkernel アダプタで管理サーバを有効にする必要がある場合があります。
PowerCLI コマンドの評価
Get-VMHostNetworkAdapter -VMHost $ESXi -VMKernel | Select VMHost,Name,IP,ManagementTrafficEnabled
PowerCLI コマンドの修正例
Get-VMHostNetworkAdapter -VMHost $ESXi -Name $vmkernel_interface | Set-VMHostNetworkAdapter -ManagementTrafficEnabled $false

トラフィックをブロックするように ESXi ファイアウォールを構成する

デフォルトでネットワーク トラフィックをブロックするように ESXi ホスト ファイアウォールを構成する必要があります。

明示的に許可しない限り受信および送信ネットワーク トラフィックがすべてブロックされるようにして、攻撃対象領域を減らし、ホストへの不正アクセスを防止します。

インストールのデフォルト値:有効
ベースラインの推奨値:有効
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
ファイアウォールは、ルーター ACL のように非常に単純です。場合によっては、再帰ルールを再構成する必要があります。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VMHostFirewallDefaultPolicy
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.network.firewall.set.CreateArgs()
$arguments.defaultaction = $FALSE
$arguments.enabled = $true
$ESXcli.network.firewall.set.Invoke($arguments)

許可されたネットワーク用に ESXi ファイアウォールを構成する

許可されたネットワークからのトラフィックのみを許可するように ESXi ファイアウォールを構成します。

明示的に許可しない限り受信および送信ネットワーク トラフィックがすべてブロックされるようにして、攻撃対象領域を減らし、ESXi ホストへの不正アクセスを防止します。

vSphere 8.0 Update 2 以降では、ファイアウォール ルールは「ユーザー」または「システム」所有として分類されます。構成できるのは、「ユーザー」所有のルールのみです。vSphere 8 Update 2b および PowerCLI 13.2.1 には、構成可能なルールの設定とチェックを自動化するための、追加の照会可能なパラメータがあります。

インストールのデフォルト値:任意の IP アドレスからの接続を許可
ベースラインの推奨値:許可されたインフラストラクチャおよび管理ワークステーションからの接続のみを許可
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
ファイアウォールは、ルーター ACL のように非常に単純です。場合によっては、再帰ルールを再構成する必要があります。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$list = $ESXcli.network.firewall.ruleset.list.Invoke() | Where {($_.AllowedIPconfigurable -eq $true) -and ($_.EnableDisableconfigurable -eq $true)} | Select -ExpandProperty Name

$arguments = $ESXcli.network.firewall.ruleset.allowedip.list.CreateArgs()
foreach ($rule in $list) {
    $arguments.rulesetid = $rule
    $ESXcli.network.firewall.ruleset.allowedip.list.Invoke($arguments) 
}
PowerCLI コマンドの修正例
# Customize this example for your environment.
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
# Deactivate firewall temporarily so we don't lose connectivity
$arguments = $ESXcli.network.firewall.set.CreateArgs()
$arguments.enabled = $false
$ESXcli.network.firewall.set.Invoke($arguments)

# Unset the "allow all" flag
$arguments = $ESXcli.network.firewall.ruleset.set.CreateArgs()
$arguments.allowedall = $false
$arguments.rulesetid = "sshServer"
$ESXcli.network.firewall.ruleset.set.Invoke($arguments)

# Add an IP range
$arguments = $ESXcli.network.firewall.ruleset.allowedip.add.CreateArgs()
$arguments.ipaddress = "192.168.0.0/16"
$arguments.rulesetid = "sshServer"
$ESXcli.network.firewall.ruleset.allowedip.add.Invoke($arguments)

# Enable the firewall
$arguments = $ESXcli.network.firewall.set.CreateArgs()
$arguments.enabled = $true
$ESXcli.network.firewall.set.Invoke($arguments)

[偽装転送] ポリシーを [拒否] に設定する

vSphere 標準スイッチとそのポート グループの両方で [偽装転送] ポリシーを [拒否] に設定します。

仮想マシンのオペレーティング システムは、MAC アドレスを変更することにより、送信元 MAC アドレスが偽装されたフレームをいつでも送信できます。MAC アドレスのなりすましの場合、オペレーティング システムは、受信ネットワークによって許可されたネットワーク アダプタになりすますことによって、ネットワーク内のデバイスに対する悪意のある攻撃をステージングできます。[偽装転送] ポリシーが [承諾] に設定されている場合、ESXi は送信元と有効な MAC アドレスを比較しません。MAC のなりすましに対して保護するには、[偽装転送] ポリシーを [拒否] に設定します。そうすると、ホストは、ゲスト OS から転送される送信元 MAC アドレスと、その仮想マシン アダプタの有効な MAC アドレスを比較して、それらが一致するかどうかを確認します。アドレスが一致しない場合、ESXi ホストはパケットをドロップします。

インストールのデフォルト値:承諾
ベースラインの推奨値:拒否
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
クラスタ化されたアプリケーション、ネットワーク デバイスおよび機能など、一部のワークロードでは、これらの手法を通常の処理の一部として利用します。必要に応じて、この動作を許可する別のポート グループを構成し、許可された仮想マシンのみを接続できます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | select VirtualSwitch,ForgedTransmits
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | select VirtualPortGroup,ForgedTransmits
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | Set-SecurityPolicy -ForgedTransmits $false 
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | Set-SecurityPolicy -ForgedTransmitsInherited $true

[MAC アドレス変更] ポリシーを [拒否] に設定する

vSphere 標準スイッチとそのポート グループの両方で [MAC アドレス変更] ポリシーを [拒否] に設定します。

仮想マシンのオペレーティング システムは、MAC アドレスを変更することにより、送信元 MAC アドレスが偽装されたフレームをいつでも送信できます。そのため、受信ネットワークによって許可されたネットワーク アダプタになりすますことによって、ネットワーク内のデバイスに対する悪意のある攻撃をステージングできます。仮想マシンが有効な MAC アドレスを変更できないようにするには、MAC アドレスの安定性を強制するか、MAC アドレスを変更する機能を制限する対策を講じる必要があります。これにより、MAC アドレスのなりすましや潜在的な悪意のあるアクティビティのリスクを軽減できます。

インストールのデフォルト値:承諾
ベースラインの推奨値:拒否
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
クラスタ化されたアプリケーション、ネットワーク デバイスおよび機能、MAC アドレスによってライセンス供与されたアプリケーション、 vCenter Server のダウンタイム短縮アップグレードなど、一部のワークロードでは、これらの手法を通常の処理の一部として利用します。必要に応じて、この動作を許可する別のポート グループを構成し、許可された仮想マシンのみを接続できます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | select VirtualSwitch,MacChanges
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | select VirtualPortGroup,MacChanges
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | Set-SecurityPolicy -MacChanges $false
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | Set-SecurityPolicy -MacChangesInherited $true

[無作為検出モード] ポリシーを [拒否] に設定する

vSphere 標準スイッチとそのポート グループの両方で [無作為検出モード] ポリシーを [拒否] に設定します。

ポート グループに対して無作為検出モードが有効な場合、そのポート グループに接続されているすべての仮想マシンは、目的の受信者に関係なく、そのポート グループ全体で送信されたすべてのパケットを読み取る可能性があります。無作為検出モードのデフォルト値を変更する前に、潜在的な影響と設計上の考慮事項を考慮してください。

インストールのデフォルト値:拒否
ベースラインの推奨値:拒否
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
DHCP サーバ、ネットワーク デバイス、セキュリティ監視など、特定のワークロードと作業タイプには、これらの手法が通常の処理の一部として組み込まれています。必要に応じて、この動作を許可する別のポート グループを構成し、許可された仮想マシンのみを接続できます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | select VirtualSwitch,AllowPromiscuous
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | select VirtualPortGroup,AllowPromiscuous
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuous $false
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuousInherited $true

標準スイッチでの仮想ゲスト タギングを制限する

ESXi ホストでは、標準スイッチでの仮想ゲスト タギング (VGT) の使用を制限する必要があります。

ポート グループが VLAN 4095 に設定されている場合、vSwitch は、すべてのネットワーク フレームを、VLAN タグを変更せずに接続されている仮想マシンに渡します。vSphere では、これは VGT と呼ばれます。仮想マシンでは、オペレーティング システムで 802.1Q ドライバを使用して VLAN 情報を処理する必要があります。

VLAN 4095 は、接続された仮想マシンが明確に許可され、VLAN タグ自体を管理できる場合にのみ実装する必要があります。VLAN 4095 が不適切に有効になっていると、サービス拒否の原因になったり、仮想マシンが許可されていない VLAN 上のトラフィックと通信したりする可能性があります。

インストールのデフォルト値:VLAN 4095 以外
ベースラインの推奨値:VLAN 4095 以外
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | select Name,VlanID
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard -Name $PG| Set-VirtualPortGroup -VlanID "new_VLAN"

セキュア ブートの適用を有効にする

セキュア ブートは、UEFI ファームウェア標準の一部です。UEFI セキュア ブートが有効な場合、オペレーティング システムのブートローダーに有効なデジタル シグネチャがない限り、ESXi ホストに UEFI ドライバやアプリケーションはロードされません。ESXi のセキュア ブートでは、ファームウェアからのサポートが必要です。ESXi のセキュア ブートでは、すべての ESXi カーネル モジュール、ドライバ、および VIB が、VMware またはパートナーの下部組織によって署名されている必要があります。

セキュア ブートは、ESXi 物理サーバの BIOS で有効に設定され、ハイパーバイザー ブートローダーでサポートされます。この制御は、ESXi でのセキュア ブートに関して単に「サポート」から「要件」にするだけです。この設定を有効にして構成暗号化を行わないと、ESXi ホストがオフライン攻撃を受ける可能性があります。攻撃者は、単に ESXi インストール ドライブを非セキュア ブート ホストに移動して起動することができます。

インストールのデフォルト値:False
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
セキュア ブートと TPM 適用の構成暗号化を使用すると、従来の root パスワードの復旧操作が使用できなくなります。 ESXi 管理者アカウントへのアクセスが失われることのないようにしてください。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.settings.encryption.get.Invoke() | Select RequireSecureBoot
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.settings.encryption.set.CreateArgs()
$arguments.requiresecureboot = $true
$ESXcli.system.settings.encryption.set.Invoke($arguments)

ESXi Shell を無効にする

ESXi Shell は無効にする必要があります。

インストールのデフォルト値:停止、手動で起動および停止
ベースラインの推奨値:停止、手動で起動および停止
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM' -and $_.Policy -eq 'On'}
PowerCLI コマンドの修正例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM'} | Stop-VMHostService

UserVars.ESXiShellInteractiveTimeOut

アイドル状態の ESXi Shell と SSH セッションを自動的に終了するタイムアウトを設定します。

ユーザーが SSH セッションからログアウトするのを忘れた場合、アイドル状態の接続は無期限に開いたままになり、他のユーザーがホストに対する特権アクセスを取得する可能性が高まります。アイドル状態のシェル セッションを自動的に終了するように構成できます。

インストールのデフォルト値:0
ベースラインの推奨値:900
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellInteractiveTimeOut
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellInteractiveTimeOut | Set-AdvancedSetting -Value 900

SNMP サービスを無効にする

SNMP サービスを使用していない場合は、無効にします。

インストールのデフォルト値:停止、ホストと連動して起動および停止
ベースラインの推奨値:停止、手動で起動および停止
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'snmpd' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'snmpd' -and $_.Policy -eq 'On'}
PowerCLI コマンドの修正例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'snmpd'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'snmpd'} | Stop-VMHostService

SSH サービスを無効にする

SSH を無効にし、トラブルシューティング目的でのみ有効にします。

ESXi は、UNIX に似たマルチユーザー オペレーティング システムではありません。ESXi は、VMware Host ClientvSphere Client、CLI、API によって管理される、特定の目的に特化したハイパーバイザーです。ESXi では、SSH はトラブルシューティングおよびサポート インターフェイスであり、デフォルトでは意図的に停止され無効になっています。このインターフェイスを有効にすると、リスクが生じます。

インストールのデフォルト値:停止、手動で起動および停止
ベースラインの推奨値:停止、手動で起動および停止
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM-SSH' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM-SSH' -and $_.Policy -eq 'On'}
PowerCLI コマンドの修正例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM-SSH'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM-SSH'} | Stop-VMHostService

暗号化操作にエントロピーを使用する

ESXi ホストでは、暗号化操作に十分なエントロピーを使用する必要があります。

vSphere 8.0 以降では、ESXi Entropy の実装で FIPS 140-3 および EAL4 の認証がサポートされます。ESXi ホストで有効にするエントロピー ソースは、カーネル起動オプションで制御します。

インストールのデフォルト値:

disableHwrng = FALSE

entropySources = 0

ベースラインの推奨値:

disableHwrng = FALSE

entropySources = 0

必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.settings.kernel.list.Invoke() | Where {$_.Name -eq "disableHwrng" -or $_.Name -eq "entropySources"}
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.settings.kernel.set.CreateArgs()
$arguments.setting = "disableHwrng"
$arguments.value = "FALSE"
$ESXcli.system.settings.kernel.set.invoke($arguments)
$arguments.setting = "entropySources"
$arguments.value = "0"
$ESXcli.system.settings.kernel.set.invoke($arguments)

イメージ プロファイルと VIB 許容レベルを確認する

ESXi ホスト イメージ プロファイルの許容レベルは PartnerSupported 以上である必要があります。

許容レベルは、ESXi によってインストールが許可される対象を制御します。VIB レベルについては、「ESXi ホストおよび vSphere インストール バンドルの許容レベルの管理」を参照してください。

VMware も VMware パートナーも CommunitySupported VIB をテストしません。また、CommunitySupported VIB にはデジタル シグネチャが含まれていません。これらの理由から、CommunitySupported VIB をインストールする場合は注意が必要です。

インストールのデフォルト値:PartnerSupported
ベースラインの推奨値:PartnerSupported 以上
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
CommunitySupported パッケージは署名されていないため、インストールできません。
PowerCLI コマンドの評価
(Get-EsxCli -VMHost $ESXi -V2).software.acceptance.get.Invoke()
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.software.acceptance.set.CreateArgs()
$arguments.level = "PartnerSupported" # VMwareCertified, VMwareAccepted, PartnerSupported, CommunitySupported
$ESXcli.software.acceptance.set.Invoke($arguments)

Security.AccountUnlockTime

ESXi ホストでは、指定したタイムアウト期間が経過した後にアカウントをロック解除する必要があります。

Security.AccountUnlockTime により、ESXi ホスト上のユーザー アカウントは、定義された非アクティブ期間が経過した後、自動的にロック解除されます。アカウントの自動ロック解除を実施することで、組織は、セキュリティとユーザビリティのバランスを保ち、アイドル状態のアカウントを迅速に再有効化する一方で、不正アクセスの可能性を最小限に抑えることができます。

インストールのデフォルト値:900 秒
ベースラインの推奨値:900 秒
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.AccountUnlockTime
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.AccountUnlockTime | Set-AdvancedSetting -Value 900

Security.AccountLockFailures

アカウントがロックアウトされるまでのログイン試行の最大失敗回数を設定します。

影響を受けるアカウントを一時的に無効にし、ロックアウト期間が経過するか、管理者が手動でリセットするまでログイン試行を防ぐことで、総当たり攻撃や不正アクセスの試行から保護します。ロックされたアカウントをロック解除するには、管理アクションを実行するか、Security.AccountUnlockTime 設定が使用されている場合はアカウントが自動的にロック解除されるまで待機する必要があります。

インストールのデフォルト値:5
ベースラインの推奨値:5
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
ログイン失敗のしきい値が低い場合、SSH 接続の再試行など、意図的か意図的でないかにかかわらずサービス拒否攻撃が増加する可能性があります。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.AccountLockFailures
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.AccountLockFailures | Set-AdvancedSetting -Value 5

Security.PasswordHistory

パスワードの再利用を許可しません。

この設定は、以前のパスワードの再利用を防止し、侵害された古い認証情報を利用した侵害の可能性を軽減します。

インストールのデフォルト値:5
ベースラインの推奨値:5
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordHistory
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordHistory | Set-AdvancedSetting -Value 5

Security.PasswordMaxDays

パスワード変更までの最大日数を設定します。

NIST 800-63B セクション 5.1.1.2 およびその他の関連するガイダンスで概説されているように、パスワードに関する最新のベスト プラクティスでは、パスワードがすでに適切なエントロピーを備えている場合は、定期的なパスワード変更を強制してもセキュリティが強化されないことが明記されています。

インストールのデフォルト値:99999
ベースラインの推奨値:99999
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordMaxDays
PowerCLI コマンド
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordMaxDays | Set-AdvancedSetting -Value 99999

Security.PasswordQualityControl

パスワードの複雑さを強制します。

NIST 800-63B セクション 5.1.1.2 などの推奨事項では、文字クラスの組み合わせを必須とするような作成ルールは、パスワードのセキュリティの強化につながらず、より安全なパスフレーズの採用を妨げることが多々あるため、システムで適用しないことを推奨しています。

パスワードの強度と複雑さのルールは、root ユーザーを含むすべての ESXi ユーザーに適用されます。ただし、ESXi ホストがドメインに参加している場合、これらのルールは Active Directory (AD) ユーザーには適用されません。それは、Active Directory ユーザーのパスワード ポリシーは Active Directory システムによって適用されるためです。

インストールのデフォルト値:retry=3 min=disabled,disabled,disabled,7,7
ベースラインの推奨値:retry=3 min=disabled,15,15,15,15 max=64 similar=deny passphrase=3
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
VMware エコシステム内の他の製品およびサービスでは、パスワードの複雑さの要件の変更が想定されていないため、インストールに失敗することがあります。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordQualityControl
PowerCLI コマンド
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordQualityControl | Set-AdvancedSetting -Value "retry=3 min=disabled,15,15,15,15 max=64 similar=deny passphrase=3"

UserVars.SuppressHyperthreadWarning

潜在的なハイパースレッディング セキュリティの脆弱性に対する警告を抑制します。

ハイパースレッディング セキュリティ警告は、システム内の未解決の CPU 脆弱性を示します。これらの警告を無視すると、潜在的なリスクを見逃す可能性があります。ハードウェア修正を組織の許容されるリスクと確実に一致させます。警告を抑制する場合は、決定と根拠を文書化します。

インストールのデフォルト値:0
ベースラインの推奨値:0
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.SuppressHyperthreadWarning
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.SuppressHyperthreadWarning | Set-AdvancedSetting -Value 0

UserVars.DcuiTimeOut

アイドル状態の DCUI セッションを自動的に終了するタイムアウトを設定します。

DCUI を使用すると、ESXi ホストに直接ログインして管理タスクを実行できます。放置されたログイン セッションからの意図しない DCUI の使用を回避するには、アイドル状態の接続を終了します。

インストールのデフォルト値:600
ベースラインの推奨値:600
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.DcuiTimeOut
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.DcuiTimeOut | Set-AdvancedSetting -Value 600

CIM サービスを無効にする

ESXi CIM サービスは無効にする必要があります。

使用されておらず、操作に不可欠でないサービスは無効にする必要があります。

インストールのデフォルト値:停止、ホストと連動して起動および停止
ベースラインの推奨値:停止、手動で起動および停止
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'sfcbd-watchdog' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'sfcbd-watchdog' -and $_.Policy -eq 'On'}
PowerCLI コマンドの修正例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'sfcbd-watchdog'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'sfcbd-watchdog'} | Stop-VMHostService

Config.HostAgent.log.level

ログ作成の情報レベルを設定します。

ログ レベルを設定するときは、診断とフォレンジックを実行するのに十分な情報が監査ログに必ず含まれるようにします。

インストールのデフォルト値:Info
ベースラインの推奨値:Info
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
ログによって追加のストレージ容量が使用されます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.log.level
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.log.level | Set-AdvancedSetting -Value info

Syslog.global.logLevel

イベントに関する十分な情報をログに記録します。

十分なログ データがないと、侵害の重大な痕跡が見逃され、脆弱性が増大し、サイバーセキュリティ インシデントに効果的に対応できなくなる可能性があります。

インストールのデフォルト値:Error
ベースラインの推奨値:Info
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
ログによって追加のストレージ容量が使用されます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logLevel
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logLevel | Set-AdvancedSetting -Value info

Config.HostAgent.plugins.solo.enableMob

管理対象オブジェクト ブラウザ (MOB) を無効にします。

使用されておらず、操作に不可欠でないサービスは無効にする必要があります。

インストールのデフォルト値:False
ベースラインの推奨値:False
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.plugins.solo.enableMob
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.plugins.solo.enableMob | Set-AdvancedSetting -Value False

Net.BlockGuestBPDU

ゲスト OS のブリッジ プロトコル データ ユニット (BPDU) 転送をブロックします。

BPDU は、スパニング ツリー プロトコル (STP) 情報を送信し、ネットワーク ループを検出するために使用されます。BPDU Guard と Portfast は通常、スパニング ツリーのコンバージェンス遅延を軽減するために、ESXi ホストに直接接続された物理スイッチで有効にします。

ただし、BPDU パケットが ESXi ホスト上の仮想マシンから構成済みの物理スイッチに送信されると、ESXi ホストからのすべてのアップリンク インターフェイスがカスケード ロックアウトされる可能性があります。このタイプのロックアウトを回避するには、ESXi ホストで BPDU フィルタを有効にして、物理スイッチに送信される BPDU パケットをドロップします。

標準スイッチおよび Distributed Switch では、STP をサポートせず、BPDU を生成しません。

インストールのデフォルト値:1
ベースラインの推奨値:1
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
一部のネットワーク指向のワークロードは、BPDU パケットを正当に生成できます。BPDU フィルタを有効にする前に、 ESXi ホスト上の仮想マシンによって正当な BPDU パケットが生成されていないことを確認します。この状況で BPDU フィルタを有効にし、仮想スイッチ ポート グループで [偽装転送の拒否] を有効にすると、スパニング ツリー ループに対する保護が追加されます。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BlockGuestBPDU
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BlockGuestBPDU | Set-AdvancedSetting -Value 1

Net.DVFilterBindIpAddress

dvFilter ネットワーク API の使用を制限します。

dvFilter ネットワーク API を使用する VMware NSX などの製品を使用しない場合は、ネットワーク情報を IP アドレスに送信するように ESXi ホストを構成しないでください。API を有効にし、侵害された IP アドレスを参照すると、ESXi ホスト上の他の仮想マシンのネットワークへの不正アクセスが可能になる可能性があります。

この API に依存する製品を使用している場合は、安全なネットワーク通信を確保するために、ESXi ホストが正しく構成されていることを確認することが重要です。

インストールのデフォルト値:""
ベースラインの推奨値:""
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.DVFilterBindIpAddress
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.DVFilterBindIpAddress | Set-AdvancedSetting -Value ""

UserVars.ESXiShellTimeOut

タイムアウトを設定して、ESXi Shell および SSH サービスの実行を許可する期間を制限します。

このシステムの詳細設定では、ESXi Shell および SSH サービスが自動的に終了するまでの期間を定義します。

インストールのデフォルト値:0
ベースラインの推奨値:600
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellTimeOut
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellTimeOut | Set-AdvancedSetting -Value 600

UserVars.SuppressShellWarning

サポート インターフェイスとトラブルシューティング インターフェイスの警告を抑制します。

ESXi ホストでは、ESXi Shell が有効化されたことを示す警告を抑制してはなりません。

SSH または ESXi Shell が有効化されたことを示す警告は、攻撃が進行中であることを示す手がかりになる可能性があります。SSH と ESXi Shell が無効になっていて、このシステムの詳細設定が有効になっていないことを確認することが重要です。

インストールのデフォルト値:0
ベースラインの推奨値:0
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.SuppressShellWarning
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.SuppressShellWarning | Set-AdvancedSetting -Value 0

FIPS 用に ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンは、FIPS 140-2/140-3 で検証された暗号のみを使用するように構成する必要があります。有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
ベースラインの推奨値:[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'ciphers'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'ciphers'
$arguments.value = '[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

FIPS 用に ESXi SSH デーモンを構成する

ESXi ホストの SSH デーモンでは、FIPS 140-2/140-3 で検証された暗号化モジュールを使用する必要があります。

ESXi ホストの OpenSSH には、FIPS 140-2/140-3 で検証された暗号化モジュールが付属し、デフォルトで有効になっています。下位互換性の理由から、このモジュールを無効にすることができます。監査し、必要に応じて修正します。

インストールのデフォルト値:True
ベースラインの推奨値:True
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.security.fips140.ssh.get.Invoke()
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.security.fips140.ssh.set.CreateArgs()
$arguments.enable = $true
$ESXcli.system.security.fips140.ssh.set.Invoke($arguments)

ゲートウェイ ポートを許可しないように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンは、ゲートウェイ ポートを許可しないように構成する必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:No
ベースラインの推奨値:No
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'gatewayports'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'gatewayports'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ホストベースの認証を使用しないように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、ホストベースの認証を許可してはなりません。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:No
ベースラインの推奨値:No
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'hostbasedauthentication'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'hostbasedauthentication'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

タイムアウト回数を設定するように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、アイドル状態のセッションのタイムアウト回数を設定する必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。タイムアウト回数にアイドル タイムアウト間隔を掛けた値は、セッションが切断されるまでアイドル状態が許容される合計秒数になります。

インストールのデフォルト値:3
ベースラインの推奨値:3
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'clientalivecountmax'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'clientalivecountmax'
$arguments.value = '3'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

タイムアウト間隔を設定するように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、アイドル状態のセッションのタイムアウト回数を設定する必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。タイムアウト回数にアイドル タイムアウト間隔を掛けた値は、セッションが切断されるまでアイドル状態が許容される合計秒数になります。

インストールのデフォルト値:200
ベースラインの推奨値:200
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'clientaliveinterval'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'clientaliveinterval'
$arguments.value = '200'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ログイン バナーを表示するように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、システムへのアクセス権を付与する前に、システム ログイン バナーを表示する必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。このバナーにテキストを提供するには、Config.Etc.issue 設定も設定する必要があります。

インストールのデフォルト値: /etc/issue
ベースラインの推奨値: /etc/issue
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'banner'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'banner'
$arguments.value = '/etc/issue'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

.rhosts ファイルを無視するように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、.rhosts ファイルを無視する必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:Yes
ベースラインの推奨値:Yes
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'ignorerhosts'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'ignorerhosts'
$arguments.value = 'yes'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ストリームのローカル転送を無効にするように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、ストリームのローカル転送を無効にする必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:No
ベースラインの推奨値:No
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'allowstreamlocalforwarding'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'allowstreamlocalforwarding'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

TCP 転送を無効にするように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、TCP 転送を無効にする必要があります。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:No
ベースラインの推奨値:No
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'allowtcpforwarding'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'allowtcpforwarding'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

トンネルを許可しないように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、トンネルを許可してはなりません。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:No
ベースラインの推奨値:No
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'permittunnel'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'permittunnel'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ユーザー環境設定を許可しないように ESXi SSH デーモンを構成する

ESXi ホストの Secure Shell (SSH) デーモンでは、ユーザー環境設定を許可してはなりません。

有効な場合は、システム サービスを強化してセキュリティ保護する必要があります。

インストールのデフォルト値:No
ベースラインの推奨値:No
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'permituserenvironment'} | Select-Object -ExpandProperty Value
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'permituserenvironment'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

サービス ロケーション プロトコル サービスを無効にする

サービス ロケーション プロトコル (SLP) サービスを使用していない場合は、無効にします。

インストールのデフォルト値:停止、手動で起動および停止
ベースラインの推奨値:停止、手動で起動および停止
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'slpd' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'slpd' -and $_.Policy -eq 'On'}
PowerCLI コマンドの修正例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'slpd'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'slpd'} | Stop-VMHostService

Mem.ShareForceSalting

透過的ページ共有を、sched.mem.pshare.salt が構成された仮想マシンに制限します。

透過的ページ共有 (TPS) は、仮想マシンのメモリ占有量を減らす方法です。高度に制御された条件下では、攻撃者は TPS を使用して、隣接する仮想マシン上のデータに不正にアクセスする可能性があります。sched.mem.pshare.salt 設定が構成されていない仮想マシンは、他の仮想マシンとメモリを共有できません。最新の多くの CPU でハイパーバイザーのパフォーマンスを最適化するラージ ページ サイズは、TPS と互換性がありません。

インストールのデフォルト値:2
ベースラインの推奨値:2
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Mem.ShareForceSalting
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Mem.ShareForceSalting | Set-AdvancedSetting -Value 2

UserVars.HostClientSessionTimeout

アイドル状態の ESXi Host Client セッションを自動的に終了するタイムアウトを設定します。

ESXi ホストでは、アイドル状態の Host Client セッションを自動的に終了する必要があります。このプラクティスは、許可されていないユーザーや悪意のあるソフトウェアによって悪用される可能性のある無人セッションが無期限に開かれたままにしないようにすることで、潜在的なセキュリティ リスクを軽減するのに役立ちます。

インストールのデフォルト値:900
ベースラインの推奨値:900
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.HostClientSessionTimeout
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.HostClientSessionTimeout | Set-AdvancedSetting -Value 900

Net.BMCNetworkEnable

仮想ハードウェア管理ネットワーク インターフェイスを無効にします。

ハードウェア管理コントローラは、多くの場合、仮想 NIC または USB NIC を ESXi ホストに提供します。これらはバックドアとして使用できるため、ハードウェア構成と ESXi 構成の両方で無効にする必要があります。

インストールのデフォルト値:1
ベースラインの推奨値:0
必要なアクション
インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
この機能は、サードパーティの一部の管理対象ソリューションで必要になる場合があります。
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BMCNetworkEnable
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BMCNetworkEnable | Set-AdvancedSetting -Value 0

iSCSI トラフィックの双方向/相互 CHAP 認証を有効にする

iSCSI ストレージ アダプタ認証を [双方向 CHAP を使用] に設定し、認証情報を入力します。

相互 CHAP は、イニシエータ(クライアント)とターゲット(サーバ)の両方が相互に ID を検証するように要求することで、追加の保護レイヤーを提供します。これにより、両者の間で送信されるデータが許可されていないエンティティによって傍受または変更されないようにします。

インストールのデフォルト値:未構成
ベースラインの推奨値:有効
必要なアクション
この機能を使用する場合は、インストールのデフォルト値を変更します。
デフォルト値を変更した場合の潜在的な機能上の影響
なし
PowerCLI コマンドの評価
Get-VMHost -Name $ESXi | Get-VMHostHba | Where {$_.Type -eq "Iscsi"} | Select VMHost, Device, ChapType, @{N="CHAPName";E={$_.AuthenticationProperties.ChapName}}
PowerCLI コマンドの修正例
Get-VMHost -Name $ESXi | Get-VMHostHba | Where {$_.Type -eq "Iscsi"} | Set-VMHostHba parameters

入力パラメータについては、『ESXCLI のリファレンス』を参照してください。

物理的なアクセスを保護することなく ESXi ホストに暗号化キーを保存しない

ESXi ホストでは、ホストへの物理的なアクセスを保護することなく ESXi ホスト自体に暗号化キーを保存してはなりません。

キー パーシステンスは、ローカルの Trusted Platform Module (TPM) を使用して標準キー プロバイダ キーを保存するメカニズムで、通常は外部キー管理システム (KMS) でのみ見られます。このセットアップによって依存関係の管理性が向上しますが、キー パーシステンスを使用すると暗号化リスクが変化します。ホストが攻撃者によって盗まれた場合、攻撃者は外部 KMS のアクセス制御をバイパスして、そのホスト上のデータの暗号化キーにアクセスできるようになります。したがって、キー パーシステンスは、ホストの物理的なセキュリティを確保できる場合にのみ使用してください。物理ホストが安全でなく、ホストが攻撃者によって盗み取られる可能性がある場合、攻撃者にとって、暗号化されたワークロードにアクセスして使用する手段が存在することになります。

キー パーシステンスと vSphere Native Key Provider は、どちらも暗号化データをホストに保存するため、混同されることがよくあります。ただし、vSphere Native Key Provider はキー パーシステンスを使用しないため、キー パーシステンスをオフにしても影響はありません。キー パーシステンスと同様に、vSphere Native Key Provider でも物理的なセキュリティを慎重に検討する必要があります。vSphere システム設計のセキュリティ制御リファレンスを参照してください。

インストールのデフォルト値:False
ベースラインの推奨値:False
必要なアクション
インストールのデフォルト値を監査します。
デフォルト値を変更した場合の潜在的な機能上の影響
デフォルトは適切な動作です。デフォルトから変更すると、攻撃者による物理的なアクセスが可能な環境では機密性に悪影響が及ぶ可能性があります。
PowerCLI コマンドの評価
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.security.keypersistence.get.invoke() | Select-Object -ExpandProperty Enabled
PowerCLI コマンドの修正例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.security.keypersistence.disable.CreateArgs()
$arguments.removeallstoredkeys = $true
$ESXcli.system.security.keypersistence.disable.Invoke($arguments)