サーバー メッセージ ブロック署名の概要
この記事では、サーバー メッセージ ブロック (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 署名が必要であることを示し、"if server agrees" または "if client agrees" は SMB 署名が有効であることを示します。
"RequireSecuritySignature" と "EnableSecuritySignature" について
SMB2+ クライアントと SMB2+ サーバーの EnableSecuritySignature レジストリ設定は無視されます。 したがって、SMB1 を使用している場合を除き、この設定は何も行いません。 SMB 2.02 以降の署名は、必須かどうかによってのみ制御されます。 この設定は、サーバーまたはクライアントで SMB 署名が必要な場合に使用されます。 両方の署名が 0 に設定されている場合にのみ 署名は行われません。
- | サーバー – RequireSecuritySignature=1 | サーバー – RequireSecuritySignature=0 |
---|---|---|
クライアント – RequireSecuritySignature=1 | Signed | Signed |
クライアント – RequireSecuritySignature=0 | Signed | 署名されていません |
リファレンス
SMB クライアント防御を介して傍受攻撃からユーザーを防御する方法
Windows 10 での SMB 2 と SMB 3 のセキュリティ: 署名キーと暗号化キーの構造
SMBv1 は、Windows 10 バージョン 1709、Windows Server バージョン 1709 以降のバージョンでは既定ではインストールされません