Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Windows 10 / Windows Server 2016でSMBv1.0を有効化・無効化する方法【完全ガイド】

Windows Server 2016/2019 および Windows 10(ビルド1709以降)では、共有フォルダへのアクセスに使用されるネットワークプロトコル「Server Message Block 1.0(SMBv1)」がデフォルトで無効になっています。このプロトコルが必要になるのは、主にサポートが終了したWindows XPやWindows Server 2003などのレガシーOS上でホストされている共有フォルダへアクセスする場合です。本記事では、Windows 10およびWindows Server 2016/2019において、SMBv1のクライアント機能とサーバー機能を有効化または無効化する方法を詳しく解説します。

ネットワーク上にSMB 1.xクライアントが残っていないのであれば、すべてのWindowsデバイスでSMBv1を完全に無効化すべきです。SMB 1.0を無効にすることで、このレガシープロトコルに存在する多数の脆弱性(最も有名な公開エクスプロイトは「EternalBlue」)からWindowsコンピュータを保護できます。その結果、デバイスはネットワーク共有へのアクセス時に、より効率的で安全かつ高機能な新しいバージョンのSMBプロトコルを使用するようになります。

以前の記事では、クライアント側とサーバー側のSMBバージョン互換性の一覧表を紹介しました。この表によると、古いクライアント(XP、Server 2003、一部の*nixクライアント)は、SMB v1.0プロトコルでのみネットワーク共有フォルダにアクセスできます。ネットワーク内にこうしたクライアントが存在しない場合は、ファイルサーバー(ADドメインコントローラーを含む)とクライアントPCの両方でSMB 1.0を完全に無効化できます。

Windows 10およびWindows Server 2016では、SMBv1プロトコルはSMBクライアントSMBサーバーという2つの独立したコンポーネントに分かれており、それぞれ個別に有効化/無効化が可能です。

目次

  • SMB v1.0経由の共有フォルダアクセスの監査
  • Windows Server 2016/2019でSMB 1.0を有効化・無効化する方法
  • Windows 10でSMBv1を有効化・無効化する方法
  • グループポリシーによるSMBv1クライアントとサーバーの無効化

SMB v1.0経由の共有フォルダアクセスの監査

SMBファイルサーバー側でSMB 1.0ドライバーを無効化または完全に削除する前に、ネットワーク内にSMB 1.0を使用しているレガシークライアントが存在しないことを確認しておきましょう。そのためには、以下のPowerShellコマンドを使用して、SMB v1.0経由のファイルサーバーアクセスの監査を有効にします。

Set-SmbServerConfiguration –AuditSmb1Access $true

数日後にサーバーでイベントビューアーを開き、「アプリケーションとサービスログ → Microsoft → Windows → SMBServer → Audit」のログを確認して、SMB1経由でファイルサーバーにアクセスしたクライアントがないかチェックします。

ヒント: 以下のPowerShellコマンドで、このイベントログからイベント一覧を表示できます。
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit

この例では、SMBServerソースからのイベントID 3000 のイベントがログに記録されていました。このイベントは、クライアント192.168.1.10がSMB1プロトコルを使用してサーバーにアクセスしようとしていることを示しています。

SMB1 access
Client Address: 192.168.1.10
Guidance:
This event indicates that a client attempted to access the server using SMB1. To stop auditing SMB1 access, use the Windows PowerShell cmdlet Set-SmbServerConfiguration.

ネットワーク上でこのコンピュータまたはデバイスを特定し、より新しいSMBプロトコルバージョン(SMBv2またはSMBv3)をサポートするバージョンへOSやファームウェアを更新する必要があります。

この例ではこの情報を無視しますが、後述のとおり、このクライアントは今後このSMBサーバー上の共有フォルダにアクセスできなくなる点に注意してください。

Windows Server 2016/2019でSMB 1.0を有効化・無効化する方法

Windows Server 2016(ビルド1709以降)およびWindows Server 2019では、SMBv1はデフォルトで無効になっています。新しいバージョンのWindows ServerでSMBv1クライアントプロトコルのサポートを有効にするには、別途「SMB 1.0/CIFS ファイル共有のサポート」機能をインストールする必要があります。

SMBv1機能は、サーバーマネージャーまたはPowerShellからインストールできます。

SMBv1が有効になっているかどうかは、次のPowerShellコマンドで確認できます。

