Windows と Windows Server で SMBv1、SMBv2、SMBv3 を検出する方法と有効または無効にする方法

適用対象: Windows 10 Pro released in July 2015Windows Vista EnterpriseWindows Vista Business 詳細

概要


この資料では、SMB クライアントおよびサーバー コンポーネントでサーバー メッセージ ブロック (SMB) バージョン 1 (SMBv1)、SMB バージョン 2 (SMBv2)、SMB バージョン 3 (SMBv3) を有効または無効にする方法について説明します。 
 

Windows 7 および Windows Server 2008 R2 で SMBv2 を無効にすると、次の機能も無効になります。
  • 要求の組み合わせ - 1 つのネットワーク要求として複数の SMBv2 要求を送信できます
  • 読み取り数および書き込み数の向上 - 高速ネットワークを効率的に使用できます
  • フォルダーとファイルのプロパティのキャッシュ - フォルダーとファイルのローカル コピーをクライアントに保存できます
  • 持続的ハンドル - 一時的な切断が発生しても、透過的にサーバーに再接続できます
  • メッセージ署名の改善 - ハッシュ アルゴリズムとして MD5 が HMAC SHA-256 に置き換わります
  • ファイル共有のスケーラビリティの改善 - サーバーあたりのユーザー数、共有数、開かれるファイル数が大幅に増えます
  • シンボリック リンクのサポート
  • クライアント oplock リース モデル - クライアントとサーバー間で転送されるデータを制限し、高遅延ネットワークのパフォーマンスを改善し、SMB サーバーのスケーラビリティを向上します
  • Large MTU のサポート - 10 ギガバイト (GB) イーサネットをフルに使用できます
  • エネルギー効率の改善 - サーバーに対して開いているファイルがあるクライアントはスリープできます
Windows 8、Windows 8.1、Windows 10、Windows Server 2012、および Windows Server 2016 では、SMBv3 を無効にすると、次の機能も無効になります (また、前の一覧で説明した SMBv2 機能も無効になります)。
  • 透過的なフェールオーバー - メンテナンスまたはフェールオーバー時に、クライアントは中断することなくクラスター ノードに再接続できます
  • スケール アウト - すべてのファイル クラスター ノード上の共有データに同時接続できます 
  • マルチチャンネル - クライアントとサーバー間で複数のパスが使用できる場合のネットワーク帯域幅の集約とフォールト トレランス
  • SMB ダイレクト - 低遅延、低 CPU 使用率で、非常に高いパフォーマンスの RDMA ネットワーキング サポートが追加されます
  • 暗号化 - エンドツーエンドの暗号化を提供し、信頼できないネットワークでの盗聴から保護できます。
  • ディレクトリ リース - キャッシュによって、支社にあるアプリケーションの応答時間を改善します
  • パフォーマンスの最適化 - サイズの小さいランダムな読み取り/書き込み I/O の最適化

詳細情報


SMBv2 プロトコルは、Windows Vista および Windows Server 2008 で導入されました。

SMBv3 プロトコルは、Windows 8 および Windows Server 2012 で導入されました。

SMBv2 と SMBv3 の機能の詳細については、次のマイクロソフト TechNet Web サイトを参照してください。
 

Windows 8.1、Windows 10、Windows 2012 R2、および Windows Server 2016 で SMBv1 を適切に削除する方法


Windows Server 2012 R2 および 2016: PowerShell メソッド

SMBv1

検出:

Get-WindowsFeature FS-SMB1

無効化:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

有効化:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol


SMBv2/v3

検出:

Get-SmbServerConfiguration | Select EnableSMB2Protocol

無効化:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

有効化:

Set-SmbServerConfiguration -EnableSMB2Protocol $true



Windows Server 2012 R2 および Windows Server 2016: SMB を無効にするためのサーバー マネージャー メソッド

SMBv1
Server Manager - Dashboard method



Windows 8.1 および Windows 10: PowerShell メソッド

SMBv1 プロトコル



Windows 8.1 および Windows 10: [プログラムの追加と削除] を使用する方法

Add-Remove Programs client method
 
 

SMB サーバーでステータスを検出する方法と SMB プロトコルを有効および無効にする方法


Windows 8 および Windows Server 2012

