SMBとは?
SMBとは、クライアント・サーバーモデルを使用する、ネットワークファイルおよびリソースを共有するプロトコルです。ネットワーク上のPCはSMBクライアントとしてSMBサーバーに接続し、ファイルやディレクトリなどのリソースにアクセスしたり、ネットワーク経由で印刷などのタスクを実行することができます。
多くの場合、CIFS(Common Internet File System)という用語はSMBと同じ意味で使われます。これは、Windows 95でCIFSという名前でMicrosoft SMBの実装が導入されたからです。それ以来、CIFSという名称が、SMBを意味する非公式な呼び方として現在でも残存しています。
SMBはどのように機能するのか?
SMB通信について、簡単に説明してみましょう。SMBクライアントはSMBポートを使ってSMBサーバーに接続し、SMB共有にアクセスします。SMB共有にアクセスすると、SMBクライアントはローカルでファイルをダウンロードすることなく、ネットワーク上で共同作業をしたり、ネットワークに接続されたプリンターで印刷したりすることができます。
SMBクライアントとは ?
SMBクライアントは、SMBサーバー上のリソースにアクセスするデバイスを指します。例えば企業ネットワーク内では、共有ドライブにアクセスするユーザーPCがSMBクライアントになります。
SMB サーバーとは?
SMBサーバーは、SMB共有が保存されているネットワークサーバー(またはサーバー群)のことです。SMBサーバーは、SMBクライアントに共有リソース(SMB共有)へのアクセスを許可(または拒否)します。
SMB共有とは?
SMB共有は、SMBファイル共有とも呼ばれ、単にSMBサーバー上の共有リソースを意味します。多くの場合、SMB共有はディレクトリですが、共有されたリソースであれば何でもかまいません。例えば、ネットワークプリンターは、SMBを使って共有されることが多いリソースです。
SMBポートとは?
デフォルトでは、最近のSMB実装は、SMBポートとしてTCPポート445を使用します。古いSMB実装(Windows 2000以前)では、SMBポート139を使用していました。
SMBのバージョン:SMBv1、SMBv2、SMBv3を理解する
SMB v1(SMB1)- オリジナルのSMBバージョン – は1980年代に導入され始め、何度も繰り返し新しくリリースされるWindowsマシンで使用されました。Windows95では、MicrosoftはSMB1を実装する方法としてCIFSを導入しました。 SMB v1は安全でなく(暗号化されておらず、WannaCryやNotPetyaのような攻撃を受けやすいため)、非効率的(ネットワーク上で非常に冗長的であるため、輻輳が発生し、パフォーマンスが低下する)なので、最近のアプリケーションでは使用すべきではありません。
SMB v2(SMB2)- Windows Vistaで導入 – では、SMB1と比べてパフォーマンスが大幅に改善され、コードも非常にシンプルになりました。さらにSMBv2ではセキュリティも強化されました。例えばSMB2.0.2では、プレログオン認証が導入され、SMB1のセキュリティリスクであるWannaCryやNotPeytaのようなエクスプロイトに対する脆弱性が解消されました。またWindows 7とServer 2008 R2で導入されたSMB v2.1では、パフォーマンスとoplock(opportunistic locking)がさらに改善されました。
SMB v3(SMB3)- end to endのSMB暗号化を導入 – は、SMBの最も高度で安全な実装です。SMBv3(SMB v3.0)の最初のリリースは、Windows 8とServer 2012に搭載され、またSMB v3.02はWindows 8.1とServer 2012 R2で導入されました。また最新のSMBプロトコルであるSMB 3.1.1は、Windows 10とServer 2016で導入されました。
SMBは安全なのか?
近年、WannaCryやNotPetyaのようなサイバー攻撃がニュースになっているため、SMBは安全なのか不安に思うかもしれません。もちろん、ほとんどのネットワークプロトコルがそうであるように、SMBが安全かどうかは、お使いのバージョンや実装によって異なります。一般的に今日のSMBは非常に安全なプロトコルですが、最新のSMB実装のために、SMBの安全性を確保するための重要なポイントを紹介しましょう:
- SMBv1を使用しない:SMBv1には暗号化機能がなく、非効率的で、ランサムウェア攻撃を受けやすいため。
- 可能な限りSMBv3以降を使用する: 3つの主要なSMBバージョンの内、SMBv3(特にSMBv3.1.1)が最もセキュリティに優れています。例えばSMBv3のセキュアなネゴシエーションは、中間者攻撃の影響を抑制します。またSMBv 3.1.1は、AES-128-GCMのような安全で高性能な暗号化アルゴリズムを使用しています。
- SMBアクセスを信頼できるネットワークとクライアントに制限する:信頼できるLANやクライアントからの接続のみを許可し、SMBアクセスに厳密なネットワークセキュリティポリシーを導入することで、攻撃対象範囲を大幅に減らすことができます。
注:SMBサーバーとSMBクライアントは、両者が対応している最新のSMBバージョンを使用して通信します。したがって、SMBの実装をセキュアに行うためには、サーバーとクライアントの両方のSMBソフトウェアを考慮する必要があります。
SMBの機能を理解する
SMBの機能について検討する際には、4つの重要なカテゴリがあります:
認証 – SMBはリソースへのアクセスを制限するために、ユーザーレベル認証と共有レベル認証の両方を実装しています。SMBクライアントがリソースにアクセスする場合、SMBサーバーに対して認証を行う必要があります(これがユーザーレベル認証)。そこからSMBクライアントは、共有レベル認証で保護されていないすべてのリソースにアクセスが可能ですが、共有レベル認証が有効な共有リソースにアクセスしたい場合、SMBクライアントは別のパスワードを入力する必要があります。
安全なデータ転送 – SMB署名と暗号化機能により、ネットワークを介して転送されるSMBデータの完全性とプライバシーが保証されます。SMBv3を使用することが非常に重要である理由の1つは、最新の暗号化アルゴリズムを含め、このバージョンがこのカテゴリで最も多くの利点を提供するからです。
パフォーマンス – スループットは優れたユーザーエクスペリエンスに不可欠です。使い勝手を良くするために、SMBはパフォーマンスを向上させる様々な機能を提供しています。例えば、SMB DirectやRDMA(Remote Direct Memory Access)は、クラスタ環境での速度と効率性を向上させます。
信頼性 – このカテゴリの機能群は、スケーラビリティ、可用性、フォールトトレランス、フェイルオーバーを扱います。最新のSMBバージョンは、透過的フェイルオーバーやSOFS(Scale-Out File Servers)などの機能により、さまざまな高可用性環境をサポートするまでに成熟しています。
さらに詳しく知りたいですか?SMBの主な機能について技術的に詳しく知りたい方は、SMBのエキスパートであるTal Widerman氏による「SMB Most Important Features」をご覧ください。
適切なSMBクライアント・サーバーソフトウェアを見つける
貴社のアプリケーションに適したSMBクライアント・サーバーソフトウェアは、貴社のデプロイメントモデルによります。組み込みシステムやIoTデバイスの要件は、データセンターや企業ネットワークの要件とは異なるからですが、一律に当てはまる要素もいくつかあります。ここでは、よく知られた2つのSMBソフトウェア・プロバイダを取り上げ、互いの違いを見てみましょう。
Samba vs Visuality Systems:SMBソフトウェアのオプションを比較する
Windows以外の環境では、SMBクライアント・ソフトウェアとサーバー・ ソフトウェアの最も一般的な選択肢は、オープンソース(GPL v3)の Sambaと、Visuality Systemsの商用ソリューションの2つです。
移植性と柔軟性
Sambaは様々な*nixオペレーティングシステムでサポートされています。一方Visuality Systemsは、Linux と Unix の強力なサポートに加え、Windows、iOS、Java プラットフォーム、ThreadX や VxWorks などのリアルタイムOS (RTOS) を含む、その他様々なプラットフォームをサポートしています。さらに、Visuality Systemsは、顧客主導のアプローチをとっており、オンデマンドで新機能開発を行うため、その SMB ソリューションは市場で最も柔軟なものとなっています。
ライセンス
Samba は「コピーレフト」ライセンス (GPL v3) を使用しているため、商用製品ではライセンスの競合や法的問題が発生する可能性があります。一方Visuality Systemsのライセンスは、OEMに適した商用ライセンスで、MicrosoftのSMBに関する特許も含んでいます。(Microsoftへの問い合わせは必要はありません!)。
ベンダーサポート
Samba の商用サポートを必要とするユーザーは、サードパーティーベンダーと契約する必要があります。Visuality Systemsは、オンライン・ヘルプデスクを通じてお客様のSMBソフトウェアを直接サポートしています。、