Get-WindowsFeature | Where-Object {$_.name -eq "FS-SMB1"} | ft Name,Installstate

FS-SMB1機能をインストールするには、以下を実行します。

Install-WindowsFeature FS-SMB1

SMBv1クライアント機能をアンインストールするには(再起動が必要)、以下のコマンドを実行します。

Uninstall-WindowsFeature –Name FS-SMB1 –Remove

SMB1Protocol機能を削除できるもうひとつのPowerShellコマンドも紹介します。

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Remove

サーバーでSMBv1.0クライアントからのアクセスを処理できるようにするには、FS-SMB1コンポーネントに加えて、SMBファイルサーバーレベルでもSMBv1サポートを有効にする必要があります。サーバー上のネットワーク共有に対してSMBv1アクセスが有効になっているかどうかを確認するには、以下を実行します。

Get-SmbServerConfiguration

EnableSMB1Protocol: True」という行が表示されれば、このサーバー上の共有フォルダへのSMBv1プロトコルによるアクセスが許可されていることを意味します。Windows ServerでSMBv1サーバーサポートを無効にするには、次のPowerShellコマンドを実行します。

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

その後、Get-SmbServerConfigurationコマンドレットを使用して、SMB1サーバーが無効になったことを確認しましょう。

サーバーでSMBv1サポートを有効にするには、以下のコマンドを実行します。

Set-SmbServerConfiguration -EnableSMB1Protocol $True -Force

なお、Windows 7/8およびWindows Server 2008 R2/2012でSMB 1.0クライアントを無効にする場合は、サービスとSMBv1アクセスドライバーを以下のコマンドで無効化します。

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Windows 10でSMBv1を有効化・無効化する方法

前述のとおり、Windows 10のすべての新規ビルド(1709以降)では、SMB1プロトコルのサポートが無効になっています(SMBv2プロトコル経由のゲストアクセスも無効化されています)。

Windows 10では、DISMコマンドを使用してSMBv1プロトコルコンポーネントの状態を確認できます。

Dism /online /Get-Features /format:table | find "SMB1Protocol"

この例では、すべてのSMBv1機能が無効になっていることがわかります。

SMB1Protocol                                | Disabled
SMB1Protocol-Client                        | Disabled
SMB1Protocol-Server                        | Disabled
SMB1Protocol-Deprecation                   | Disabled

Windows 10では、コントロールパネル(optionalfeatures.exe)からもSMB 1.0関連機能を管理できます。「SMB 1.0/CIFS ファイル共有のサポート」オプションを展開すると、3つのSMBv1コンポーネントが表示されます。

  • SMB 1.0/CIFS 自動削除
  • SMB 1.0/CIFS クライアント
  • SMB 1.0/CIFS サーバー

Windows 10でSMBv1クライアントとサーバーを有効にするには、機能管理ウィンドウから操作するか、以下のコマンドを使用します。

Dism /online /Enable-Feature /FeatureName:"SMB1Protocol"
Dism /online /Enable-Feature /FeatureName:"SMB1Protocol-Client"
Dism /online /Enable-Feature /FeatureName:"SMB1Protocol-Server"

PowerShellを使ってSMBv1サーバーとクライアントを有効化することも可能です。

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Server
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

注意点として、SMBv1クライアントを有効化した後、15日間以上使用されなかった場合、自動的に無効化されます。ただし、SMBv1クライアントの自動削除は一度だけ実行される操作です。管理者が手動で再度SMBv1を有効にした場合、自動的には無効化されません。

Windows 10でSMB1クライアントとサーバーのサポートを無効にするには、以下のDISMコマンドを実行します。

Dism /online /Disable-Feature /FeatureName:"SMB1Protocol"
Dism /online /Disable-Feature /FeatureName:"SMB1Protocol-Client"
Dism /online /Disable-Feature /FeatureName:"SMB1Protocol-Server"

Windows 10でSMBv1クライアントを無効にした場合、SMBv1のみをサポートするファイルサーバー上の共有フォルダ(SMBv2/v3プロトコルが無効または非対応)にアクセスすると、以下のようなエラーが表示されることがあります。

  • 0x80070035 ネットワークパスが見つかりません
  • セキュリティ保護されていないため、ファイル共有に接続できません。この共有では廃止されたSMB1プロトコルが必要です。これは安全ではなく、システムが攻撃にさらされる可能性があります
  • 安全でないため、ファイル共有に接続できません。この共有では廃止されたSMB1プロトコルが必要であり、システムが攻撃にさらされる恐れがあります。お使いのシステムにはSMB2以降が必要です

