サーバー メッセージ ブロック署名の概要

この記事では、サーバー メッセージ ブロック (SMB) 2.x および 3.x 署名について説明し、SMB 署名が必要かどうかを判断する方法について説明します。

概要

SMB 署名 (セキュリティ署名とも呼ばれます) は、SMB プロトコルのセキュリティ メカニズムです。 SMB 署名は、すべての SMB メッセージにセッション キーを使用して生成される署名が含まれていることを意味します。 クライアントは、メッセージ全体のハッシュを SMB ヘッダーの署名フィールドに配置します。

SMB 署名は、最初に Microsoft Windows 2000、Microsoft Windows NT 4.0、および Microsoft Windows 98 に登場しました。 署名アルゴリズムは時間の経過と同時に進化してきました。 SMB 2.02 署名は、ハッシュベースのメッセージ認証コード (HMAC) SHA-256 の導入によって改善され、SMB1 で使用されていた 1990 年代後半の古い MD5 メソッドが置き換わりました。 SMB 3.0 では、AES-CMAC アルゴリズムが追加されました。 Windows Server 2022 および Windows 11では、AES-128-GMAC 署名アクセラレーションを追加しました。 最適なパフォーマンスと保護の組み合わせが必要な場合は、最新の Windows バージョンへのアップグレードを検討してください。

SMB 署名によって接続が保護される方法

転送中に誰かがメッセージを変更した場合、ハッシュは一致せず、SMB は誰かがデータを改ざんしたことを認識します。 署名は、送信者と受信者の ID も確認します。 これにより、リレー攻撃を防ぐことができます。 理想的には、NTLMv2 の代わりに Kerberos を使用して、セッション キーが強力に開始されるようにします。 IP アドレスを使用して共有に接続せず、CNAME レコードを使用しないか、Kerberos の代わりに NTLM を使用します。 代わりに Kerberos を使用してください。 詳細については、「 DNS CNAME レコードの代わりにコンピューター名エイリアスを使用 する」を参照してください。

SMB 署名のポリシーの場所

SMB 署名のポリシーは、[コンピューターの構成>] [Windows 設定][セキュリティ設定]>>[ローカル ポリシー>][セキュリティ オプション] にあります。

  • Microsoft ネットワーク クライアント: 通信にデジタル署名する (常に)
    レジストリ キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
    レジストリ値: RequireSecuritySignature
    データ型: REG_DWORD
    データ: 0 (無効)、1 (有効)
  • Microsoft ネットワーク クライアント: 通信にデジタル署名する (サーバーが同意する場合)
    レジストリ キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
    レジストリ値: EnableSecuritySignature
    データ型: REG_DWORD
    データ: 0 (無効)、1 (有効)
  • Microsoft ネットワーク サーバー: 通信にデジタル署名する (常に)
    レジストリ キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
    レジストリ値: RequireSecuritySignature
    データ型: REG_DWORD
    データ: 0 (無効)、1 (有効)
  • Microsoft ネットワーク サーバー: 通信にデジタル署名する (クライアントが同意した場合)
    レジストリ キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
    レジストリ値: EnableSecuritySignature
    データ型: REG_DWORD
    データ: 0 (無効)、1 (有効)

メモ これらのポリシーでは、"always" は SMB 署名が必要であることを示し、"サーバーが同意した場合" または "クライアントが同意した場合" は SMB 署名が有効であることを示します。

"RequireSecuritySignature" と "EnableSecuritySignature" について

SMB2+ クライアントと SMB2+ サーバーの EnableSecuritySignature レジストリ設定は無視されます。 したがって、SMB1 を使用していない限り、この設定は何も行いません。 SMB 2.02 以降の署名は、必須かどうかによってのみ制御されます。 この設定は、サーバーまたはクライアントで SMB 署名が必要な場合に使用されます。 両方の署名が 0 に設定されている場合にのみ、署名は行われません。

- サーバー – RequireSecuritySignature=1 サーバー – RequireSecuritySignature=0
クライアント – RequireSecuritySignature=1 Signed Signed
クライアント – RequireSecuritySignature=0 Signed 署名されていない

関連情報

信頼して SMB 署名を構成する

SMB クライアント防御を使用してインターセプト攻撃からユーザーを防御する方法

Windows 10の SMB 2 と SMB 3 のセキュリティ: 署名キーと暗号化キーの構造

SMBv1 は、Windows 10 バージョン 1709、Windows Server バージョン 1709 以降のバージョンでは既定ではインストールされません

Netdom computername