Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 10/Server 2016에서 SMB v1.0 비활성화 및 활성화하는 방법

Windows Server 2016/2019 및 Windows 10(1709 빌드 이상)에서는 공유 폴더 접속에 사용되는 네트워크 프로토콜인 SMB 1.0(Server Message Block 1.0)이 기본적으로 비활성화되어 있습니다. 이 프로토콜은 주로 지원이 종료된 Windows XP, Windows Server 2003 등 구형 운영체제에서 호스팅되는 공유 폴더에 접근할 때 필요합니다. 이 글에서는 Windows 10과 Windows Server 2016/2019에서 SMBv1 클라이언트 및 서버 기능을 활성화하거나 비활성화하는 방법을 자세히 알아보겠습니다.

SMBv1을 비활성화해야 하는 이유

네트워크에 더 이상 SMB 1.x 클라이언트가 남아 있지 않다면, 모든 Windows 장치에서 SMBv1을 완전히 비활성화하는 것이 좋습니다. SMB 1.0을 끄면 이 레거시 프로토콜에 존재하는 수많은 취약점으로부터 Windows 컴퓨터를 보호할 수 있으며, 가장 잘 알려진 공개 익스플로잇이 바로 EternalBlue입니다. SMBv1을 비활성화하면 장치들은 네트워크 공유 폴더에 접근할 때 더 효율적이고 안전하며 기능이 풍부한 최신 버전(SMBv2, SMBv3)의 프로토콜을 사용하게 됩니다.

이전 글에서 소개한 SMB 버전별 클라이언트·서버 호환성 표에 따르면, 구형 클라이언트(XP, Server 2003, 일부 *nix 클라이언트)는 오직 SMB v1.0 프로토콜로만 네트워크 공유 폴더에 접근할 수 있습니다. 따라서 네트워크에 이런 구형 클라이언트가 없다면, 파일 서버(AD 도메인 컨트롤러 포함)와 클라이언트 PC 모두에서 SMB 1.0을 완전히 비활성화해도 됩니다.

Windows 10과 Windows Server 2016에서는 SMBv1 프로토콜이 SMB 클라이언트SMB 서버라는 두 개의 독립적인 구성 요소로 분리되어 있으며, 각각 별도로 활성화/비활성화할 수 있습니다.

  • SMB v1.0 공유 폴더 접근 감사(Auditing)
  • Windows Server 2016/2019에서 SMB 1.0 활성화/비활성화
  • Windows 10에서 SMBv1 활성화/비활성화하는 방법
  • 그룹 정책으로 SMBv1 클라이언트·서버 비활성화

SMB v1.0 공유 폴더 접근 감사(Auditing)

SMB 파일 서버 쪽에서 SMB 1.0 드라이버를 비활성화하거나 완전히 제거하기 전에, 먼저 네트워크에 이 프로토콜을 사용하는 레거시 클라이언트가 없는지 확인해야 합니다. 이를 위해 다음 PowerShell 명령어로 SMB v1.0을 통한 파일 서버 접근 감사를 활성화하세요:

Set-SmbServerConfiguration –AuditSmb1Access $true

며칠 후 서버에서 이벤트 뷰어(Event Viewer)를 열고 응용 프로그램 및 서비스 → Microsoft → Windows → SMBServer → Audit 로그를 확인하여 SMB1로 파일 서버에 접근한 클라이언트가 있는지 살펴봅니다.

팁: 다음 PowerShell 명령어로 해당 이벤트 로그의 이벤트 목록을 바로 확인할 수도 있습니다:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit

예를 들어 로그에서 SMBServer 소스의 이벤트 ID 3000이 발견되었다면, 이는 클라이언트 192.168.1.10이 SMB1 프로토콜을 사용해 서버에 접근을 시도했다는 의미입니다.

SMB1 access
Client Address: 192.168.1.10
Guidance:
This event indicates that a client attempted to access the server using SMB1. To stop auditing SMB1 access, use the Windows PowerShell cmdlet Set-SmbServerConfiguration.

이 컴퓨터나 장치를 네트워크에서 찾아 OS 또는 펌웨어를 SMBv2 또는 SMBv3 같은 최신 SMB 프로토콜 버전을 지원하는 버전으로 업데이트해야 합니다.

여기서는 이 정보를 무시하고 진행하지만, 나중에 이 클라이언트는 해당 SMB 서버의 공유 폴더에 더 이상 접근할 수 없다는 점을 반드시 염두에 두어야 합니다.

