Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、および無効化する方法

適用対象: Windows Server 2022、Windows 10、Windows 8.1、Windows 8、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

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

SMBv1 を無効または削除すると、古いコンピューターまたはソフトウェアとの互換性の問題が発生する可能性があります。SMBv1 には重大なセキュリティの脆弱性があります。これを使用しなけ、強く 推奨します

トラブルシューティングのために SMBv2 または SMBv3 を無効にする

SMBv2 と SMBv3 を有効に保つことをお勧めしますが、トラブルシューティングのために一時的に無効にすると便利な場合があります。 詳細については 、「SMB サーバーで状態を検出し、SMB プロトコルを有効または無効にする方法」を参照してください

Windows 10、Windows 8.1、Windows 8、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012 では、SMBv3 を無効にすると、次の機能が非アクティブ化されます。

  • 透過的フェールオーバー - クライアントは、メンテナンスまたはフェールオーバー中にクラスター ノードに中断することなく再接続します
  • Scale Out - すべてのファイル クラスター ノード上の共有データへの同時アクセス
  • マルチチャネル - クライアントとサーバーの間で複数のパスを使用できる場合のネットワーク帯域幅とフォールト トレランスの集計
  • SMB ダイレクト - 低待機時間で CPU 使用率の低い、高パフォーマンスのための RDMA ネットワーク サポートを追加します
  • 暗号化 - エンドツーエンドの暗号化を提供し、信頼できないネットワークでの盗聴から保護します
  • ディレクトリ リース - キャッシュを使用してブランチ オフィスでのアプリケーションの応答時間を向上させる
  • パフォーマンスの最適化 - 小規模なランダム読み取り/書き込み I/O の最適化

7 Windows Server 2008 R2 Windows、SMBv2 を無効にすると、次の機能が非アクティブ化されます。

  • 要求の複合化 - 複数の SMBv2 要求を 1 つのネットワーク要求として送信できます
  • より大きな読み取りと書き込み - より高速なネットワークの使用の向上
  • フォルダーとファイルのプロパティのキャッシュ - クライアントはフォルダーとファイルのローカル コピーを保持します
  • 永続的ハンドル - 一時的な切断がある場合にサーバーに透過的に再接続する接続を許可します
  • メッセージ署名の改善 - HMAC SHA-256 が MD5 をハッシュ アルゴリズムとして置き換える
  • ファイル共有のスケーラビリティの向上 - サーバーあたりのユーザー、共有、開いているファイルの数が大幅に増加しました
  • シンボリック リンクのサポート
  • クライアント オペロック リース モデル - クライアントとサーバーの間で転送されるデータを制限し、待ち時間の長いネットワークのパフォーマンスを向上し、SMB サーバーのスケーラビリティを向上させます
  • 大規模な MTU のサポート - 10 ギガビット イーサネット (GbE) を完全に使用
  • エネルギー効率の向上 - サーバーに対してファイルを開いているクライアントはスリープ状態になります

SMBv2 プロトコルは Windows Vista および Windows Server 2008 で導入されましたが、SMBv3 プロトコルは Windows 8 および Windows Server 2012 で導入されました。 SMBv2 と SMBv3 の機能の詳細については、次の記事を参照してください。

SMBv1 を削除する方法

Windows 10、Windows 8.1、Windows Server 2019、Windows Server 2016、および Windows 2012 R2 で SMBv1 を削除する方法を次に示します。

PowerShell メソッド

SMBv1 (クライアントとサーバー)
  • 検出:

    Get-WindowsOptionalFeature -Online -FeatureName smb1protocol
    
  • 無効:

    Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
    
  • 有効にする:

    Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol
    

Windows Server 2012R2、Windows Server 2016、Windows Server 2019: SMB を無効サーバー マネージャー方法

SMBv1

サーバー マネージャー - Dashboard メソッド

サーバーから SMBv1 をWindowsするには:

  1. SMBv1 サーバー マネージャー削除するサーバーの [ダッシュボード] の [このローカルサーバーの構成] で、[役割と機能の追加 ] を選択します
  2. [開始 する前に] ページで、[役割と機能の削除ウィザードを開始する] を選択し、次のページで [次へ] を 選択します
  3. [サーバー プール] の [ 宛先サーバーの選択] ページで、機能を削除するサーバーが選択され、[次へ] を選択 します
  4. [サーバー ロールの 削除] ページで、[ 次へ] を 選択します
  5. [機能の 削除] ページ、SMB 1.0/CIFS ファイル共有サポートのチェック ボックスをオフにして、[次へ] を 選択します
  6. [削除 の選択内容の 確認] ページで、機能が一覧表示され、[削除] を選択 します

