サーバー メッセージ ブロック (SMB) プロトコルは、Windows 環境でのファイル共有とデータ アクセスのコア コンポーネントです。 セキュリティの脅威が進化し続ける中、Windows Server と Windows では、傍受や未承認のアクセスから機密データを保護するために、強化された SMB セキュリティ機能が導入されています。 この記事では、SMB 暗号化、新しい署名アルゴリズム、高度な構成オプションなど、最新の SMB セキュリティ強化について説明します。 これらの機能を使用して、組織のデータ保護を強化し、最新のセキュリティ要件を満たします。
SMB 暗号化
SMB 暗号化は、SMB データをエンド ツー エンドで暗号化し、信頼できないネットワークで発生する傍受からデータを保護できます。 SMB 暗号化は最小限の作業で展開できますが、特殊なハードウェアまたはソフトウェアに関する追加コストが必要になることがあります。 インターネット プロトコル セキュリティ (IPsec) または WAN アクセラレータの要件はありません。 SMB 暗号化は、共有ごと、ファイル サーバー全体、またはドライブのマッピング時に構成できます。
Note
SMB 暗号化では、保存時のセキュリティはカバーされません。 通常、BitLocker ドライブ暗号化はデータの静止状態での保護を処理します。
傍受攻撃から機密データを保護する必要があるすべてのシナリオで、SMB 暗号化を検討できます。 次のようなシナリオが想定されます。
- インフォメーション ワーカーの機密データは、SMB プロトコルを使用して移動します。 SMB 暗号化は、ファイル サーバーとクライアントの間でエンドツーエンドのプライバシーと整合性の保証を提供します。 このセキュリティは、Microsoft 以外のプロバイダーによって管理されるワイド エリア ネットワーク (WAN) 接続など、通過するネットワークに関係なく提供されます。
- SMB 3.0 を使用すると、ファイル サーバーは SQL Server や Hyper-V などのサーバー アプリケーションに対して、継続的に使用可能な記憶域を提供できます。 SMB 暗号化を有効にすると、その情報をスヌーピング攻撃から保護する機会が得られます。 SMB 暗号化は、ほとんどの記憶域ネットワーク (SAN) に必要な専用ハードウェア ソリューションよりも簡単に使用できます。
Windows Server 2022 と Windows 11 では、SMB 3.1.1 の暗号化に AES-256-GCM と AES-256-CCM の暗号化スイートが導入されています。 この高度な暗号化方式は、それをサポートする他のコンピューターに接続するときに、Windows によって自動的にネゴシエートされます。 また、グループ ポリシーを使って、この方式を必須にすることもできます。 Windows は引き続き AES-128-GCM と AES-128-CCM をサポートします。 既定では、AES-128-GCM が SMB 3.1.1 とネゴシエートされ、セキュリティとパフォーマンスの最適なバランスを実現します。
Windows Server 2022 と Windows 11 の SMB ダイレクトは、暗号化をサポートするようになりました。 以前は、SMB 暗号化を有効にすると、データの直接配置が無効になり、RDMA のパフォーマンスが TCP と同じくらい遅くなりました。 現在は、データは配置前に暗号化されるため、パフォーマンスの低下は比較的少なくなり、さらに AES-128 と AES-256 で保護されたパケットのプライバシーが追加されました。 暗号化を有効にするには、 Windows Admin Center、 Set-SmbServerConfiguration、または UNC セキュリティ強化グループ ポリシーを使用します。
さらに、Windows Server フェールオーバー クラスターは、クラスター共有ボリューム (CSV) とストレージ バス レイヤー (SBL) のノード内ストレージ通信の暗号化をきめ細かい制御をサポートするようになりました。 このサポートは、記憶域スペース ダイレクトと SMB ダイレクトを使っているときは、より高いセキュリティのために、クラスター自体の中で東西の通信を暗号化できることを意味します。
Important
暗号化されていない保護と比較すると、エンド ツー エンドの暗号化保護でパフォーマンスの運用コストが顕著になります。
Prerequisites
SMB 暗号化を有効にする前に、次の前提条件が満たされていることを確認します。
- サポートされているバージョンの Windows または Windows Server。
- SMB 3.0 以降は、クライアントとサーバーの両方で有効になっています。
- SMB サーバーとクライアントに対する管理者特権または同等のアクセス許可。
SMB 暗号化を有効にする
SMB 暗号化は、ファイル サーバー全体に対して、または特定のファイル共有に対してのみ有効にすることができます。 SMB 暗号化を有効にするには、次のいずれかの手順を使用します。
Windows Admin Center を使用して SMB 暗号化を有効にする
- Windows Admin Center をダウンロードしてインストールします。
- ファイル サーバーに接続します。
- [Files & file sharing] (ファイルとファイル共有) を選びます。
- [ ファイル共有 ] タブを選択します。
- 共有で暗号化を要求するには、共有名を選択し、[ SMB 暗号化を有効にする] を選択します。
- サーバーで暗号化を要求するには、[File server settings] (ファイル サーバーの設定) を選びます。
- [ SMB 3 暗号化] で、 すべてのクライアントから [必須] を選択し (他のクライアントは拒否されます)、[保存] を選択 します。
UNC ハードニングを使用して SMB 暗号化を有効にする
UNC Hardening を使うと、サーバーの暗号化設定にかかわらず、暗号化を要求するように SMB クライアントを構成できます。 この機能は傍受攻撃を防ぐのに有効です。 UNC セキュリティ強化の構成の詳細については、「 MS15-011: グループ ポリシーの脆弱性により、リモートでコードが実行される可能性がある」を参照してください。 傍受攻撃の防御について詳しくは、「SMB クライアント防御を介して傍受攻撃からユーザーを防御する方法」をご覧ください。
Windows PowerShell を使用して SMB 暗号化を有効にする
サーバーにサインインし、管理者特権セッションでコンピューターで PowerShell を実行します。
個々のファイル共有の SMB 暗号化を有効にするには、次のコマンドを実行します。
Set-SmbShare –Name <sharename> -EncryptData $true
ファイル サーバー全体で SMB 暗号化を有効にするには、次のコマンドを実行します。
Set-SmbServerConfiguration –EncryptData $true
SMB 暗号化を有効にして新しい SMB ファイル共有を作成するには、次のコマンドを実行します。
New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true
暗号化を使用してドライブをマッピングする
PowerShell を使用してドライブをマッピングするときに SMB 暗号化を有効にするには、次のコマンドを実行します。
New-SMBMapping -LocalPath <drive letter> -RemotePath <UNC path> -RequirePrivacy $TRUE
CMD を使用してドライブをマッピングするときに SMB 暗号化を有効にするには、次のコマンドを実行します。
NET USE <drive letter> <UNC path> /REQUIREPRIVACY
SMB 暗号化を展開する際の注意事項
既定では、ファイル共有またはサーバーに対して SMB 暗号化を有効にすると、SMB 3.0、3.02、および 3.1.1 の各クライアントのみが、指定されたファイル共有にアクセスできます。 この制限により、共有にアクセスするすべてのクライアントについてデータを保護するという管理者の意図が実現されます。
ただし、状況によっては、管理者は SMB 3.x をサポートしていないクライアントに対して、暗号化されていないアクセスを許可することが必要な場合もあります。 この状況は、クライアント オペレーティング システムのバージョンが混在している移行期間中に発生する可能性があります。 SMB 3.x をサポートしていないクライアントに対して暗号化されていないアクセスを許可するには、Windows PowerShell で次のスクリプトを入力します。
Set-SmbServerConfiguration –RejectUnencryptedAccess $false
Note
暗号化をデプロイするときに、暗号化されていないアクセスを許可することはお勧めしません。 代わりに、暗号化をサポートするようにクライアントを更新してください。
次のセクションで説明する事前認証の整合性機能を使用すると、接続を SMB 3.1.1 から SMB 2.x にダウングレードする (つまり暗号化されていないアクセスを使用する) 傍受攻撃を防ぐことができます。 ただし、SMB 1.0 へのダウングレードを防ぐことはできず、これによって暗号化されていないアクセスが発生します。
SMB 3.1.1 クライアントが常に SMB 暗号化を使用して、暗号化された共有にアクセスすることを保証するには、SMB 1.0 サーバーを無効にする必要があります。 手順としては、Windows Admin Center を使ってサーバーに接続し、[Files & File Sharing] (ファイルとファイル共有) 拡張機能を開いて、[ファイル共有] タブを選ぶと、アンインストールを促すメッセージが表示されます。 詳細については、「 Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、無効化する方法」を参照してください。
RejectUnencryptedAccess 設定が既定の$true設定のままにされている場合、暗号化対応の SMB 3.x クライアントのみがファイル共有へのアクセスを許可されます。 (SMB 1.0 クライアントも拒否されます)。
SMB 暗号化を展開するときは、次の問題を考慮してください。
- SMB 暗号化は Advanced Encryption Standard (AES)-GCM および CCM アルゴリズムを使用して、データを暗号化および復号化します。 また、AES-CMAC と AES-GMAC は SMB 署名の設定に関係なく、暗号化されたファイル共有に対してデータ整合性の検証 (署名) を行います。 暗号化しないで SMB 署名を有効にしたい場合は、引き続きそのようにできます。 詳細については、「信頼できる SMB 署名を構成する」を参照してください。
- 組織で WAN アクセラレーション アプライアンスを使用している場合、ファイル共有またはサーバーにアクセスしようとすると、問題が発生する可能性があります。
- 既定の構成 (暗号化されたファイル共有への暗号化されていないアクセスが許可されていない場合) では、SMB 3.x をサポートしていないクライアントが暗号化されたファイル共有にアクセスしようとすると、イベント ID 1003 が Microsoft-Windows-SmbServer/Operational イベント ログに記録され、クライアントは アクセス拒否 エラー メッセージを受け取ります。
- SMB 暗号化と NTFS ファイル システム内の暗号化ファイル システム (EFS) には関連がなく、SMB 暗号化は EFS を必要とせず、その使用に依存していません。
- SMB 暗号化と BitLocker ドライブ暗号化は関連がなく、SMB 暗号化は BitLocker ドライブ暗号化を必要とせず、その使用に依存していません。
事前認証の整合性
SMB 3.1.1 には、事前認証の整合性を使用して、クライアントとサーバー間でネゴシエートされるプロトコルや機能をダウングレードしようとする傍受攻撃を検出する機能があります。 事前認証の整合性は、SMB 3.1.1 の必須機能です。 これにより、暗号化ハッシュが使用され、ネゴシエートとセッション設定メッセージの改ざんから保護されます。 結果のハッシュは、セッションの暗号化キー (署名キーを含む) を派生するための入力として使用されます。 このプロセスにより、クライアントとサーバーは接続とセッションのプロパティを相互に信頼できます。 クライアントまたはサーバーがこのような攻撃を検出すると、接続が切断され、Microsoft-Windows-SmbServer/Operational イベント ログにイベント ID 1005 が記録されます。
この保護のため、そして SMB 暗号化のすべての機能を利用するため、SMB 1.0 サーバーを無効にすることを強くお勧めします。 手順については、Windows Admin Center を使用してサーバーに接続し、[ ファイル] および [ファイル共有 ] 拡張機能を開き、[ ファイル共有 ] タブを選択してアンインストールするように求められます。 詳細については、「 Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、無効化する方法」を参照してください。
新しい署名アルゴリズム
SMB 3.0 および 3.02 では、署名に新しい暗号化アルゴリズム (AES 暗号ベースのメッセージ認証コード (CMAC) が使用されます。 SMB 2.0 では、古い HMAC-SHA256 暗号化アルゴリズムが使用されていました。 AES-CMAC と AES-CCM を使用すると、AES 命令をサポートするほとんどすべての最新の CPU のデータ暗号化を大幅に高速化できます。
Windows Server 2022 と Windows 11 には、SMB 3.1.1 の署名に AES-128-GMAC が導入されました。 このパフォーマンスの高い暗号化方式は、それをサポートする他のコンピューターに接続するときに、Windows によって自動的にネゴシエートされます。 Windows は引き続き AES-128-CMAC をサポートします。 詳細については、「信頼できる SMB 署名を構成する」を参照してください。
SMB 1.0 の無効化
Windows Server バージョン 1709 と Windows 10 バージョン 1709 以降、SMB 1.0 は既定でインストールされなくなりました。 SMB 1.0 を削除する手順については、Windows Admin Center を使用してサーバーに接続し、[ ファイル] および [ファイル共有 ] 拡張機能を開き、アンインストールを求めるメッセージが表示される [ ファイル共有 ] タブを選択します。 詳細については、「 Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、無効化する方法」を参照してください。
まだインストールされている場合は、すぐに SMB 1.0 を無効にする必要があります。 SMB 1.0 の検出と無効化について詳しくは、「SMB1 の使用を止める」をご覧ください。 以前または現在 SMB 1.0 を必要とするソフトウェアのクリアリングハウスについては、「SMB1 製品のクリアリングハウス」をご覧ください。