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は、パソコンのコントロールパネルの「プログラムと機能」から設定を有効もしくは無効に切り替え可能です。 {SHORTCODES.blogRelatedArticles} 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バージョンを選択することができます。…
Read more