Windows 10およびWindows Server 2016以降、レガシーなSMB(SMB v1やSMB v2)の扱いについて、既定の動作に幾つか重要な変更が行われています。Windows 10やWindows Server 2016以降への移行時、または機能更新プログラムによる新バージョンへのアップグレードのタイミングで、以前のWindowsネットワークになかった挙動に遭遇した場合は、変更点を確認してみてください。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Windowsネットワークにおける標準のファイル共有プロトコルは「Server Message Block(SMB)」です。パフォーマンス改善やセキュリティ強化のために、「Windows Vista」以降「Windows 10」まで、SMBの新しいバージョンが次々に登場しました(表1)。
SMB | Windows |
---|---|
SMB 1.0/CIFS | Windows XP(EoS)およびWindows Server 2003 R2(EoS)以前 |
SMB 2.0 | Windows Vista(EoS)、Windows Server 2008(EoS) |
SMB 2.1 | Windows 7(EoS)、Windows Server 2008 R2(EoS) |
SMB 3.0 | Windows 8(EoS)、Windows Server 2012 |
SMB 3.0.2 | Windows 8.1、Windows Server 2012 R2 |
SMB 3.1.1 | Windows 10、Windows Server 2016以降 |
表1 SMBのバージョンとWindowsの対応 |
Windows 10は最新のSMB 3.1.1をサポートしていますが、以前のSMBも全てサポートしており、SMB共有への接続に対して下位互換性を提供しています。SMBサーバとSMBクライアント間は、SMBバージョンをネゴシエートし、両者がサポートする最も上位のSMBバージョンを選択して通信します。
Windows 10のSMB 3.1.1、「Windows 8」で登場したSMB 3.0、「Windows 8.1」のSMB 3.02を全て含めて、「SMBバージョン3(SMB v3)」と呼ぶこともあります。表1に示したように、現在サポートされているWindowsは全てSMB v3をサポートしています。プロトコルの仕様的には、SMB 2.0以降、SMB v3までを含めて「SMB2(MS-SMB2)」と呼ぶこともあり、レガシーなSMB 1.0/CIFS(SMB v1)の「SMB(MS-SMB)」と区別されます。
サポートが終了(End of Support、EoS)したWindowsを継続して利用している(非推奨)、あるいは「拡張セキュリティ更新プログラム(Extended Security Update、ESU)」を利用して「Windows 7」や「Windows Server 2008/2008 R2」を延命している場合でない限り、SMB 2.1以前のバージョンを実行するWindowsデバイスはもう存在しないはずです。SMB v3に対応していないネットワークデバイス(FAXコピー複合機など)や、Mac、Linuxの古いバージョンが存在する場合は、SMB 2.1以前が使用されているかもしれません。
しかしながら、MicrosoftはSMB 2.1以前のレガシーなSMBについて、Windows 10やWindows Serverの新しいバージョンでは既定の動作に幾つか重要な変更が行われています。それが影響して、Windows 10の機能更新プログラムによるバージョンアップや、クライアントPCやサーバのリプレースを機に、それまで問題のなかったSMBの通信にトラブルが発生する可能性があります。
以下のMicrosoftの公式ドキュメントで説明されているように、現在サポートされているWindows 10のバージョン、「半期チャネル(SAC)」のWindows Server、「Windows Server 2019」は、新規インストールではSMB 1.0/CIFSのサーバおよびクライアント機能は既定でインストールされなくなりました。
SMB 1.0/CIFSのサーバ/クライアント機能が有効になっているWindows 10を、機能更新プログラムなどでインプレースアップグレードした場合、HomeおよびProエディションはSMB 1.0/CIFSのサーバ/クライアント機能は残りますが、このプロトコルが15日間使用されなかった場合には自動で削除されます。それ以外のエディション(Enterpriseなど)は、自動で削除されることはありません。
SMB 1.0/CIFSのサーバ/クライアント機能が削除された場合は、SMB 1.0/CIFSに依存する「Computer Browser」サービスはアンインストールされます。そのため、レガシーなNBT(NetBIOS over TCP/IP)によるWindowsネットワークのブラウジングは機能しなくなります。
この仕様はWindows 10 バージョン1709から始まっており、Windows 10のバージョンやエディションによって挙動が異なります。詳しくは、Microsoftの公式ドキュメントで説明されています。機械翻訳の日本語が分かりにくい場合は、オリジナルの英語ドキュメントを参照することをお勧めします。
SMB 1.0/CIFSのサーバ/クライアント機能の15日後の自動削除は、1回のみです。Windows 10の場合、コントロールパネルの「Windowsの機能の有効化または無効化」でSMB 1.0/CIFSのサーバ/クライアント機能を個別に有効化でき、その後は削除されません(次の機能更新プログラムで再び自動削除される可能性はあります)。
「SMB 1.0/CIFS自動削除」機能はWindows 10 バージョン1809から追加され、Enterpriseなど自動削除が行われないエディションに対して、管理者が自動削除機能を有効化するために利用できます(画面1)。
Windows Serverは自動削除の対象外ですが、Windows Server 2019(デスクトップエクスペリエンス)は「サーバーマネージャー」の「役割と機能の追加(または削除)ウィザード」やPowerShellコマンドレット(Enable/Disable-WindowsOptionalFeature)を使用して、SMB 1.0/CIFSのサーバ/クライアント機能を個別に有効化/無効化できます(画面2)。
いずれの場合も、SMB 1.0/CIFSはセキュリティ上の問題があるため、可能な限り“有効化しない”ことを推奨します。
Windows 10 Enterprise/Educationエディションのバージョン1709以降と、「Windows Server, version 1709(SAC)」以降、Windows Server 2019は、SMB2(MS-SMB2のこと、SMB v2とSMB v3の両方を含む)による共有リソースへの匿名(非認証)アクセスが既定で無効化されました。これらのOSには、以下のレジストリ値が既定で構成されており、「安全でないゲストログオン(Insecure Guest Logon)」が無効化されています。
「安全でないゲストログオン」の無効化により、パスワードなしのゲスト(Guest)アカウントによる共有リソースへのアクセスと、無効な資格情報が提供された際のゲストアカウントへの自動フォールバックが許可されなくなります。この既定の挙動の変更は、SMB2(SMB v2およびSMBv3)を使用した接続に適用されます。SMB 1.0/CIFSを使用した場合の挙動に変更はありません(引き続きゲストアクセスとゲストフォールバックを使用します)。
Windows 10 Home/Proエディションには、バージョン1709以降であっても、このレジストリ値は存在せず、従来と同じ挙動、つまりゲストアクセスとゲストフォールバックが使用されます(画面3)。
この仕様変更は、以下のMicrosoftの公式ドキュメントで説明されています。SMB 2.0やSMB 2.1に適用されるように読めるかもしれませんが、プロトコル仕様としてのSMB2(MS-SMB2)を対象としたものであり、SMB v3を含むことに留意してください。
また、Windows Server 2016にも適用されるように読めますが、正しくは「Windows Server, version 1709」以降です。Windows Server 2016にはレジストリ値「AllowInsecureGuestAuth」は既定で構成されていないため、従来の挙動のままです。
なお、この仕様変更によってアクセスが拒否された場合は、SMBクライアント側のイベントログ「Microsoft-Windows-SmbClient/Security」に「安全でないゲストログオンを拒否しました」のエラーが記録されます(画面4)。
SMB共有へのゲストアクセスは、企業環境では一般的ではありません。最近のバージョンのWindows Serverでは、匿名アクセスが可能な共有を作成することは簡単ではありません。ゲストアカウントの有効化(既定は無効)やセキュリティポリシーの調整など、追加の手順が必要です。影響があるとすれば、NAS(ネットワーク接続型ストレージ)、特に古いNASでは匿名アクセスが使用される場合があります。
この仕様変更の影響を受けて接続不能になるような場合は、「ローカルグループポリシーエディター」(Gpedit.msc)または「グループポリシー」で、「コンピューターの構成\管理用テンプレート\ネットワーク\Lanman ワークステーション」にある「安全でないゲストログオンを有効にする」を「有効」に設定することで、以前の動作(HomeやProエディションと同じ動作)に戻すことができます。あるいは、上記レジストリ値を削除するか、値のデータを「1」に設定することで、従来の挙動に戻すこともできます。
セキュリティ強化のためには、バージョンやエディション、既定の設定に関係なく、Windows 10およびWindows Server 2016以降では「安全でないゲストアクセス」を無効化することが推奨されます。
SMB v3は「SMB暗号化」「SMBマルチチャンネル」「SMBスケールアウト」「SMBダイレクト」、SMBのためのPowerShellコマンドレットなど、セキュリティやパフォーマンス、可用性、管理性に関して、SMB 2.1以前よりも大幅に強化されています。一口にSMB v3といっても、より新しいバージョンでは機能強化や改善が行われています。
特に、Windows 10以降のSMB 3.1.1では、Windows 10のバージョンアップの際、SMBのバージョンはそのままで新機能が追加されることもあります。Windows 10 バージョン1809およびWindows Server 2019までにSMB v3に行われた新機能の追加や更新については、Microsoftの公式ドキュメントで説明されています。
上記の公式ドキュメントにはまだ反映されていませんが、2020年3月に「SMB圧縮(SMB Compression)」と呼ばれる機能がSMB 3.1.1に追加されることがアナウンスされています。
SMB圧縮は、ファイル転送時にデータを圧縮することで、大きなサイズのファイルの転送を高速化するものです。これまでは使用する方法が提供されていませんでした。
SMB圧縮はWindows 10 バージョン1903でSMB 3.1.1に追加されたようです(2020年3月、SMB圧縮機能に「ADV200005」の脆弱《ぜいじゃく》性があることが公表されましたが、その後修正されました)。
しかし、Windows 10 バージョン1909までは使用する方法が提供されていませんでした。Windows 10 バージョン2004およびWindows Server, version 2004からは、「XCOPY」と「ROBOCOPY」コマンドにSMB圧縮のための「/COMPRESS」オプションが追加され、利用可能になっています(画面5)。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2020-2021)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.