SMBとは?ファイル共有プロトコルについて分かりやすく解説
SMBは、ネットワーク上のサーバーなどに保存されているファイルを、別のコンピュータから参照したり、利用することを可能にするネットワークプロトコルで、会社外から社内ネットワークにアクセスする際など多くの組織やネットワークに不可欠な存在です。この記事では、このSMBがどのような仕組みで、どんな種類があるのか、そしてSMBの安全性について詳しく解説します。
目次
目次
SMBとは?
SMBとは「Server Message Block」の略称で、ユーザーがパソコンやネットワーク上にあるファイル、ディレクトリー、シリアルポート、および他のリソースを別のコンピュータで閲覧・共有する際に必要なクライアント/サーバー間通信プロトコルです。SMBプロトコル(SMB Protocol)とも呼ばれており、認証済みプロセス間通信 (IPC) メカニズムも提供しています。
SMBプロトコルは、主にWindowsシステムのネットワーク上のノード間でファイルへのアクセスやシリアルポートを共有し、さまざまな通信を行うために主に使用される標準規格です。現在は、Windowsをはじめ、MacやLinuxでも使用可能です。
たとえば、各企業の自社サーバー内にあるファイルや情報を各スタッフのデバイスから閲覧したり、変更や保存したりする役割を担っているほか、プリンターに接続する際などにも利用されています。また、スマホで撮影した写真や動画をオンライン上のサーバーに保存し、SMBプロトコルを通して接続することでファイル共有が可能になり、同じネットワークにあるWindowsのパソコンやタブレットから見ることができるようになります。
SMBプロトコルの仕組み
SMBプロトコルはインターネットと同じ通信技術を使用しているので物理的な離れた場所からでもデータやファイル共有が可能です。SMBはユーザーがソフトウェアアプリとやりとりするアプリケーション層で動作しますが、TCPやUDPのようなトランスポート層など、より低いネットワークレベルを使用してデータ転送します。また、その際にデータ転送時の欠落を防ぐなど信頼性の高い通信を実現するためのプロトコルであるTCP/IP上で動作しているため、大容量のデータ転送も可能です。
SMBの仕組みは以下の通りです。
- まず、クライアント(ユーザーのパソコン、スマホ、プリンターなど)がサーバーにSMBリクエストを送信し、接続を開始します。
- サーバーはこのリクエストを受信し、SMBレスポンスをクライアントに送り返します。
- この応答を受信すると、通信チャネルが確立されます。
- その後、ユーザーが使用しているデバイスはサーバーとやりとりして、共有リソースへのアクセスを要求したり、特定のアクションを実行することができるようになります。
SMBが実際に機能している具体的な例としてはオフィスのプリンターがあります。仮にプリンターはオフィスの管理者のコンピュータに接続されていて文書を印刷したい場合は、クライアントであるユーザーのコンピュータがサーバーであるオフィスの管理者のコンピュータに印刷するための要求を送信し、SMBプロトコルを使用して印刷し、その後サーバーからクライアントに印刷済みやインク切れなどのリクエストの進行状況が返信されます。
そして、SMBプロトコルはセキュリティ対策の一環として、「SMB認証」と呼ばれる通信内容の暗号化機能や認証機能を搭載しています。 これによって通信内容が外部から傍受される心配がなくなり、正規のユーザーのみがネットワークリソースにアクセス可能になります。
SMBは、パソコンのコントロールパネルの「プログラムと機能」から設定を有効もしくは無効に切り替え可能です。
SMBはどのポートを使うのか?
SMBは、オープンポートと呼ばれる積極的に接続やトラフィックを受け入れるポートを使用して、ネットワーク通信を促進します。SMBが使用する2つの主要なポートは139と445ですが、詳細は以下で説明します。
139番ポート
SMBプロトコルが登場した当初は、主に小規模なLAN環境においてNetBIOSネットワークアーキテクチャを使って動作しており、ポート139を使用することでネットワーク上の異なるデバイス間の通信を実現していました。
445番ポート
Windows 2000の登場によって、MicrosoftはSMBをTCPの上で動作するように変更し、ポート445という専用のIPポートを使用するようになりました。セキュリティ面では盗聴やその他の攻撃を受けやすいといった難点を抱えていたポート139に対し、このポート445はSMBパケットの暗号化とデジタル署名を兼ね備えていることから安全性がより向上しました。
その他のポート
SMB以外では、NBNSを使用する際にNetBIOS名からIPアドレスへの変換を行なう137番ポート、NBDSを使用する際にNetBIOS機器間のデータ転送を行なう138番ポート、NetBIOSでNBNSのクエリ送信用のUDP/137番ポート、NBNSからの応答受信用のUDP/137番ポートがあります。
上記の139と445の違いは、SMB1プロトコルの139番ポートはプレーンテキストでの非暗号化通信に対して、445番ポートは初期接続時からSSL/TLSによる暗号化通信が行われている点です。安全性と最新のSMBバージョンとの互換性が高く、ファイアウォールにも優しい観点から139番ポートよりも445番ポートが好まれます。
SMBのバージョン
SMBの誕生以来、多くのSMBのバージョンが利用可能になり、パフォーマンス上の問題やセキュリティ上のリスクに対処するため、独自の改善やアップデートが行われてきました。こちらでは、SMBの各バージョンについて紹介します。
- SMB1:最初のSMB1.0は、1984年にIBMがDOS(ディスクオペレーティングシステム)環境でのファイル共有のためのPCネットワークプログラムの一部として導入したのが始まりです。SMB1.0は、簡素化されたネットワークファイル共有への大きな一歩で、その後1990年にマイクロソフトがこのバージョンを修正・更新し、WindowsのOSに組み込みました。
- CIFS:CIFS(Common Internet File System)は、1996年に当時最新のOSであるWindows95と同時にリリースされました。SMBv1プロトコルを改良し、より優れたパフォーマンス、長いファイル名のサポート、より高度なセキュリティ機能を実現しました。
- SMB2.0:2006年にWindows Vistaとともにリリースされ、パフォーマンスと効率性をさらに向上させたのがSMB2.0です。コマンドやサブコマンドの数の削減や並列処理の多用やメタデータの削減など様々な最適化のおかげで、SMB1.0よりもはるかに高速なデータ配信が可能になりました。
- SMB2.1:SMB2.1は、Windows7とともに登場し、前のバージョンの非効率性を改善し、クライアントとサーバー間で交換されるデータ量を最小限に抑えることでプロトコルのオーバーヘッドを減らし、帯域幅の効率を改善し、さらに優れたパフォーマンスを実現しました。
- SMB3.0:Windows8で導入され、さらなる更新と修正が加えられたのがSMB3.0です。このバージョンの最も注目すべき改善ポイントはセキュリティ面の強化で、プロトコルバージョンでエンドツーエンドの暗号化を初めて導入しました。
- SMB3.02:Windows8.1と共にリリースされました。このバージョンは他の多くのアップデートの中でもSMBv1を完全無効化することでセキュリティとパフォーマンスを向上させる機能を提供しました。
- SMB3.1.1:SMB3.1.1は、2015年にWindows10と共にリリースされ、より強固な暗号化、中間者攻撃からの保護、相互認証など、セキュリティ面がさらに向上しました。また、SMB3.1.1にはより効率的なデータ転送や待ち時間の短縮など、パフォーマンスの最適化も含まれています。
SMBの方言とバージョンのネゴシエーション
SMBは、大きく分けて「MS-SMB」と「MS-SMB2」の2つに分類されてぞれぞれ細かいバージョンを含んでいます。SMB1.0/CIFSのプロトコルは「MS-SMB」に含まれ、Windows Vista以降のSMB 2.0と2.1、およびSMB 3.0と3.02、3.1.1は「MS-SMB2」に区別されます。
これらのバージョンを識別するのが、人間が使っている方言と同じ意味を持つ「ダイアレクト(Dialect)」です。たとえば、CIFSとSMB 1.0は「NT LM 0.12」という共通のダイアレクトで識別され、「MS-SMB2」に含まれるSMB2.0以降のバージョンは、それぞれ個別のダイアレクトで識別されます。
そして、SMBセッションを開始する際にクライアントとサーバーがお互い話せるダイアレクトを選択する「ネゴシエーション」を実行することで、両者が利用可能なものの中で最上位のSMBバージョンを選択することができます。
このような記事をもっと読みたいですか?
NordVPNの最新ニュースやアドバイスをお届けします。
SMBプロトコルの使用例
こちらではSMBプロトコルの実際の使用例についていくつか紹介します。
ファイル共有
ファイル共有は複数の異なるデバイス間でデータ共有する際に役立つ、SMBプロトコルの最も一般的な使用例といえます。企業や組織のローカルネットワーク内にある複数のコンピュータ同士でファイルを共有したり、文書や画像等のデータが共有可能になります。 ファイル共有にSMBプロトコルを利用することで、オンライン上でのデータのやり取りを簡単に行なえるようになり、作業効率が向上します。
プリンター共有
SMBプロトコルを利用して物理的にプリンターに接続されていないデバイスから印刷するための命令を送ることで、遠隔で印刷することができます。具体的には複数のユーザーがひとつのプリンターを使用するオフィスや学校、最近ではコワーキングスペースなどで使用されており、物理的にプリンターに接続しなくても印刷が可能になりました。
リモートアクセス
SMBを使用すると遠隔でネットワーク上にある別のコンピュータを制御することができます。多くのシステム管理者は、企業独自のネットワーク上のシステムに遠隔でアクセスして管理や必要な場合はメンテナンスを行なったりしています。近年はリモートワークの増加に伴い、需要が高まっています。
SMBへの接続方法と管理
以下では、各デバイスからSMBへの接続方法と管理について紹介します。
Windowsパソコン
- エクスプローラーを開きます。
- 左側の「ネットワーク」をクリックします。
- 接続したいSMBサーバーを選択します。
- ユーザー名とパスワードを入力し、OKをクリックするとSMBサーバーに接続します。
上記の方法でSMBサーバー上にある共有フォルダにアクセスできます。2のエクスプローラーの「ネットワーク」には、同じネットワークに接続されている他のコンピュータが表示されます。初めてサーバーに接続する際は、ドメイン名、ユーザー名、パスワードを入力するダイアログが表示されますが、2回目以降はアクセス許可された共有フォルダがエクスプローラー上にネットワークドライブとして追加されるので、ローカルドライブのように簡単にファイル操作が可能になります。
スマートフォン
- 「ファイル」アプリを開きます。
- 右上の「…」から「サーバーへ接続」をクリックします。
- サーバーアドレスを入力し、「次へ」をクリックします。
- ユーザー名とパスワードを入力し、「次へ」をクリックします。
上記の手順を実行することで基本的にはAndroidやiPhoneからSMBサーバーに接続可能です。ただし、最初は「ファイル」アプリのサーバー追加画面で、SMBサーバーのIPアドレスやホスト名を入力し、次の画面でサーバーに登録済みのユーザー名とパスワードを入力する必要があります。認証成功すると、SMBサーバー上に保存してある共有フォルダがAndroidの「ファイルマネージャー」アプリやiPhoneの「ファイル」アプリ内に表示され、それ以降は共有フォルダ内のファイルを開いたり、新規追加や移動、コピー、削除などのファイル操作が自由にできるようになります。
SMBとCIFSの違い
以下では、SMBとCIFSの違いについて解説します。
SMB | CIFS | |
---|---|---|
ファイル共有 | ローカルネットワーク上 | インターネット上 |
実装されているOS | Windows 9x/Me/Windows N | |
登場時期 | 1980年代 | 1996年 |
機能の概要 | ||
特徴 | NetBIOSインターフェースに依存するプロトコル | トランスポートに依存しないプロトコル |
過去にSMBとCIFSはほぼ同等に扱われることがありましたが、今ではそれぞれ異なるプロトコルとされています。現在、CIFSはSMB1.0プロトコルに含まれるSMBダイレクトのうちの1つであり、Windows 9x/Me/Windows NTにおけるファイル共有プロトコルの仕様をまとめたものです。
また、SMB1.0はCIFS仕様の公開後も機能強化され続け、OSもWindows2000、Windows XP、Windows Server 2003、Windows Server 2003 R2まで対応しており、Active Directoryへの対応などが含まれています。このように現在のCIFSとSMBは実用的にはファイル共有可能なほぼ同じものといえ、CIFSを拡張したのがSMB1.0です。
SMBとNFSの違い
SMB とNFSはネットワーク上のファイル共有をするプロトコルですが、以下では両者の違いについて表を使って解説します。
SMB | NFS | |
---|---|---|
ベースプロトコル | TCP | UDP |
主な用途 | WAN(Wide Area Network)を想定したファイル共有 | LAN(Local Area Network)を想定したファイル共有 |
通信の特徴 | コネクション型、高信頼性、大容量データ転送に強い | コネクションレス型、軽量、小規模データ転送に強い |
同時接続数 | 多数 | 少数 |
認証 | 必須 | 不要 |
アクセス制御 | ユーザー単位で細かく設定可能 | サーバー側で困難 |
セキュリティレベル | 高 | 低 |
拡張性 | 高 | 低 |
エラー対策 | ◯ | ✕ |
混雑制御 | ◯ | ✕ |
SMBとNFSの大きな違いは、通信するデバイス同士の物理的な距離で、使用目的によって使い分け可能です。上記とみてもわかる通り、離れた場所からでも安全に通信ができ、より多くのデバイスが接続可能で、セキュリティの安全性が高いSMBのほうが総合的に優れているといえます。
SMBプロトコルは安全か?
こちらでは、SMBプロトコルの安全性について紹介します。
一般的にSMBの安全性は高いと言われていますが、いくつか脆弱性があることがわかっており、大規模なハッキング事件が起きています。2017年には、米国家安全保障局(NSA)がのちにEternalBlueとして知られるSMBv1プロトコルの脆弱性を発見しました。この脆弱性は、サイバー犯罪者がユーザーに気づかれずにコードを実行することができ、たった1台のデバイスが感染してしまうとネットワーク全体と接続されたあらゆるデバイスにアクセスされてしまいます。
もうひとつの注目すべきサイバー攻撃は、WannaCryランサムウェアの登場と拡散です。この攻撃はWindowsを標的とし、ハッカーはユーザーが見れないようにデータを暗号化し、復旧するための身代金を要求します。この攻撃は世界150か国で約20万台ものWindowsのデバイスに影響を与えました。
以下では、上記で紹介したさまざまな種類のランサムウェア攻撃に加えて、サイバー犯罪者がSMBプロトコルを標的にする可能性があるサイバー攻撃をまとめました。
- ブルートフォース攻撃:ブルートフォース攻撃(総当たり攻撃)とは、ハッカーがシステムやアカウント、プラットフォームにアクセスするためにユーザー名とパスワードの様々な組み合わせを繰り返し試す攻撃手口です。これによってSMBユーザーのアカウントの認証情報を推測される可能性があります。
- 中間者攻撃:SMB中間者攻撃(MITM)とは、SMBプロトコルを使用する2者間の通信を傍受するサイバー攻撃です。この攻撃によってサイバー犯罪者達はクライアントとサーバー間でやり取りされるデータを操作したり、機密情報を盗むことができます。
- 分散型サービス拒否(DDoS)攻撃:DDoS攻撃とは、ハッカーがサーバーやネットワークに偽のリクエストを殺到させ、ユーザーにアクセスできなくさせる攻撃の手口で、具体的にはSMBプロトコルを標的とし、悪意のあるリクエストや偽のリクエストを大量に送信させるてSMBサービスを妨害します。
SMBプロトコルを安全に使う方法
最後にSMBプロトコルの潜在的な脆弱性に注意しながら安全に使用する方法について紹介します。
- 強力な認証を使用する:SMBのユーザーアカウントに推測されにくい強力なパスワードを使用することで、ブルートフォース攻撃等を防ぐことができます。サイバー犯罪者がアカウントにアクセスするのを防ぐためにできるだけ多要素認証(MFA)を使用するようにしましょう。
- 定期的なアップデート:アプリやソフトウェアのアップデートは、マルウェアやバグ、開発者が発見したその他の脆弱性からユーザーの安全を守るための重要なセキュリティパッチが含まれているので、最新版が出たらすぐに更新しましょう。
- VPNを使用する:インターネットに接続する際にVPN(仮想プライベートネットワーク)を使用することでトラフィックを暗号化し、外部からデータを盗まれる心配がなくなるのでなるべく普段から接続して保護しましょう。また、NordVPNが提供しているメッシュネットワークの安全なファイル共有は、デバイスに接続することで安全性の高い暗号化トンネルが作成されるので、写真や動画、ファイルの種類やサイズに関係なく、クオリティが損なわれることなく、安全に共有することができます。