エクスプローラーで \\fs01\営業資料 のような共有フォルダを開くとき、PCとファイルサーバの間では「SMB」というプロトコルでやり取りしています。ファイル共有のほかにも、グループポリシーの配布やリモート管理など、Windowsのネットワークの多くの場面でSMBが使われています。この記事では、SMBが何をするプロトコルなのか、どのポートを使うのか、バージョンごとに何が違うのかを見ていきます。
- SMBが何をするプロトコルで、どこで使われているのか
- SMBが使うポートと、SMB1・SMB2・SMB3のバージョンの違い
- SMB1を使ってはいけない理由と、最近のWindowsで変わったこと
SMBとは:ネットワーク越しにファイルを扱うためのプロトコル
SMB(Server Message Block)は、ネットワークの向こうにあるファイルやプリンターを、手元にあるかのように使うためのプロトコルです。PCは「このファイルを開きたい」「この部分を読みたい」「ここに書き込みたい」といった要求をSMBでサーバに送り、サーバはその結果を返します。
図書館にたとえると、SMBはカウンターでのやり取りの決まりです。利用者(PC)が「この本のこのページを見せてください」と頼むと、司書(サーバ)が棚から出してくれます。本そのものは図書館にあり、利用者は決まった手順で頼むだけです。
Windowsでは、PC側の処理をWorkstationサービス(LanmanWorkstation)、サーバ側の処理をServerサービス(LanmanServer)が受け持っています。接続先は \\サーバ名\共有名 の形(UNCパス)で指定します。
SMBが使われている場面
SMBは、ふだん「ファイル共有」と意識している場面以外でも使われています。
| 場面 | SMBの使われ方 |
|---|---|
| 共有フォルダ | 部署のファイルサーバ、ホームフォルダ、ドライブの割り当て(ネットワークドライブ) |
| プリンターの共有 | プリントサーバに置いた共有プリンターへの印刷 |
| グループポリシーとログオンスクリプト | PCはDCの SYSVOL と NETLOGON という共有から、グループポリシーやスクリプトを読み込む |
| 管理共有 | C$ や ADMIN$ など、管理者だけが使える隠し共有。リモートでのファイル配布や管理に使う |
| リモート管理(名前付きパイプ) | IPC$ を通して、リモートのコンピュータの管理機能(RPC)を呼び出す |
| サーバのデータ置き場 | Hyper-Vの仮想マシンやSQL Serverのデータベースファイルを、SMBのファイル共有に置く |
| Windows以外 | NAS、LinuxのSamba、Azure Filesなども、SMBでファイル共有を提供している |
このため、SMBが止まるとファイル共有だけでなく、グループポリシーが適用されない、リモート管理ができないといった影響も出ます。
SMBが使うポート
今のSMBは、ふつうTCPの445番ポートを使います。ほかにも、インターネット越しに使うための通り道や、サーバ同士の高速な通信のための通り道があります。どこで使うものかを、社内とインターネットに分けて見てみます。
| 通り道 | 使う場面 |
|---|---|
| TCP 445 | 社内のファイル共有など、ほとんどの場面 |
| UDP 443(QUIC) | SMB over QUIC。TLS 1.3で暗号化したトンネルの中でSMBを使う。インターネット越しにVPNなしでファイルサーバを使いたいときの方法で、サーバ側はWindows Server 2025(すべてのエディション)とWindows Server 2022 Datacenter: Azure Edition、クライアントはWindows 11で使える |
| RDMA(SMB Direct) | サーバ同士をつなぐ社内(データセンター)の高速なネットワーク向け。Hyper-Vの仮想マシンの置き場や、Storage Spaces Directなどで使う。RDMAに対応したネットワークアダプターが必要で、方式によって通り道が違う(iWARPはTCP 5445、RoCE v2はUDP 4791、InfiniBandはイーサネットとは別の専用ネットワーク)。最初の接続はTCP 445で始まり、SMBマルチチャネルがRDMAに対応していると判断すると、RDMAの経路を追加してそちらに切り替える |
| TCP 139(NetBIOS)、UDP 137・138 | 昔のSMB1の時代のしくみ。今は不要で、Windows Server 2025では共有を作ったときに自動で開くファイアウォールの規則にも含まれなくなった |
SMBは社内ネットワークで使う前提のプロトコルです。TCP 445をインターネットに公開すると、総当たりの攻撃や脆弱性を狙った攻撃の入口になります。インターネット越しにファイルサーバを使いたいときは、VPNを使うか、SMB over QUIC(UDP 443)を使います。SMB over QUICを使う場合も、TCP 445は外から開けないようにします。
SMBのバージョン
SMBには、大きく分けてSMB1と、SMB2の系統(2.x、3.x)があります。SMB2は2007年ごろに登場し、SMB1を置き換えました。3.xはSMB2の延長で、同じしくみに機能を足していったものです。
| バージョン | Windows | おもに加わったこと |
|---|---|---|
| SMB1 | Windows NT の時代から | 古い版。CIFSとも呼ばれた。非推奨で、今のWindowsには既定で入っていない |
| 2.0.2 | Windows Vista、Windows Server 2008 | SMB1を作り直し、やり取りの回数を減らした |
| 2.1 | Windows 7、Windows Server 2008 R2 | キャッシュのしくみ(リース)や、一度に送れるデータの拡大 |
| 3.0 | Windows 8、Windows Server 2012 | 暗号化、複数の経路を同時に使うマルチチャネル、障害時の透過的な切り替え、SMB Direct |
| 3.0.2 | Windows 8.1、Windows Server 2012 R2 | 性能や可用性の細かな改良 |
| 3.1.1 | Windows 10 バージョン1607、Windows Server 2016 以降 | 接続を始めるときのやり取りの改ざん検知(事前認証の完全性)、暗号化方式の選択。のちのWindowsで圧縮やSMB over QUICなども追加 |
Windows 10 とWindows 11、Windows Server 2016以降はどれも3.1.1を使います。ただし、同じ3.1.1でも、新しいWindowsほど使える機能が増えています(たとえばAES-256の暗号化はWindows Server 2022とWindows 11から)。
バージョンはどう決まるのか
SMBで使うバージョンは、接続のいちばん最初の「Negotiate」というやり取りで決まります。PCが使えるバージョンの一覧を送り、サーバがその中から、両方が使えるいちばん新しいものを選びます。
古いNASのようにSMB2までしか使えない相手とは、自動的にSMB2で話します。そのため、ふだん利用者がバージョンを意識することはありません。Windows 11 バージョン24H2とWindows Server 2025では、使ってよいバージョンの下限と上限を管理者が決めることもできます(たとえば3.1.1だけにする)。
SMB1を使ってはいけない理由
SMB1は、30年以上前に作られたプロトコルです。暗号化がなく、接続を始めるときのやり取りを改ざんから守るしくみもありません。Microsoftは2014年にSMB1を非推奨にしました。
2017年には、SMB1の脆弱性(MS17-010)を悪用したランサムウェア「WannaCry」が世界中で被害を出しました。こうした経緯もあり、Windows 10 バージョン1709とWindows Server バージョン1709以降、SMB1は既定でインストールされなくなっています。Windows 11とWindows Server 2019以降は、新規インストールではSMB1のクライアントもサーバも入っていません。
| 起きること | 理由と対処 |
|---|---|
| 古いNASや複合機につながらない | SMB1にしか対応していない機器で、「SMB1 プロトコルが必要」といった内容のエラーになる。機器のファームウェアを更新してSMB2以降を使えるようにするか、機器を入れ替える |
| 「ネットワーク」に一覧が出ない | エクスプローラーの「ネットワーク」にコンピュータの一覧を出す昔のしくみ(Computer Browserサービス)がSMB1に依存しているため。サーバ名を直接指定して接続する |
SMB1を入れ直せば古い機器とつながりますが、そのPCが攻撃を受けやすくなります。入れ直すのは、どうしても機器を替えられない場合の一時的な手段に限るべきです。
最近のWindowsで変わったこと
SMBは、Windowsのバージョンが上がるたびに守りが強化されています。古いNASなどとつながらなくなる原因になりやすいので、変化を知っておくと切り分けに役立ちます。
| 変更 | 対象 | 内容 |
|---|---|---|
| SMB1を既定でインストールしない | Windows 10 バージョン1709、Windows Server 2019 以降 | 前の節のとおり |
| ゲストアクセスの無効化 | Windows 10 Enterprise・Education(1709以降)、Windows Server 2019 以降、Windows 11 Pro(24H2) | パスワードなしで入れる「ゲスト」での接続を、SMB2・SMB3のクライアントが既定で拒否する |
| SMB署名を既定で必須に | Windows 11 バージョン24H2、Windows Server 2025 | 以前はDCの SYSVOL・NETLOGON だけだった署名の必須を、すべての接続に広げた |
| NTLMの遮断(設定で有効化) | Windows 11 バージョン24H2、Windows Server 2025 | SMBのクライアントが、外へのNTLM認証を使わないように設定できる |
| 認証の失敗回数の制限 | Windows 11 バージョン24H2、Windows Server 2025 | NTLMなどの認証に失敗するたびに待ち時間を入れ、総当たりの攻撃を遅らせる |
確認に使うコマンド
PC(PowerShell):今つながっているSMBの接続と、使っているバージョン(Dialect)を表示する
Get-SmbConnection
PC(PowerShell):ファイルサーバのTCP 445に届くかを確かめる
Test-NetConnection -ComputerName fs01.corp.example.com -Port 445
PC(コマンドプロンプト):共有フォルダをドライブに割り当てる
net use Z: \\fs01.corp.example.com\営業資料
ファイルサーバ(PowerShell・管理者):このサーバの共有の一覧を表示する
Get-SmbShare
ファイルサーバ(PowerShell・管理者):このサーバにつながっている利用者の一覧を表示する
Get-SmbSession
ファイルサーバ(PowerShell・管理者):SMB1とSMB2のサーバ機能が有効かを表示する
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol
PC(PowerShell・管理者):SMB1の機能がインストールされているかを確かめる
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
EnableSMB2Protocol はSMB2とSMB3の両方を表します。2.xと3.xは同じしくみなので、SMB2を無効にするとSMB3も使えなくなります。
まとめ
| 項目 | ポイント |
|---|---|
| SMBとは | ネットワーク越しにファイルやプリンターを使うためのプロトコル |
| 使われる場面 | 共有フォルダのほか、グループポリシー(SYSVOL)、管理共有、リモート管理など |
| ポート | ふつうはTCP 445。インターネットに開けない。インターネット越しにはSMB over QUIC(UDP 443) |
| バージョン | SMB1と、SMB2の系統(2.0.2〜3.1.1)。今のWindowsは3.1.1 |
| バージョンの決まり方 | 最初のNegotiateで、両方が使えるいちばん新しいものを選ぶ |
| SMB1 | 非推奨で、既定では入っていない。古い機器は更新や入れ替えで対応する |
共有フォルダにつながらないときは、「445番に届くか」「どのバージョンで話そうとしているか」「ゲストや署名など、最近の守りに引っかかっていないか」を順に確かめると、原因を絞り込みやすくなります。
- What is SMB File Sharing for Windows and Windows Server?(Microsoft Learn)
- SMB features in Windows and Windows Server(Microsoft Learn)
- [MS-SMB2] 1.3 Overview(Microsoft Learn)
- SMBv1 not installed by default in Windows Server and Windows(Microsoft Learn)
- Detect, enable, and disable SMBv1, SMBv2, and SMBv3 in Windows(Microsoft Learn)
- Microsoft Security Bulletin MS17-010(Microsoft Learn)
- SMB over QUIC(Microsoft Learn)
- SMB Direct(Microsoft Learn)
- Storage Replica FAQ(iWARPのTCP 5445)(Microsoft Learn)
- IANA Service Name and Transport Protocol Port Number Registry(RoCE v2のUDP 4791など)
- SMB security hardening(Microsoft Learn)
- Manage SMB dialects in Windows(Microsoft Learn)
- What’s new in Windows Server 2025(Microsoft Learn)
コメント