Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、および無効化する方法
この記事では、SMB クライアント コンポーネントとサーバー コンポーネントでサーバー メッセージ ブロック (SMB) バージョン 1 (SMBv1)、SMB バージョン 2 (SMBv2)、SMB バージョン 3 (SMBv3) を有効または無効にする方法について説明します。
SMBv1 を無効化または削除すると、古いコンピューターやソフトウェアとの互換性の問題が発生する可能性があり、SMBv1 には重大なセキュリティの脆弱性がありますので、使用しないことを強くお勧めします。 Windows 11 または Windows Server 2019 以降のどのエディションにも、SMB 1.0 は既定ではインストールされていません。 SMB 1.0 は、Home エディションと Pro エディションを除き、Windows 10 でも既定ではインストールされていません。 SMB 1.0 を再インストールする代わりに、引き続き必要な SMB サーバーを更新することをお勧めします。 SMB 1.0 を必要とするサード パーティとその要件を削除する更新プログラムの一覧については、SMB1 製品クリアリングハウスを確認してください。
トラブルシューティングのために 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 の機能の詳細については、次の記事を参照してください。
PowerShell を使用して SMBv1 を削除する方法
管理者特権で PowerShell コマンドを使用して、SMBv1 クライアントとサーバーを検出、無効化、有効化する手順を以下に示します。
Note
PowerShell コマンドを実行して SMBv1 を無効または有効にした後、コンピューターが再起動します。
検出する:
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
無効する:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
有効にする:
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
ヒント
Get-SmbServerConfiguration | Format-List EnableSMB1Protocol
を実行すると、管理者特権なしで SMBv1 の状態を検出できます。
Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019: サーバー マネージャー方式
Windows サーバーから SMBv1 を削除するには:
- SMBv1 を削除するサーバーのサーバー マネージャー ダッシュボードの [このローカルサーバーを構成する] で、[ロールと機能の追加] を選択します。
- [始める前に] ページで、[役割および機能の削除ウィザード] を選択し、次のページで [次へ] を選択します。
- [サーバー プール] の下の[宛先サーバーの選択] ページで、機能を削除するサーバーが選択されていることを確認してから、[次へ] を選択します。
- [サーバー ロールの選択] ページで、[次へ] を選択します。
- [機能の削除] ページ で、 [SMB 1.0/CIFS ファイル共有サポート] のチェック ボックスをオフにし、[次へ] を選択します。
- [削除の選択を確認する] ページで、機能が一覧表示されていることを確認してから、[削除] を選択 します。
Windows 8.1、Windows 10、および Windows 11: プログラムの追加または削除方法
前述のオペレーティング システムに対して SMBv1 を無効にするには:
- コントロール パネルで、 [プログラムと機能] を選択します。
- [コントロール パネル ホーム] の下にある [Windows 機能のオンまたはオフ] を選択して、[Windows 機能] ボックスを開きます。
- [Windows 機能] ボックスでリストを下にスクロールし、 [SMB 1.0/CIFS ファイル共有サポート] のチェック ボックスをオフにして [OK] を選択します。
- Windows で変更が適用されたら、確認ページで [今すぐ再起動] を選択します。
状態を検出し、SMB プロトコルを有効または無効にする方法
Note
Windows 8 または Windows Server 2012 で SMBv2 を有効または無効にすると、SMBv3 も有効または無効になります。 この動作は、これらのプロトコルが同じスタックを共有しているために発生します。
Windows8 および WindowsServer 2012 では、新しい Set-SMBServerConfiguration Windows PowerShell コマンドレットが導入されました。 このコマンドレットを使用すると、サーバー コンポーネントで SMBv1、SMBv2、および SMBv3 プロトコルを有効または無効にできます。
Set-SMBServerConfiguration コマンドレットを実行した後、コンピューターを再起動する必要はありません。
SMBv1
検出する:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
無効する:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
有効にする:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
詳細については、「Microsoft のサーバー ストレージ」を参照してください。
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 の方法
注意
この方法では、PowerShell 2.0 以降が必要です。
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
これらの変更を行った後は、コンピューターを再起動する必要があります。
グループ ポリシーを使用して SMBv1 を無効にする
このセクションでは、グループ ポリシーを使用して SMBv1 を無効にする方法を紹介します。 このメソッドは、さまざまなバージョンの Windows で使用できます。
SMBv1
この手順では、レジストリで次の新しい項目を構成します。
2. レジストリ サブキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters を探し、クリックして選択します。
- レジストリ エントリ: SMB1
- REG_DWORD: 0 = 無効
グループ ポリシーを使用してこれを構成するには、次の手順に従います。
[グループ ポリシー管理コンソール] を開きます。 新しい基本設定項目を含むグループ ポリシー オブジェクト (GPO) を右クリックして、[編集] をクリックします。
コンソール ツリーの [コンピューターの構成] で [基本設定] フォルダーを展開し、次に [Windows の設定] フォルダーを展開します。
[レジストリ] ノードを右クリックし、[新規] をポイントして、[レジストリ項目] をクリックします。
[新しいレジストリのプロパティ] ダイアログ ボックスで、次の操作を行います。
- 操作: 作成
- Hive: HKEY_LOCAL_MACHINE
- キー パス: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- 値の名前: SMB1
- 値の型: REG_DWORD
- 値のデータ: 0
この手順では、SMBv1 サーバー コンポーネントを無効にします。 このグループ ポリシーは、ドメイン内の必要なすべてのワークステーション、サーバー、およびドメイン コントローラーに適用する必要があります。
Note
WMI フィルターは、サポートされていないオペレーティングシステムや、選択された除外 (Windows XP など) を除外するように設定することもできます。
重要
従来の Windows XP または古い Linux およびサードパーティ システム (SMBv2 または SMBv3 をサポートしない) が SMBv1 が無効になっている SYSVOL またはその他のファイル共有へのアクセスを必要とするドメイン コントローラーでこれらの変更を行う場合は注意してください。
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 内にある場合は、グループ ポリシー管理が次の設定に表示されます。
テストおよび検証
この記事の構成手順を完了した後、ポリシーのレプリケートと更新を許可します。 テストに必要な場合は、コマンド プロンプトで gpupdate /force を実行し、ターゲット システムを確認して、レジストリ設定が正しく適用されていることを確認します。 SMBv2 と SMBv3 が、環境内にある他のすべてのシステムで機能していることを確認してください。
Note
ターゲット システムを再起動することを忘れないでください。