サーバー メッセージ ブロックの署名とは
この記事では、Windows および Windows Server でのサーバー メッセージ ブロック (SMB) 2.x および 3.x の署名について説明します。 この記事では、SMB 署名のセキュリティに関する考慮事項とポリシー設定についても説明します。
SMB 署名とは、すべての SMB メッセージには、セッション キーと AES を使用して生成された署名が含まれていることを意味します。 SMB 署名では、SMB ヘッダーにメッセージ全体のハッシュを含む署名が追加されます。 転送中にメッセージが改ざんされた場合、改ざんされたメッセージのデータは署名のハッシュと一致しません。 ハッシュには、元の送信者と本来の受信者 ID も含まれます。 署名の不一致は、可能性のある不正行為をユーザーに警告し、リレー攻撃やスプーフィング攻撃から保護するのに役立ちます。
署名のしくみ
SMB 署名は、セッション キーと暗号スイートを使用して、接続を経由するメッセージに署名を追加するセキュリティ機能です。 SMB2 のメッセージの整合性は、署名されたパケットがクライアントからサーバーにフローする、署名されたセッション上にあります。 署名されたセッションでは、すべての署名済みパケットに、受信側が検証できる署名が含まれます。 MD5 [RFC1321] ハッシュ アルゴリズムを使用する SMB1 署名とは異なり、SMB2 では署名に優れたハッシュが使用されます。 MS-SMB2 のセキュリティ モデルは、サーバー上の共有にアクセスする前に、クライアント ユーザー ID の認証に依存しています。 ユーザーが認証されると、サーバーはメッセージの署名または暗号化を要求できます。 また、サーバーは、さまざまなレベルのアクセスを許可されているユーザー、グループ、またはクレームに基づいて、共有へのアクセスを制御します。
署名アルゴリズムは時間の経過と共に進化し、SMB 2.02 署名は HMAC-SHA-256 で改善され、SMB1 にあった古い MD5 メソッドに置き換わりました。 さらに、SMB 3.0 では AES-CMAC が導入されました。 Windows Server 2022 と Windows 11 では、AES-128-GMAC 署名の高速化が導入されました。 AES-128-GMAC 署名の詳細については、「AES-128-GMAC 署名の高速化」を参照してください。
SMB 署名はすべてのバージョンの Windows で有効になっています。 SMB 署名の要件には、SMB クライアントからのトラフィックを対象とするアウトバウンド署名と、サーバーへのトラフィックを対象とするインバウンド署名の両方が含まれる場合があります。 Windows と Windows サーバーでは、アウトバウンド署名のみ、インバウンド署名のみ、両方が必要、またはどちらも必要としない場合があります。 お使いの環境で Microsoft 以外のファイル サーバーを使用している場合、システム設定によって、既定の設定と接続が有効にならなくなる可能性があります。 この場合、SMB 署名の要件を無効にする必要がある場合があります。 SMB 署名を無効にする方法のガイダンスについては、「SMB 署名動作の制御」を参照してください。
SMB2 および SMB3 のセキュリティに関する考慮事項
SMB 2.x および 3.x 署名で使用されるすべての暗号化キーは、セッション キーから派生します。 SMB 2/3 署名と暗号化のセキュリティは、セッション キーに依存します。 メッセージの転送中に誰かがメッセージを変更した場合、ハッシュは一致せず、SMB は誰かがデータを改ざんしたことを認識します。 また、署名は送信者と受信者の ID を確認し、リレー攻撃を防ぎます。
SMB 署名を使用する場合は、次の点を考慮する必要があります。
- セッション キー自体はパスワードから派生するため、長くて複雑な非ディクショナリ パスワードを使用すると、SMB 署名と暗号化が強化されます。
- セッション キーが強力に開始されるように、NTLMv2 の代わりに Kerberos を使用することをお勧めします。
- IP アドレスまたは CNAME レコードを使用して共有に接続しないでください。そうしない場合、Kerberos の代わりに NTLM が使用されます。 Kerberos を使用することをお勧めします。 CNAME レコードの使用に代わる方法の詳細については、「DNS の CNAME レコードの代わりにコンピューター名のエイリアスを使用する」を参照してください。
既定では、ドメイン コントローラーは、SYSVOL と NETLOGON がグループ ポリシーとログオン スクリプトを取得するために、接続するすべてのユーザーの SMB 署名が必要です。 クライアントからの UNC のセキュリティ強化では、同じ 2 つの共有と通信するときに署名も必要であり、Kerberos を要求することでさらに一歩進みます。 SMB 署名は、ダウングレード攻撃を防ぐために、認証前の整合性の一部としても自動的に使用されます。 詳細については、「Windows 10 での SMB 3.1.1 事前認証の整合性」を参照してください。
SMB 署名のポリシーの場所
SMB 署名のポリシーは、コンピューターの構成>Windows 設定>セキュリティ設定>ローカル ポリシー>セキュリティ オプションにあります。
Microsoft ネットワーク クライアント: 常に通信にデジタル署名を行う
レジストリ キー:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
レジストリ値: RequireSecuritySignature
データ型:REG_DWORD
データ: 0 (無効化)、1 (有効化)Microsoft ネットワーク サーバー: 常に通信にデジタル署名を行う
レジストリ キー:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
レジストリ値: RequireSecuritySignature
データ型:REG_DWORD
データ: 0 (無効化)、1 (有効化)
注
これらのポリシーでは、常に SMB 署名が必要であることを示します。
"RequireSecuritySignature" と "EnableSecuritySignature" について
SMB2 以降のクライアントとサーバーの EnableSecuritySignature レジストリ設定は無視されます。 したがって、SMB1 を使用している場合を除き、この設定は何も行いません。 SMB 2.02 以降の署名は、必須かどうかによってのみ制御されます。 この設定は、サーバーまたはクライアントで SMB 署名が必要な場合に使用されます。 署名は、サーバーとクライアントの両方で署名が 0 に設定されている場合にのみ発生しません。
要約すると、SMB は次の場合に署名されます。
- SMB クライアントとサーバーの両方で RequireSecuritySignature が 1 に設定されている場合。
- SMB クライアントで RequireSecuritySignature が 1 に設定され、サーバーでは RequireSecuritySignature が 0 に設定されている場合。
- SMB サーバーで RequireSecuritySignature が 1 に設定され、クライアントでは RequireSecuritySignature が 0 に設定されている場合。
署名は、次の場合には使用されません。
- SMB クライアントとサーバーで RequireSecuritySignature が 0 に設定されている場合。
SMB署名と暗号化の監査
Windows 11 バージョン 24H2 以降では、管理者は SMB クライアントの監査を有効にして、SMB 暗号化または署名をサポートしていないサード パーティのクライアントまたはサーバーを検出できます。 サード パーティ製のデバイスまたは SMB 3.1.1 をサポートすると主張しているが SMB 署名をサポートしていないソフトウェアは、SMB 3.1.1 事前認証の整合性プロトコル要件に違反しています。
SMB 署名と暗号化監査設定は、グループ ポリシーで調整するか PowerShell を介して調整します。 グループ ポリシーのこれらの設定は、パスに格納されます。
Computer Configuration\Administrative Templates\Network\Lanman Server\Audit client does not support encryption
Computer Configuration\Administrative Templates\Network\Lanman Server\Audit client does not support signing
Computer Configuration\Administrative Templates\Network\Lanman Workstation\Audit server does not support encryption
Computer Configuration\Administrative Templates\Network\Lanman Workstation\Audit server does not support signing
PowerShell では、次のコマンドを実行すると、同じ設定を監査できます。
Set-SmbServerConfiguration -AuditClientDoesNotSupportEncryption $true
Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning $true
Set-SmbClientConfiguration -AuditServerDoesNotSupportEncryption $true
Set-SmbClientConfiguration -AuditServerDoesNotSupportSigning $true
イベント ビューアーは、それぞれのイベント ID を使用して、次のパスでこれらのイベントをキャプチャします。
Path | イベント ID |
---|---|
Applications and Services Logs\Microsoft\Windows\SMBClient\Audit | 31998 31999 |
Applications and Services Logs\Microsoft\Windows\SMBServer\Audit | 3021 3022 |
関連するコンテンツ
次の記事は、SMB に関する追加の情報を提供しています。