Windows 8.1とWindows 10: PowerShell メソッド

SMBv1 プロトコル
  • 検出:

    Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
    
  • 無効:

    Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
    
  • 有効にする:

    Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
    
SMBv2/v3 プロトコル (SMBv2/v3 サーバーのみを無効にする)
  • 検出:

    Get-SmbServerConfiguration | Select EnableSMB2Protocol
    
  • 無効:

    Set-SmbServerConfiguration -EnableSMB2Protocol $false
    
  • 有効にする:

    Set-SmbServerConfiguration -EnableSMB2Protocol $true
    

Windows 8.1とWindows 10: プログラムの追加または削除メソッド

Add-Remove Programs クライアント メソッド

次のコマンドを使用して SMBv1 Windows 8.1無効Windows 10。

  1. コントロール パネル で、 [プログラムと機能] を選択します。
  2. [コントロール パネル ホーム] の 下にある[機能のWindowsオンまたはオフにする] を選択して、[機能]ボックスWindows開 きます。
  3. [Windows 機能] ボックスで、一覧を下にスクロールし 、SMB 1.0/CIFS ファイル共有サポートのチェック ボックスをオフにして 、[OK] を選択します
  4. 変更Windows適用した後、確認ページで [今すぐ再起動]を選択します

SMB サーバーで状態を検出し、SMB プロトコルを有効または無効にする方法

詳細Windows 8とWindows Server 2012

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

注意

サーバーまたはサーバーで SMBv2 を有効または無効Windows 8、Windows Server 2012 SMBv3 も有効または無効になります。 この動作は、これらのプロトコルが同じスタックを共有している場合に発生します。

Set-SMBServerConfiguration コマンドレットを実行した後に、コンピューターを再起動する必要が生じない。

SMB サーバー上の SMBv1
  • 検出:

    Get-SmbServerConfiguration | Select EnableSMB1Protocol
    
  • 無効:

    Set-SmbServerConfiguration -EnableSMB1Protocol $false
    
  • 有効にする:

    Set-SmbServerConfiguration -EnableSMB1Protocol $true
    

詳細については、Microsoft のサーバー ストレージに関するページを参照してください

SMB サーバー上の SMB v2/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 メソッド

注意

この方法では、PowerShell 2.0 以降のバージョンの 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

これらの変更を行った後、コンピューターを再起動する必要があります。 詳細については、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

注意

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

レジストリ エディター

重要

慎重にこのセクションの手順に従います。 レジストリを正しく変更しないと、重大な問題が発生する可能性があります。 変更する前に、問題が発生した場合に復元するためにレジストリをバックアップします。

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

  1. レジストリ サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters を探し、クリックして選択します。
Registry entry: SMB1
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled (No registry key is created)

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

  1. レジストリ サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters を探し、クリックして選択します。
Registry entry: SMB2
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled (No registry key is created)

注意

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

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
  • Detect

    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
    

詳細については、「 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 サーバーを無効にする

この手順では、レジストリに次の新しい項目を構成します。

  1. レジストリ サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters を探し、クリックして選択します。
  • レジストリエントリ: SMB1
  • REG_DWORD: 0 = 無効

グループポリシーを使用してこれを構成するには、次の手順を実行します。

  1. [グループ ポリシー管理コンソール] を開きます。 新しい基本設定項目を含むグループ ポリシー オブジェクト (GPO) を右クリックして、[編集] をクリックします。

  2. コンソールツリーの [コンピューターの構成] の下にある [基本設定] フォルダーを展開し、[ Windows 設定] フォルダーを展開します。

  3. レジストリ ノードを右クリックして [新規作成] をポイントし、[レジストリ項目] を選択します。

    レジストリ-新規-レジストリ項目

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

  • 操作: 作成
  • Hive: HKEY_LOCAL_MACHINE
  • キーのパス: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • 値の名前: SMB1
  • 値の型: REG_DWORD
  • 値のデータ: 0

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

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

注意

WMI フィルターを設定して、サポートされていないオペレーティングシステムや、Windows XP などの選択した除外を除外することもできます。

