この記事では、SMB クライアントおよびサーバー コンポーネントで、サーバー メッセージ ブロック (SMB) バージョン 1 (SMBv1)、SMB バージョン 2 (SMBv2)、SMB バージョン 3 (SMBv3) を有効または無効にする方法について説明します。
SMBv1 を無効または削除すると、古いコンピューターまたはソフトウェアとの互換性の問題が発生する可能性があります。 SMBv1 には重大なセキュリティの脆弱性があり、使用しないことを強くお勧めします。 SMBv1 は、Windows 11 または Windows Server 2019 以降のバージョンのどのエディションにも 既定でインストールされていません。 SMBv1 は、Home エディションと Pro エディションを除き、Windows 10 にも既定ではインストールされません。 SMBv1 を再インストールする代わりに、必要な SMB サーバーを更新することをお勧めします。 SMBv1 を必要とするパートナーとその要件を削除する更新プログラムの一覧については、「SMB1 製品クリアリングハウスを参照してください。
トラブルシューティングのために SMBv2 または SMBv3 を無効にする
SMBv2 と SMBv3 を有効にしておくことをお勧めしますが、トラブルシューティングのために一時的に無効にすると便利な場合があります。 詳細については、「コマンド ラインまたはレジストリ エディターを使用して SMB プロトコルを管理する」を参照してください。
SMBv3 を無効にすると、次の機能が非アクティブ化されます。
- 透過的なフェールオーバー: メンテナンス中またはフェールオーバー中にクラスター ノードを中断せずに再接続する方法をクライアントに提供します
- スケールアウト: すべてのファイル クラスター ノード上の共有データへの同時アクセスを提供します
- SMB マルチチャネル: クライアントとサーバーの間で複数のパスを使用できる場合に、ネットワーク帯域幅とフォールト トレランスの集計を容易にします
- SMB ダイレクト: 低待機時間で CPU 使用率が低い、高パフォーマンスのためのリモート ダイレクト メモリ アクセス (RDMA) ネットワーク サポートを追加
- 暗号化: エンドツーエンドの暗号化を提供し、信頼できないネットワークでの傍受からの保護を提供します
- ディレクトリ リース: キャッシュを使用してブランチ オフィスのアプリケーション応答時間を向上させる
- パフォーマンスの最適化: 小さなランダム読み取り/書き込み I/O 操作を最適化します
SMBv2 を無効にすると、次の機能が非アクティブ化されます。
- 要求の複合化: 1 つのネットワーク要求として複数の SMBv2 要求を送信できます
- 読み取りと書き込みを大きくする: 高速ネットワークの使用が向上します
- フォルダーとファイルのプロパティのキャッシュ: クライアントにフォルダーとファイルのローカル コピーを保持する機能を提供します
- 耐久性のあるハンドル: 接続が一時的に切断された後、透過的にサーバーに再接続する手段を提供します
- メッセージ署名の改善: ハッシュ アルゴリズムとして Message-Digest Algorithm 5 (MD5) ではなく、256 ビット ダイジェスト (HMAC SHA-256) を使用するハッシュベースのメッセージ認証コード (HMAC) セキュア ハッシュ アルゴリズム (SHA) を使用します
- ファイル共有のスケーラビリティの向上: サーバーあたりのユーザー、共有、および開いているファイルの数が大幅に増加します
- シンボリック リンクのサポート
- クライアント 運用リース モデル: クライアントとサーバーの間で転送されるデータを制限し、待ち時間の長いネットワークのパフォーマンスを向上させ、SMB サーバーのスケーラビリティを向上させます
- 大容量最大伝送ユニット (MTU) のサポート: 10 ギガビット イーサネット (GbE) のフル 使用をサポート
- エネルギー効率の向上: サーバーに開いているファイルを持つクライアントがスリープ状態にするための方法を提供します
SMBv2 プロトコルは、Windows Vista および Windows Server 2008 で導入されました。 SMBv3 プロトコルは、Windows 8 および Windows Server 2012 で導入されました。 SMBv2 と SMBv3 の機能の詳細については、次の記事を参照してください。
PowerShell を使用して SMBv1 を削除する
Get-WindowsOptionalFeature、Disable-WindowsOptionalFeature、Enable-WindowsOptionalFeature PowerShell コマンドを使用して、SMBv1 クライアントまたはサーバーを検出、無効化、および有効にすることができます。 管理者特権のコマンド プロンプトでコマンドを実行します。
注意
PowerShell コマンドを実行して SMBv1 を無効または有効にした後、コンピューターが再起動します。
検出する:
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
無効する:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
有効にする:
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
SMBv1 は、Windows Server 2019 以降のバージョンでは既定ではインストールされません。 以前のバージョンの Windows Server では、サーバー マネージャーを使用して SMBv1 を削除できます。
SMBv1 を削除するサーバーで、サーバー マネージャーを開きます。
サーバー マネージャー ダッシュボードの [このローカル サーバーの構成] で、[役割と機能の追加] 選択。
[始める前に] ページで、[役割および機能の削除ウィザード] を選択し、次のページで [次へ] を選択します。
[移行先サーバー の選択] ページの [サーバー プール] で、機能を削除するサーバーが選択されていることを確認し、[次へ] 選択します。
[サーバー ロールの選択] ページで、[次へ] を選択します。
[機能の削除] ページで、SMB 1.0/CIFS ファイル共有サポート のチェック ボックスをオフにし、[次へ] 選択。
[削除の選択を確認する] ページで、機能が一覧表示されていることを確認してから、[削除] を選択 します。
Windows 8.1、Windows 10、および Windows 11 では、[プログラムの削除] を使用して SMBv1 を無効にすることができます。
これらのオペレーティング システムで SMBv1 を無効にするには、次の手順を実行します。
コントロール パネルで、 [プログラムと機能] を選択します。
[コントロール パネル ホーム] で、[Windows の機能の有効化または無効化] を選択して [Windows の機能] ダイアログを開きます。
[Windows の機能] ダイアログで一覧を下にスクロールし、[SMB 1.0/CIFS ファイル共有のサポート] チェックボックスをオフにして [OK] を選択します。
Windows で変更が適用されたら、確認ページで [今すぐ再起動] を選択します。
コマンド ラインまたはレジストリ エディターを使用して SMB プロトコルを管理する
Windows 10 Fall Creators Update および Windows Server 2019 以降、SMBv1 は既定ではインストールされなくなりました。 詳細については、「SMBv1 は、Windows 10 バージョン 1709、Windows Server バージョン 1709、およびそれ以降のバージョンでは既定でインストールされていませんを参照してください。
Windows 8 または Windows Server 2012 で SMBv2 を有効または無効にすると、SMBv3 も有効または無効になります。 この動作は、これらのプロトコルが同じスタックを共有しているために発生します。
Set-SMBServerConfiguration コマンドレットを使用して、サーバー コンポーネントで SMBv1、SMBv2、および SMBv3 プロトコルを有効または無効にすることができます。 Get-SmbServerConfiguration コマンドレットを使用して、SMB サーバー構成を取得できます。
Set-SMBServerConfiguration コマンドレットを実行した後、コンピューターを再起動する必要はありません。
検出する:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
無効する:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
有効にする:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
詳細については、「SMB1の使用を停止する」を参照してください。
検出する:
Get-SmbServerConfiguration | Select EnableSMB2Protocol
無効する:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
有効にする:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Windows 7、Windows Server 2008 R2、Windows Vista、および Windows Server 2008 で SMB を有効または無効にする
Windows 7、Windows Server 2008 R2、Windows Vista、または Windows Server 2008 を実行する SMB サーバーで SMB プロトコルを有効または無効にするには、次のセクションで説明するように、Windows PowerShell またはレジストリ エディターを使用します。
Get-Item、Get-ItemProperty、および Set-ItemProperty コマンドレット を使用して、SMB プロトコルを検出、有効化、無効化できます。
注意
以降のセクションのコマンドには、PowerShell 2.0 以降が必要です。
検出する:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
既定の構成は Enabled
です。 その結果、レジストリの名前付き値は作成されないため、コマンドは 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
注意
これらの変更を行った後は、コンピューターを再起動する必要があります。
詳細については、「SMB1の使用を停止する」を参照してください。
検出する:
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 を有効または無効にするには、レジストリ エディターを開き、次のレジストリ キー パスに移動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
次のプロパティを持つエントリを構成します。
- 名前には、SMB1を使用します。
- 型には、REG_DWORDを使用します。
- データの場合は、無効 には 0 を使用し、有効には 1 を使用します。 既定値は 1または Enabledです。 この場合、レジストリ キーは作成されません。
SMB サーバーで SMBv2 を有効または無効にするには、レジストリ エディターを開き、次のレジストリ キー パスに移動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
次のプロパティを持つエントリを構成します。
- 名前には、SMB2を使用します。
- 型には、REG_DWORDを使用します。
- データの場合は、無効 には 0 を使用し、有効には 1 を使用します。 既定値は 1または Enabledです。 この場合、レジストリ キーは作成されません。
注意
これらの変更を行った後は、コンピューターを再起動する必要があります。
Windows クライアントと Windows Server を実行する SMB クライアントで SMB プロトコルの状態を検出、有効化、無効化する方法を次に示します。
検出する:
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
詳細については、「SMB1の使用を停止する」を参照してください。
SMB クライアント上の SMBv2 と SMBv3
検出する:
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 を無効にする
このセクションでは、グループ ポリシーを使用して SMBv1 を無効にする方法について説明します。 このメソッドは、さまざまなバージョンの Windows で使用できます。
SMB サーバーで SMBv1 を無効にするには、レジストリで次の新しい項目を構成します。
- キー パス: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- レジストリ エントリ: SMB1
- エントリの種類: REG_DWORD
- エントリ データ: 0、無効
グループ ポリシーを使用してこの項目を構成するには、次の手順を実行します。
グループ ポリシー管理コンソールを開きます。 グループ ポリシー オブジェクト (GPO) を右クリックし、新しい設定項目を含め、編集を選択します。
コンソール ツリーの [コンピューターの構成] で [基本設定] フォルダーを展開し、次に [Windows の設定] フォルダーを展開します。
[レジストリ] ノードを右クリックし、[新規] にカーソルを合わせて [レジストリ項目] を選択します。
[新しいレジストリプロパティ ダイアログで、次の値を選択または入力します。
- 操作: 作成
- ハイブ: HKEY_LOCAL_MACHINE
- キーのパス: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- 値の名前: SMB1
- 値の種類: REG_DWORD
- 値データ: 0
この手順では、SMBv1 サーバー コンポーネントを無効にします。 このポリシーは、ドメイン内のすべての必要なワークステーション、サーバー、およびドメイン コントローラーに適用する必要があります。
注意
Windows Management Instrumentation (WMI) フィルターを設定して、特定のオペレーティング システムを除外したり、クライアントまたはサーバーのオペレーティング システムを除外したりできます。 詳細については、「グループ ポリシーのフィルター処理 」および「GPO の WMI フィルターの作成」を参照してください。
重要
システムによっては、SYSVOL フォルダーまたは他のファイル共有へのアクセスが必要ですが、SMBv2 または SMBv3 はサポートされていません。 このようなシステムの例としては、従来の Windows システムや、古い Linux およびパートナー システムなどがあります。 これらのシステムのドメイン コントローラーで SMBv1 を無効にする場合は注意してください。
SMBv1 クライアントを無効にするには、MRxSMB10 ドライバーが起動しないようにサービス レジストリ キーを更新する必要があります。 その後、LanmanWorkstation のエントリから MRxSMB10 への依存関係を削除する必要があります。そうすることで、MRxSMB10 を最初に開始する必要なく正常に開始できるようになります。
このセクションでは、レジストリ内の次の 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が含まれています。これにより、依存関係として削除されます。
グループ ポリシーを使用してこれらのエントリを構成するには、次の手順を実行します。
グループ ポリシー管理コンソールを開きます。 新しい基本設定項目を含む GPO を右クリックし、[編集] を選択します。
コンソール ツリーの [コンピューターの構成] で [基本設定] フォルダーを展開し、次に [Windows の設定] フォルダーを展開します。
レジストリ ノードを右クリックし、「新規 」にカーソルを合わせ、「レジストリ項目 」を選択します。
[新しいレジストリプロパティ ダイアログで、次の値を選択または入力します。
- アクション: 更新
- ハイブ: HKEY_LOCAL_MACHINE
- キーのパス: SYSTEM\CurrentControlSet\services\mrxsmb10
- 値の名前: 開始
- 値の種類: REG_DWORD
- 値のデータ: 4
無効にされた MRxSMB10 ドライバーへの依存関係を削除するには、[ 新しいレジストリプロパティの] ダイアログボックスを開き、次の値を選択または入力します。
- アクション: 置換
- ハイブ: HKEY_LOCAL_MACHINE
- キーのパス: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
- 値の名前: DependOnService
- 値の種類: REG_MULTI_SZ
- 値データ:
注意
3 つの Value データ 文字列に箇条書きを含めないでください。 次のスクリーンショットに示すように、文字列のみを一覧表示します。
既定値には、多くのバージョンの Windows MRxSMB10 が含まれています。 既定値をこれら 3 つの文字列に置き換えることで、LanmanWorkstationの依存関係として MRxSMB10 を効果的に削除できます。 4 つの既定値の代わりに、これらの 3 つの値を使用します。
注意
グループ ポリシー管理コンソールを使用する場合、引用符やコンマを使用する必要はありません。 個々の行に各エントリを入力するだけです。
SMBv1 の無効化を完了するには、対象のシステムを再起動します。
SMBv1 を使用して SMB サーバーへの接続を試みるクライアントを特定するには、Windows Server および Windows クライアントで監査を有効にします。 監査を有効または無効にするには、Set-SmbServerConfiguration コマンドレットを使用します。 監査の状態を確認するには、Get-SmbServerConfiguration コマンドレット 使用します。
有効にする:
Set-SmbServerConfiguration -AuditSmb1Access $true
無効する:
Set-SmbServerConfiguration -AuditSmb1Access $false
検出する:
Get-SmbServerConfiguration | Select AuditSmb1Access
SMBv1 監査を有効にした後、Microsoft-Windows-SMBServer\Audit
イベント ログでアクセス イベントを確認できます。 クライアントが SMBv1 を使用してサーバーに接続しようとするたびに、イベント ID が 3000 のエントリがログに表示されます。
すべての設定が同じ GPO にある場合、グループ ポリシー管理には次の設定が表示されます。
グループ ポリシー管理コンソールの構成手順を完了したら、グループ ポリシーに設定に更新プログラムを適用する時間を与えます。 テストに必要な場合は、コマンド プロンプトで gpupdate /force
を実行し、ターゲット コンピューターを確認して、レジストリ設定が正しく適用されていることを確認します。 SMBv2 と SMBv3 が、環境内にある他のすべてのシステムで機能していることを確認してください。
注意
ポリシーをテストした後、ターゲット システムを再起動します。