SMB セキュリティ拡張機能
この記事では、Windows Server および Windows での 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 ダイレクトを使っているときは、より高いセキュリティのために、クラスター自体の中で東西の通信を暗号化できることを意味します。
重要
非暗号化による保護と比較した場合、エンドツーエンドの暗号化保護ではパフォーマンス上かなりのコストが発生します。
SMB 暗号化を有効にする
SMB 暗号化は、ファイル サーバー全体に対して、または特定のファイル共有に対してのみ有効にすることができます。 SMB 暗号化を有効にするには、次のいずれかの手順を使用します。
Windows Admin Center を使用して SMB 暗号化を有効にする
- Windows Admin Center をダウンロードしてインストールします。
- ファイル サーバーに接続します。
- [ファイルとファイル共有] を選びます。
- [ファイル共有] タブを選びます。
- 共有に対して暗号化を要求するには、共有名を選んで、[Enable SMB encryption] (SMB 暗号化を有効にする) を選びます。
- サーバーで暗号化を要求するには、[File server settings] (ファイル サーバーの設定) を選びます。
- [SMB 3 encryption] (SMB 3 暗号化) で [Required from all clients (others are rejected)] (すべてのクライアントから必須にする (その他は拒否)) をオンにして、[保存] を選びます。
UNC ハードニングを使用して SMB 暗号化を有効にする
UNC Hardening を使うと、サーバーの暗号化設定にかかわらず、暗号化を要求するように SMB クライアントを構成できます。 この機能は傍受攻撃を防ぐのに有効です。 UNC Hardening を構成するには、「[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
注意
暗号化を導入している場合、暗号化されていないアクセスを許可することはお勧めしません。 代わりに、暗号化をサポートするようにクライアントを更新してください。
次のセクションで説明する事前認証の整合性機能を使用すると、接続を SMB 3.1.1 から SMB 2.x にダウングレードする (つまり暗号化されていないアクセスを使用する) 傍受攻撃を防ぐことができます。 ただし、SMB 1.0 へのダウングレードを防ぐことはできず、これによって暗号化されていないアクセスが発生します。
SMB 3.1.1 クライアントが常に SMB 暗号化を使用して、暗号化された共有にアクセスすることを保証するには、SMB 1.0 サーバーを無効にする必要があります。 手順としては、Windows Admin Center を使ってサーバーに接続し、[ファイルとファイル共有] 拡張機能を開いて、[ファイル共有] タブを選ぶと、アンインストールを促すメッセージが表示されます。 詳しくは、「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 には、署名のための新しい暗号化アルゴリズムである Advanced Encryption Standard (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 は既定でインストールされなくなりました。 SMB1 を削除するには、Windows Admin Center を使ってサーバーに接続し、[ファイルとファイル共有] 拡張機能を開いて、[ファイル共有] タブを選ぶと、アンインストールを促すメッセージが表示されます。 詳しくは、「Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、および無効化する方法」をご覧ください。
まだインストールされている場合は、SMB1 をすぐに無効にする必要があります。 SMB 1.0 の検出と無効化について詳しくは、「SMB1 の使用を止める」をご覧ください。 以前または現在 SMB 1.0 を必要とするソフトウェアのクリアリングハウスについては、「SMB1 製品のクリアリングハウス」をご覧ください。