重要

レガシ Windows XP 以前の Linux やサードパーティ製のシステム (SMBv2 または SMBv3 をサポートしていないシステム) でこれらの変更を行う場合は、SMB v1 が無効になっている SYSVOL またはその他のファイル共有にアクセスする必要があることに注意してください。

グループポリシーを使用した SMBv1 クライアントの無効化

SMBv1 クライアントを無効にするには、 MRxSMB10 の開始を無効にするために、サービスのレジストリキーを更新する必要があります。 MRxSMB10 の依存関係は、 LanmanWorkstation のエントリから削除する必要があります。これにより、最初に MRxSMB10 を開始することなく、正常に開始できるようになります。

このガイダンスでは、レジストリの次の2つの項目の既定値を更新して置き換えます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation

レジストリエントリ: 依存関係 Onservice REG_MULTI_SZ: "ブラウザー"、"MRxSmb20"、"NSI"

注意

既定で含まれる MRxSMB10 は、依存関係として削除されます。

グループポリシーを使用してこれを構成するには、次の手順を実行します。

  1. [グループ ポリシー管理コンソール] を開きます。 新しい基本設定項目を含める GPO を右クリックし、[ 編集] をクリックします。

  2. コンソールツリーの [コンピューターの構成] の下にある [基本設定] フォルダーを展開し、[ Windows 設定] フォルダーを展開します。

  3. レジストリ ノードを右クリックして [新規作成] をポイントし、[レジストリ項目] を選択します。

  4. [ 新しいレジストリのプロパティ ] ダイアログボックスで、次のように選択します。

    • 操作: 更新
    • Hive: HKEY_LOCAL_MACHINE
    • キーのパス: SYSTEM\CurrentControlSet\services\mrxsmb10
    • 値の名前: Start
    • 値の型: REG_DWORD
    • 値のデータ: 4

    開始プロパティ-全般

  5. 次に、無効になっていた MRxSMB10 の依存関係を削除します。

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

    • 操作: 置換
    • Hive: HKEY_LOCAL_MACHINE
    • キーのパス: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
    • 値の名前: 依存関係 onservice
    • 値の型: REG_MULTI_SZ
    • 値のデータ:
      • ブラウザー
      • MRxSmb20
      • NSI

    注意

    これら3つの文字列には、箇条書きは含まれません (次のスクリーンショットを参照してください)。

    依存関係 Onservice のプロパティ

    既定値には Windows の多くのバージョンの MRxSMB10 が含まれているので、この複数値の文字列に置き換えることにより、 LanmanServer の依存関係として MRxSMB10 を削除し、4つの既定値から上記の3つの値だけに移動することが有効になります。

    注意

    グループポリシー管理コンソールを使用する場合は、引用符またはコンマを使用する必要はありません。 個々の行に各エントリを入力するだけです。

  6. SMB v1 の無効化を完了するには、対象のシステムを再起動してください。

SMBv1 の使用状況の監査

SMBv1 を使用して SMB サーバーに接続しようとしているクライアントを特定するには、Windows Server 2016、Windows 10、および Windows サーバー2019の監査を有効にします。 また、2008年5月の更新プログラムがインストールされて2018いる場合、Windows 7 と Windows Server R2 で監査することもできます。また、月単位の2017更新プログラムがインストールされている場合は、Windows 8.1 と Windows Server 2012 R2 で監査することもできます。

  • 有効にする:

    Set-SmbServerConfiguration -AuditSmb1Access $true
    
  • 切り替える

    Set-SmbServerConfiguration -AuditSmb1Access $false
    
  • 識別

    Get-SmbServerConfiguration | Select AuditSmb1Access
    

SMBv1 監査を有効にすると、イベント3000が Windows "SMBServer\Audit" イベントログに表示され、SMBv1 に接続しようとする各クライアントが識別されます。

要約

すべての設定が同じ GPO 内にある場合、[グループポリシーの管理] には次の設定が表示されます。

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

テストと検証

この記事の構成手順を完了したら、ポリシーをレプリケートして更新できるようにします。 テストに必要な場合は、コマンドプロンプトで gpupdate/force を実行し、対象のコンピューターを確認して、レジストリ設定が正しく適用されていることを確認します。 環境内の他のすべてのシステムで SMBv2 と SMBv3 が機能していることを確認します。

注意

必ず、ターゲットシステムを再起動してください。