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 Server 2019、Windows Server 2016、Windows Server 2012 R2、および Windows Server 2012 で SMBv3 を無効にすると、次の機能が無効になります。

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

Windows 7 および Windows Server 2008 R2で SMBv2 を無効にすると、次の機能が無効になります。

  • 要求の複合化: 複数の SMBv2 要求を 1 つのネットワーク要求として送信できます
  • より大きな読み取りと書き込み: より高速なネットワークのより良い使用
  • フォルダーとファイルのプロパティのキャッシュ: クライアントはフォルダーとファイルのローカル コピーを保持します
  • 永続的ハンドル: 一時的な切断が発生した場合に、サーバーへの接続を透過的に再接続できるようにします
  • メッセージ署名の改善: HMAC SHA-256 が MD5 をハッシュ アルゴリズムとして置き換えます
  • ファイル共有のスケーラビリティの向上: サーバーあたりのユーザー数、共有数、および開いているファイルの数大幅に増加します
  • シンボリック リンクのサポート
  • クライアント oplock リース モデル: クライアントとサーバーの間で転送されるデータを制限し、待機時間の長いネットワークのパフォーマンスを向上し、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 メソッド

PowerShell コマンドを使用して SMBv1 クライアントとサーバーを検出、無効化、有効化する手順を次に示します。

Note

PowerShell コマンドを実行して SMBv1 を無効または有効にした後、コンピューターが再起動します。

  • 検出する:

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

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

    Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
    

Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019: サーバー マネージャー方式

Server Manager - Dashboard method

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

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

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

Add-Remove Programs client method

Windows8.1 および Windows10 で SMBv1 を無効にするには:

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

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

Windows 8.1、Windows Server 2012、Windows Server 2012 R2、Windows 10、および Windows Server 2019 の場合

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

Note

Windows 8 または Windows Server 2012 で SMBv2 を有効または無効にすると、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 Server2008 の場合

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

PowerShell メソッド

Note

この方法では、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 サーバー上の SMB v2/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

Note

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

レジストリ エディター

重要

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

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

2. レジストリ サブキー 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 を有効または無効にするには、次のレジストリ キーを構成します。

2. レジストリ サブキー 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)

Note

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

SMB クライアントで状態を検出し、SMB プロトコルを有効または無効にする方法

ここでは、Windows 10、Windows Server 2019、Windows 8.1、Windows Server 2016、Windows Server 2012 R2、およびWindows Server2012 を実行しているSMB クライアントで状態を検出して SMB プロトコルを有効または無効にする方法を説明します。

Note

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
    

Note

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

グループ ポリシーを使用して SMBv1 を無効にする

このセクションでは、グループ ポリシーを使用して SMBv1 を無効にする方法を紹介します。 このメソッドは、さまざまなバージョンの Windows で使用できます。

SMBv1 サーバーを無効にする

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

2. レジストリ サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters を探し、クリックして選択します。

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

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

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

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

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

    Registry - New - Registry Item

[新しいレジストリのプロパティ] ダイアログ ボックスで、次の操作を行います。

  • アクション: 更新
  • Hive: HKEY_LOCAL_MACHINE
  • キー パス: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • 値の名前: SMB1
  • 値の型: REG_DWORD
  • 値のデータ: 0

New Registry Properties - General

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

Note

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

重要

従来の Windows XP または古い Linux およびサードパーティ システム (SMBv2 または SMBv3 をサポートしない) が SMBv1 が無効になっている 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

レジストリ エントリ: DependOnService REG_MULTI_SZ: "Bowser"、"MRxSmb20″、"NSI"

Note

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

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

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

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

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

  4. [新しいレジストリのプロパティ] ダイアログ ボックスで、次の操作を行います。

    • アクション: 更新
    • Hive: HKEY_LOCAL_MACHINE
    • キーのパス: SYSTEM\CurrentControlSet\services\mrxsmb10
    • 値の名前: 開始
    • 値の型: REG_DWORD
    • 値のデータ: 4

    Start Properties - General

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

    [新しいレジストリのプロパティ] ダイアログ ボックスで、次の操作を行います。

    • 操作: 置換
    • Hive: HKEY_LOCAL_MACHINE
    • キーのパス: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
    • 値の名前: DependOnService
    • 値の種類: REG_MULTI_SZ
    • 値のデータ:
      • Bowser
      • MRxSmb20
      • NSI

    Note

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

    DependOnService Properties

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

    Note

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

  6. 対象のシステムを再起動して、SMB v1 の無効化を完了します。

SMBv1 使用状況の監査

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

  • 有効にする:

    Set-SmbServerConfiguration -AuditSmb1Access $true
    
  • 無効する:

    Set-SmbServerConfiguration -AuditSmb1Access $false
    
  • 検出する:

    Get-SmbServerConfiguration | Select AuditSmb1Access
    

SMBv1 監査が有効になっていると、イベント 3000 が "Microsoft-Windows-SMBServer\Audit" イベント ログに表示され、SMBv1 との接続を試みる各クライアントが識別されます。

まとめ

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

Group Policy Management Editor - Registry

テストおよび検証

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

Note

ターゲット システムを再起動することを忘れないでください。