Windows 8 および Windows Server 2012 では、Set-SMBServerConfiguration という新しい Windows PowerShell コマンドレットが導入されました。 このコマンドレットを使用すると、サーバー コンポーネント上の SMBv1、SMBv2、および SMBv3 プロトコルを有効または無効にすることができます。 


Set-SMBServerConfiguration コマンドレットの実行後に、コンピューターを再起動する必要はありません。

SMB サーバー上のSMBv1
検出: Get-SmbServerConfiguration | Select EnableSMB1Protocol
無効化: Set-SmbServerConfiguration -EnableSMB1Protocol $false
有効化: Set-SmbServerConfiguration -EnableSMB1Protocol $true

詳細については、「Storage at Microsoft」(英語情報) を参照してください。

SMB サーバー上のSMBv2/v3
検出: Get-SmbServerConfiguration | Select EnableSMB2Protocol
無効化: Set-SmbServerConfiguration -EnableSMB2Protocol $false
有効化: Set-SmbServerConfiguration -EnableSMB2Protocol $true


Windows 7、Windows Server 2008 R2、Windows Vista、および Windows Server 2008 の場合

Windows 7、Windows Server 2008 R2、Windows Vista、または Windows Server 2008 を実行している SMB サーバー上で SMB プロトコルを有効または無効にするには、Windows PowerShell またはレジストリ エディターを使用します。

PowerShell メソッド


SMB サーバー上のSMBv1

検出:

Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

既定の構成では有効になっているため (レジストリ キーは作成されない)、SMB1 の値は返されない

無効化:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

有効化:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force


注: これらの変更を実行した後は、コンピューターを再起動する必要があります。

詳細については、「Storage at Microsoft」(英語情報) を参照してください。

SMB サーバー上のSMBv2/v3

検出:

Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}


無効化:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 –Force


有効化:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force


注: これらの変更を実行した後は、コンピューターを再起動する必要があります。


レジストリ エディター

重要: この資料には、レジストリの編集方法が記載されています。 レジストリを変更する前に必ずレジストリのバックアップを作成してください。 また、問題が発生した場合に備えて、レジストリの復元方法を理解しておいてください。 レジストリのバックアップ、復元、および編集方法の詳細については、以下のサポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法

SMB サーバー上で SMBv1 を有効または無効にするには、次のレジストリ キーを構成します。

レジストリ サブキー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
レジストリ エントリ: SMB1
REG_DWORD: 0 = 無効
REG_DWORD: 1 = 有効
既定値: 1 = 有効 (レジストリ キーは作成されません)

SMB サーバー上で SMBv2 を有効または無効にするには、次のレジストリ キーを構成します。

レジストリ サブキー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
レジストリ エントリ: SMB2
REG_DWORD: 0 = 無効
REG_DWORD: 1 = 有効
既定値: 1 = 有効 (レジストリ キーは作成されません)


注: これらの変更を実行した後は、コンピューターを再起動する必要があります。

SMB クライアントでステータスを検出する方法と SMB プロトコルを有効および無効にする方法


Windows Vista、Windows Server 2008、Windows 7、Windows Server 2008 R2、Windows 8、および Windows Server 2012 の場合

注: Windows 8 または Windows Server 2012 で SMBv2 を有効または無効にすると、SMBv3 も有効または無効になります。 これらのプロトコルは同じスタックを共有しているため、このような動作になります。

SMB クライアント上の SMBv1
検出: sc.exe qc lanmanworkstation
無効化: sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
有効化: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto


詳細については、「Storage at Microsoft」(英語情報) を参照してください

SMB クライアント上の SMBv2/v3
検出: sc.exe qc lanmanworkstation
無効化: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
有効化: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto


注:

  • これらのコマンドは、管理者特権を持つコマンド プロンプトから実行する必要があります。
  • これらの変更を実行した後は、コンピューターを再起動する必要があります。

グループ ポリシーで SMBv1 Server を無効にする


この手順でレジストリ内に次の新しい項目が構成されます:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

レジストリ エントリ: SMB1 REG_DWORD: 0 = 無効


グループ ポリシーを使用してこの設定を構成するには:

  1. グループ ポリシー管理コンソールを開きます。 新しい設定項目を含むグループ ポリシー オブジェクト (GPO) を右クリックし、[編集] をクリックします。
  2. コンソール ツリーの [コンピューターの構成] の [基本設定] フォルダーを展開し、[Windows の設定] フォルダーを展開します。
  3. [レジストリ] ノードを右クリックし、[新規] をポイントして [レジストリ項目] を選択します。

    新しい-レジストリ項目をレジストリ

