SMB 3.0 트래픽 암호화란?
Windows Server 2012 및 Windows 8에 도입된 서버 메시지 블록(Server Message Block, SMB) 3.0 프로토콜부터는 SMB 파일 서버와 클라이언트 간에 네트워크를 통해 전송되는 데이터를 암호화할 수 있게 되었습니다. 이 암호화는 클라이언트 입장에서 완전히 투명하게 작동하며, VPN, IPSec 또는 PKI 인프라 구축과 달리 별도의 조직적 노력이나 추가 리소스를 크게 요구하지 않습니다.
최신 버전인 SMB 3.1.1(Windows 10 및 Windows Server 2016에서 사용)에서는 AES 128 GCM 방식의 암호화가 적용되어 알고리즘 성능이 크게 향상되었습니다. 또한 데이터 서명과 무결성 검증이 자동으로 수행됩니다.
SMB 암호화 구현 시 고려사항
Windows Server 2012에서 SMB 암호화를 구현할 때 가장 먼저 이해해야 할 사항은 프로토콜 버전 협상 방식입니다. 클라이언트와 서버가 서로 다른 SMB 버전을 지원하는 경우, 연결이 수립될 때 양쪽 모두가 지원하는 가장 높은 SMB 버전이 선택됩니다. 즉, Windows 8 / Server 2012 이전 버전을 실행하는 모든 클라이언트는 SMB 암호화가 활성화된 네트워크 폴더와 통신할 수 없습니다.
파일 서버에서는 클라이언트가 현재 사용 중인 SMB 프로토콜 버전을 확인할 수 있습니다(사용 중인 프로토콜 버전은 Dialect 열에 표시됩니다):
Get-SmbConnection

서버 관리자를 통한 특정 공유 폴더 암호화
기본적으로 Windows Server 2012 파일 서버에서는 SMB 트래픽 암호화가 비활성화되어 있습니다. 개별 SMB 공유별로 또는 서버의 모든 SMB 연결에 대해 암호화를 활성화할 수 있습니다.
특정 디렉터리에 대해 암호화를 활성화하려면 서버에서 서버 관리자(Server Manager) 콘솔을 열고 파일 및 저장소 서비스(File and Storage Services) → 공유(Shares)로 이동합니다. 원하는 공유 폴더를 선택하여 속성을 연 후, 설정(Settings) 탭에서 데이터 액세스 암호화(Encrypt Data Access) 옵션을 활성화하고 변경 사항을 저장합니다.

PowerShell을 통한 SMB 암호화 활성화
PowerShell 콘솔에서도 SMB 암호화를 손쉽게 활성화할 수 있습니다. 특정 공유 하나에 대해서만 암호화를 적용하려면 다음 명령어를 사용합니다:
Set-SmbShare –Name Install -EncryptData $true
서버로 들어오는 모든 SMB 연결(공유 폴더 또는 관리 공유 포함)에 대해 암호화를 적용하려면:
Set-SmbServerConfiguration –EncryptData $true

레거시 클라이언트 접근 허용하기
네트워크 공유에 대한 SMB 암호화가 활성화되면, SMB 3.0을 지원하지 않는 모든 레거시 클라이언트(Windows 8 이전 버전)는 해당 공유에 더 이상 연결할 수 없습니다. 이러한 구형 Windows 클라이언트의 접근을 일시적으로 허용해야 하는 경우(암호화를 활성화하는 목적을 고려할 때 이는 임시 조치여야 합니다), 암호화되지 않은 연결을 허용하도록 설정할 수 있습니다:
Set-SmbServerConfiguration –RejectUnencryptedAccess $false
팁: 이 모드가 활성화되면 연결하는 클라이언트가 보안상 위험한 구식 SMB 1.0 버전으로 전환할 수 있습니다(단, Windows Server 2012 R2에서는 SMB 1.0이 이미 기본적으로 비활성화되어 있습니다). 이 경우 서버를 최소한으로 보호하려면 SMB 1.0 지원을 비활성화하는 것이 좋습니다:Set-SmbServerConfiguration –EnableSMB1Protocol $false