Windows Server 2016/2019에서 SMB 1.0 활성화/비활성화

Windows Server 2016(1709 빌드 이상)과 Windows Server 2019에서는 SMBv1이 기본적으로 비활성화되어 있습니다. 최신 Windows Server에서 SMBv1 클라이언트 프로토콜을 지원하려면 별도의 SMB 1.0/CIFS File Sharing Support 기능을 설치해야 합니다.

이 기능은 서버 관리자(Server Manager) 또는 PowerShell을 통해 설치할 수 있습니다.

다음 PowerShell 명령어로 SMBv1 활성화 여부를 확인할 수 있습니다:

Get-WindowsFeature | Where-Object {$_.name -eq "FS-SMB1"} | ft Name,Installstate

FS-SMB1 기능을 설치하려면 다음 명령어를 실행합니다:

Install-WindowsFeature FS-SMB1

SMBv1 클라이언트 기능을 제거하려면(재부팅 필요) 아래 명령어를 실행합니다:

Uninstall-WindowsFeature –Name FS-SMB1 –Remove

SMB1Protocol 기능을 제거하는 또 다른 PowerShell 명령어는 다음과 같습니다:

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Remove

서버가 SMBv1.0 클라이언트의 접근을 처리하려면 FS-SMB1 구성 요소 외에도 SMB 파일 서버 수준에서 SMBv1 지원을 활성화해야 합니다. 서버의 네트워크 공유에 대한 SMBv1 접근이 허용되어 있는지 확인하려면 다음 명령어를 실행하세요:

Get-SmbServerConfiguration

출력 결과에 "EnableSMB1Protocol: True"라고 표시되면 현재 SMBv1 프로토콜을 통한 공유 폴더 접근이 허용되고 있는 것입니다. Windows Server에서 SMBv1 서버 지원을 비활성화하려면 다음 PowerShell 명령어를 실행합니다:

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

이후 Get-SmbServerConfiguration cmdlet으로 SMB1 서버가 실제로 비활성화되었는지 다시 확인하세요.

반대로 서버에서 SMBv1 지원을 활성화하려면 다음 명령어를 실행합니다:

Set-SmbServerConfiguration -EnableSMB1Protocol $True -Force

참고로 Windows 7/8 및 Windows Server 2008 R2/2012에서 SMB 1.0 클라이언트를 비활성화하려면 서비스와 SMBv1 접근 드라이버를 다음 명령어로 함께 비활성화해야 합니다:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Windows 10에서 SMBv1 활성화/비활성화하는 방법

앞서 언급했듯이 모든 최신 Windows 10 빌드(1709 이상)에서는 SMB1 프로토콜 지원이 비활성화되어 있습니다(SMBv2 프로토콜을 통한 게스트 액세스도 함께 비활성화됨).

Windows 10에서는 DISM 명령어로 SMBv1 프로토콜 구성 요소의 상태를 확인할 수 있습니다:

Dism /online /Get-Features /format:table | find "SMB1Protocol"

실행 결과에서 모든 SMBv1 기능이 비활성화된 것을 확인할 수 있습니다:

SMB1Protocol                                | Disabled
SMB1Protocol-Client                        | Disabled
SMB1Protocol-Server                        | Disabled
SMB1Protocol-Deprecation                   | Disabled

Windows 10에서는 제어판(optionalfeatures.exe)에서도 SMB 1.0 기능을 관리할 수 있습니다. SMB 1.0/CIFS File Sharing Support 항목을 확장하면 다음 3가지 SMBv1 구성 요소가 표시됩니다:

  • SMB 1.0/CIFS Automatic Removal (자동 제거)
  • SMB 1.0/CIFS Client (클라이언트)
  • SMB 1.0/CIFS Server (서버)

기능 관리 창에서 SMBv1 클라이언트와 서버를 활성화하거나, 다음 명령어로 활성화할 수 있습니다:

Dism /online /Enable-Feature /FeatureName:"SMB1Protocol"
Dism /online /Enable-Feature /FeatureName:"SMB1Protocol-Client"
Dism /online /Enable-Feature /FeatureName:"SMB1Protocol-Server"

PowerShell을 사용해 Windows 10에서 SMBv1 서버와 클라이언트를 활성화할 수도 있습니다:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Server
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

주의할 점은, SMBv1 클라이언트를 활성화한 후 15일 동안 사용되지 않으면 자동으로 비활성화된다는 것입니다. 단, SMBv1 클라이언트의 자동 제거는 일회성 작업이므로 관리자가 다시 수동으로 활성화하면 자동으로 비활성화되지 않습니다.