さらに、SMBv1クライアントを無効にすると、レガシーなNetBIOSプロトコルがネットワーク上のデバイス検出に使用しているComputer Browserサービスが動作しなくなります。Windows 10のネットワーク上で近隣のコンピュータを正しく表示するには、Function Discovery Provider Hostサービスを設定する必要があります。

グループポリシーによるSMBv1クライアントとサーバーの無効化

Active Directoryドメイン環境では、グループポリシー(GPO)を使用して、すべてのサーバーとコンピュータでSMBv1を無効化できます。標準のWindowsグループポリシーにはSMB専用の設定ポリシーが用意されていないため、レジストリポリシー経由で無効化する必要があります。

  1. グループポリシー管理コンソール(gpmc.msc)を開き、新しいGPO(disableSMBv1など)を作成し、SMB1を無効化したいコンピュータが含まれるOUにリンクします。
  2. ポリシー編集モードに切り替え、GPOの「コンピューターの構成」→「基本設定」→「Windowsの設定」→「レジストリ」を展開します。
  3. 以下の設定で新しいレジストリ項目を作成します。
    操作:更新
    ハイブ:HKEY_LOCAL_MACHINE
    キーのパス:SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
    値の名前:SMB1
    値の種類:REG_DWORD
    値のデータ:0
    このポリシーにより、すべてのコンピュータでレジストリ経由でSMBv1サーバーコンポーネントのサポートが無効になります。WMIフィルターを使用すれば、特定のWindowsバージョンをこのポリシーの対象から除外することも可能です。

GPO経由でドメインコンピュータのSMBクライアントも無効化したい場合は、追加で2つのレジストリパラメータを作成します。

  • レジストリキー HKLM\SYSTEM\CurrentControlSet\services\mrxsmb10 に、値4を持つStartパラメータ(REG_DWORD型)を追加
  • レジストリキー HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation に、値BowserMRxSmb20NSI(それぞれ改行区切り)を持つDependOnServiceパラメータ(REG_MULTI_SZ型)を追加

あとはクライアント側でグループポリシー設定を更新し(gpupdate /force)、再起動後にSMBv1コンポーネントが完全に無効化されていることを確認すれば完了です。

なお、Microsoft Security Compliance Toolkitが提供するSecurity Baseline GPOには、MS Security Guideという管理用テンプレート(SecGuide.admlおよびSecGuide.admxファイル)が含まれており、SMBサーバーとクライアントを個別に無効化するためのオプションが用意されています。

  • SMB v1 サーバーを構成する
  • SMB v1 クライアントドライバーを構成する
  1. Windows Server 2016でWindows Defenderを無効化・アンインストールする方法【完全ガイド】

    本記事では、Windows Server 2016に搭載されているWindows Defenderウイルス対策を無効化またはアンインストールする手順を詳しく解説します。 ご存知のとおり、Windows Server 2016にはWindows Defenderアプリケーションによるウイルスおよびマルウェア対策機能が標準で組み込まれています。しかし、サードパーティ製のウイルス対策ソフトを導入したい場合、Windows 10とは異なり、Server 2016ではWindows Defenderが自動的に無効化されません。これはサーバー環境での保護を最大化するための仕様です。 そのため、Server

  2. 【Windows 10/8/7・Server 2016/2012対応】自動再生(AutoPlay)を無効にする3つの方法

    USBメモリやDVDなどをPCに接続したとき、中身を自動的に表示したり、ソフトのインストールを開始したりする「自動再生(AutoPlay)」機能。便利な反面、マルウェア感染のリスクを高めることもあります。本記事では、Windows 10/8/7 および Windows Server 2016/2012 で自動再生を無効にする3つの方法を、画像付きの手順でわかりやすく解説します。 自動再生(AutoPlay)とは? 自動再生は、Windows 98で初めて導入された機能です。CD/DVDやUSBメモリなどの記憶装置が接続されると、その内容(音楽・動画・ソフトウェアなど)を判別し、コンテンツの種類