[新しいレジストリのプロパティ] ダイアログ ボックスで、以下を選択します。

  • 対策 作成
  • ハイブ: HKEY_LOCAL_MACHINE
  • キー パス: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • 値の名前: SMB1
  • 値の種類: REG_DWORD
  • 値のデータ: 0

新しいレジストリのプロパティ - 全般

SMBv1 Server コンポーネントが無効になります。 このグループ ポリシーは、ドメイン内のすべての必要なワークステーション、Server 、ドメイン コントローラーに適用する必要があります。

注: Windows XP など、サポートされないオペレーティング システムを除外する場合や、除外する内容を選択する場合は、WMI フィルターも設定する必要があります。 

グループ ポリシーで SMBv1 クライアントを無効にする


SMBv1 クライアントを無効にするには、MRxSMB10 の起動を無効にするようにサービスのレジストリ キーを更新してから、LanmanWorkstation のエントリから MRxSMB10 の依存関係を削除する必要があります。その結果、通常は先に起動する必要がある MRxSMB10 を起動せずに LanmanWorkstation を起動できるようになります。

これで、レジストリ内の次の 2 項目の既定値が更新および置換されます。


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10

レジストリ エントリ: Start REG_DWORD: 4 = 無効

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation

レジストリ エントリ: DependOnService REG_MULTI_SZ: 「Bowser」、「MRxSmb20」、「NSI」


注: 既定で含まれている MRxSMB10 は、依存関係として削除されるようになりました


グループ ポリシーを使用してこの設定を構成するには:

  1. グループ ポリシー管理コンソールを開きます。 新しい設定項目を含むグループ ポリシー オブジェクト (GPO) を右クリックし、[編集] をクリックします。
  2. コンソール ツリーの [コンピューターの構成] の [基本設定] フォルダーを展開し、[Windows の設定] フォルダーを展開します。
  3. [レジストリ] ノードを右クリックし、[新規] をポイントして [レジストリ項目] を選択します。

新しい-レジストリ項目をレジストリ

[新しいレジストリのプロパティ] ダイアログ ボックスで、以下を選択します。

  • 対策 更新プログラム
  • ハイブ: HKEY_LOCAL_MACHINE
  • キー パス: SYSTEM\CurrentControlSet\services\mrxsmb10
  • 値の名前: Start
  • 値の種類: REG_DWORD
  • 値のデータ: 4

開始のプロパティ - 全般

次に、無効にした MRxSMB10 の依存関係を削除します。

[新しいレジストリのプロパティ] ダイアログ ボックスで、以下を選択します。

  • 対策 Replace
  • ハイブ: HKEY_LOCAL_MACHINE
  • キー パス: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
  • 値の名前: DependOnService
  • 値の種類: REG_MULTI_SZ
  • 値のデータ:
    • Bowser
    • MRxSmb20
    • NSI

注: これら 3 つの文字列に箇条書きはありません (次のスクリーン ショットを参照)。

プロパティを調べ、DependOnService

多くのバージョンの Windows の既定値には MRxSMB10 が含まれるので、複数値文字列に置き換えると、結果的に LanmanServer の依存関係として MRxSMB10 が削除され、4 つの既定値から上記の 3 つの値のみになります。

注: グループ ポリシー管理コンソールを使用する場合は、引用符やコンマを使用する必要はありません。 各エントリのみをそれぞれの行に入力してください。

再起動が必要

ポリシーを適用し、レジストリ設定が完了したら、対象のシステムを再起動してから SMBv1 を無効にする必要があります。

概要

すべての設定を同じグループ ポリシー オブジェクト (GPO) に構成すると、グループ ポリシー管理には以下の設定が表示されます。

グループ ポリシー管理エディターのレジストリ

テストと検証

これらの構成が完了したら、ポリシーのレプリケートと更新を許可します。 テストの必要に応じて、コマンド プロンプトから gpupdate /force を実行し、対象のコンピューターでレジストリ設定が適切に適用されていることを確認します。 環境内の他のすべてのシステムで SMBv2 と SMBv3 が機能していることを確認します。