Windows 10에서 SMB1 클라이언트와 서버 지원을 비활성화하려면 다음 DISM 명령어를 실행합니다:

Dism /online /Disable-Feature /FeatureName:"SMB1Protocol"
Dism /online /Disable-Feature /FeatureName:"SMB1Protocol-Client"
Dism /online /Disable-Feature /FeatureName:"SMB1Protocol-Server"

Windows 10에서 SMBv1 클라이언트를 비활성화한 후, SMBv1만 지원하는 파일 서버의 공유 폴더(SMBv2/v3가 비활성화되었거나 지원되지 않는 경우)에 접근하면 다음과 같은 오류가 발생할 수 있습니다:

  • 0x80070035 The network path was not found (네트워크 경로를 찾을 수 없음)
  • Unable to connect to file shares because it is not secure. This share requires the obsolete SMB1 protocol, which is not secure and could expose your system to attacks (보안상의 이유로 파일 공유에 연결할 수 없습니다. 이 공유는 안전하지 않은 구식 SMB1 프로토콜을 요구합니다)
  • You can't connect to the file share because it's not secure. This share requires the obsolete SMB1 protocol, which is unsafe and could expose your system to attack. Your system requires SMB2 or higher (파일 공유에 연결할 수 없습니다. 이 시스템에는 SMB2 이상이 필요합니다)

또한 SMBv1 클라이언트를 비활성화하면 레거시 NetBIOS 프로토콜을 통해 네트워크상의 장치를 검색하는 데 사용되던 Computer Browser 서비스가 중단됩니다. Windows 10 네트워크에서 주변 컴퓨터가 올바르게 표시되도록 하려면 Function Discovery Provider Host 서비스를 별도로 구성해야 합니다.

그룹 정책으로 SMBv1 클라이언트·서버 비활성화

Active Directory 도메인 환경에서는 그룹 정책(GPO)을 사용해 모든 서버와 컴퓨터에서 SMBv1을 비활성화할 수 있습니다. 표준 Windows 그룹 정책에는 별도의 SMB 구성 정책이 없으므로, 레지스트리 정책을 통해 비활성화해야 합니다.

  1. 그룹 정책 관리 콘솔(gpmc.msc)을 열고 새 GPO(disableSMBv1)를 생성한 뒤, SMB1을 비활성화하려는 컴퓨터가 포함된 OU에 연결합니다.
  2. 정책 편집 모드로 전환하고 GPO 섹션에서 컴퓨터 구성(Computer Configuration)기본 설정(Preferences)Windows 설정(Windows Settings)레지스트리(Registry)로 이동합니다.
  3. 다음 설정으로 새 레지스트리 항목을 만듭니다:
    작업(Action): Update
    하이브(Hive): HKEY_LOCAL_MACHINE
    키 경로(Key Path): SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
    값 이름(Value name): SMB1
    값 유형(Value type): REG_DWORD
    값 데이터(Value data): 0
    이 정책은 모든 컴퓨터에서 레지스트리를 통해 SMBv1 서버 구성 요소 지원을 비활성화합니다. WMI 필터를 사용하면 특정 Windows 버전을 이 정책에서 제외할 수도 있습니다.

GPO를 통해 도메인 컴퓨터에서 SMB 클라이언트까지 비활성화하려면 추가로 두 개의 레지스트리 매개변수를 생성합니다:

  • 레지스트리 키 HKLM\SYSTEM\CurrentControlSet\services\mrxsmb10에 값이 4Start 매개변수(REG_DWORD 유형) 추가;
  • 레지스트리 키 HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation에 값이 Bowser, MRxSmb20, NSI(각 값을 새 줄에 입력)인 DependOnService 매개변수(REG_MULTI_SZ 유형) 추가.

이후 클라이언트에서 그룹 정책을 갱신(gpupdate /force)하고 재부팅한 뒤, SMBv1 구성 요소가 완전히 비활성화되었는지 확인하면 됩니다.

참고로 Microsoft Security Compliance Toolkit에서 제공하는 Security Baseline GPO에는 MS Security Guide 관리 템플릿(SecGuide.adml, SecGuide.admx 파일)이 포함되어 있어, 다음 옵션으로 SMB 서버와 클라이언트를 손쉽게 비활성화할 수 있습니다:

  • Configure SMB v1 server (SMB v1 서버 구성);
  • Configure SMB v1 client driver (SMB v1 클라이언트 드라이버 구성).