서버 메시지 블록 서명이란?
이 문서에서는 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 Server는 아웃바운드 서명만, 인바운드 서명만, 둘 다 또는 둘 다 필요할 수 있습니다. 환경에서 비 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 강화를 수행하려면 동일한 두 공유와 통신할 때 서명이 필요하며 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에 대한 자세한 정보를 제공합니다.