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

Windows 10/11에서 공유 폴더 접근·네트워크 드라이브 매핑이 안 될 때 해결 방법 총정리

Windows 10 또는 Windows 11에서 NAS, Samba 리눅스 서버, 구형 Windows(Windows 7/XP/Server 2003) 컴퓨터의 공유 폴더를 열거나 네트워크 드라이브를 매핑할 수 없다면, 가장 유력한 원인은 최신 Windows 빌드에서 레거시(구형)이자 보안에 취약한 SMB 프로토콜 버전이 기본적으로 비활성화되어 있기 때문입니다. SMB 프로토콜은 Windows에서 네트워크 공유 폴더와 파일에 접근할 때 사용되는 핵심 프로토콜입니다.

마이크로소프트는 최신 Windows 버전 전반에서 구형·불안전한 SMB 프로토콜 버전을 체계적으로 비활성화해 왔습니다. Windows 10 1709 및 Windows Server 2019(Datacenter/Standard 모두)부터는 안전하지 않은 SMBv1 프로토콜과 익명(게스트) 네트워크 공유 접근이 기본적으로 차단됩니다.

해결 방법은 Windows에서 표시되는 오류 메시지와 공유 폴더를 호스팅하는 원격 SMB 서버의 설정에 따라 달라집니다.

보안 정책으로 인증되지 않은 게스트 액세스가 차단되어 공유 폴더에 접근할 수 없는 경우

Windows 10 빌드 1709(Fall Creators Update, Enterprise/Education 에디션)부터 인접 컴퓨터의 네트워크 공유 폴더를 열려고 할 때 다음과 같은 오류가 발생한다는 사용자 불만이 늘었습니다.

네트워크 연결 복원 중
Y:를 \\nas1\share에 다시 연결하는 동안 오류가 발생했습니다.
Microsoft Windows Network: 조직의 보안 정책에 따라 인증되지 않은 게스트 액세스가 차단되어 이 공유 폴더에 액세스할 수 없습니다. 이러한 정책은 네트워크상의 안전하지 않거나 악성인 장치로부터 PC를 보호하는 데 도움이 됩니다.

흥미로운 점은 Windows 8.1, Windows 7 또는 빌드 1709 이전의 Windows 10이 설치된 다른 컴퓨터에서는 동일한 공유 폴더가 정상적으로 열린다는 것입니다. 그 이유는 Windows 10 빌드 1709 이상에서는 SMBv2 프로토콜을 통한 공유 폴더 게스트 액세스가 기본적으로 비활성화되어 있기 때문입니다. 게스트(익명) 액세스란 인증 없이 공유 네트워크 폴더에 접근하는 방식을 의미합니다. SMBv1/v2 프로토콜로 게스트 계정을 통해 네트워크 폴더에 접근하면 SMB 서명(Signing)이나 암호화 같은 트래픽 보호 기법이 적용되지 않아 세션이 중간자(MiTM, Man-in-the-Middle) 공격에 노출되기 쉽습니다.

다만 이러한 변경 사항은 Windows 10 Home 에디션에는 적용되지 않으므로, Home 에디션에서는 게스트 계정을 통한 네트워크 액세스가 여전히 정상 작동합니다.

SMBv2 프로토콜로 게스트 계정을 사용해 공유 폴더에 접근하려고 하면 클라이언트 컴퓨터의 이벤트 뷰어(SMB Client 로그)에 다음 오류가 기록됩니다.

로그 이름: Microsoft-Windows-SmbClient/Security
원본: Microsoft-Windows-SMBClient
이벤트 ID: 31017
Rejected an insecure guest logon. (안전하지 않은 게스트 로그온이 거부되었습니다.)

이 오류는 클라이언트 컴퓨터가 게스트 계정을 통한 비인증 액세스를 차단하고 있다는 의미입니다.

대부분의 경우 이 문제는 구형 NAS 장치(설정 편의를 위해 게스트 액세스가 활성화된 경우가 많음)에 접근하거나, 익명(게스트) 액세스가 허용된 구형 Windows 7/2008 R2/XP/2003 장치의 공유 폴더를 열 때 발생합니다.

권장 해결책: 원격 장치에서 게스트 액세스 비활성화

마이크로소프트는 공유 폴더를 호스팅하는 원격 컴퓨터나 NAS 장치의 설정을 변경할 것을 권장합니다. 가능하면 네트워크 공유를 SMBv3 모드로 전환하고, 장치가 SMBv2만 지원한다면 인증 기반 액세스를 구성하는 것이 가장 올바르고 안전한 해결 방법입니다.

공유 폴더가 저장된 장치에서 게스트 액세스를 비활성화하는 방법은 다음과 같습니다.

  • NAS 장치: 제조사와 모델에 따라 다르지만, NAS 관리 설정에서 게스트 액세스를 비활성화합니다.
  • 리눅스 Samba 서버: smb.conf 설정 파일의 [global] 섹션에 map to guest = never를 추가하고, 공유 폴더 설정 섹션에서 guest ok = no로 지정하여 익명 액세스를 제한합니다.
  • Windows: 제어판 → 네트워크 및 공유 센터 → 고급 공유 설정에서 암호 보호 공유를 활성화합니다. '모든 네트워크'의 '암호 보호 공유' 항목을 '암호 보호 공유 켜기'로 변경하세요. 이렇게 하면 익명(게스트) 액세스가 차단되며, 로컬 사용자를 생성하고 공유 폴더·프린터에 대한 권한을 부여한 뒤 해당 계정으로 원격 컴퓨터의 공유 폴더에 연결해야 합니다.

임시 방편: 클라이언트에서 게스트 액세스 허용 (비권장)

다른 방법으로, Windows 장치의 설정을 변경하여 게스트 계정으로 공유 폴더에 접근할 수 있도록 허용할 수 있습니다. 단, 이 방법은 인증 없는 폴더 액세스가 컴퓨터 보안을 크게 저하시키므로 반드시 임시 workaround로만 사용해야 합니다(!!!).

클라이언트에서 게스트 액세스를 허용하려면 그룹 정책 편집기(gpedit.msc)를 사용합니다. 컴퓨터 구성 → 관리 템플릿 → 네트워크 → Lanman 워크스테이션으로 이동한 후, 안전하지 않은 게스트 로그온 사용(Enable insecure guest logons) 정책을 찾아 '사용'으로 설정합니다. 이 정책은 SMB 클라이언트가 SMB 서버에 대한 안전하지 않은 게스트 로그온을 허용할지 여부를 결정합니다.

변경 후 다음 명령으로 그룹 정책을 즉시 적용합니다.

gpupdate /force

로컬 GPO 편집기가 없는 Windows 10 Home에서는 레지스트리 편집기를 통해 직접 동일한 설정을 적용할 수 있습니다.

HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters "AllowInsecureGuestAuth"=dword:1

또는 아래 명령을 사용할 수도 있습니다.

reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f
reg add HKLM\Software\Policies\Microsoft\Windows\LanmanWorkstation /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f

구형 SMB1 프로토콜이 필요하여 파일 공유에 연결할 수 없는 경우

Windows 10에서 네트워크 폴더에 접근할 때 발생할 수 있는 또 다른 문제는 서버 측에서 SMBv1 프로토콜만 지원하는 경우입니다. Windows 10 1709 이상에서는 SMBv1 클라이언트가 기본적으로 비활성화되어 있으므로, 공유 폴더를 열거나 네트워크 드라이브를 매핑하려고 할 때 다음 오류가 나타날 수 있습니다.

파일 공유에 연결할 수 없습니다. 이 공유는 안전하지 않으며 시스템을 공격에 노출시킬 수 있는 구형 SMB1 프로토콜을 필요로 합니다. 시스템에 SMB2 이상이 필요합니다.

이 경우 로컬 네트워크에서 인접 컴퓨터가 표시되지 않거나, UNC 경로로 공유 폴더를 열 때 0x80070035 오류가 발생하기도 합니다.

오류 메시지가 보여주듯 해당 네트워크 공유 폴더는 SMBv1 클라이언트 프로토콜만 지원합니다. 이때는 원격 SMB 장치를 최소한 SMBv2를 사용하도록 재구성하는 것이 올바르고 안전한 방법입니다.

리눅스에서 Samba 서버로 파일을 공유하는 경우 smb.conf 파일에 지원하는 최소 SMB 프로토콜 버전을 다음과 같이 지정할 수 있습니다.

[global]
server min protocol = SMB2_10
client max protocol = SMB3
client min protocol = SMB2_10
encrypt passwords = true
restrict anonymous = 2

Windows 7/Windows Server 2008 R2에서는 PowerShell 명령으로 레지스트리를 통해 SMB 1 프로토콜을 비활성화하고 SMBv2를 활성화할 수 있습니다.

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force

Windows 8.1/Windows Server 2012 R2에서는 다음 명령으로 SMBv1을 비활성화하고 SMBv2/SMBv3를 허용할 수 있습니다(네트워크 연결에 개인 또는 도메인 프로필이 사용 중인지 확인하세요).

Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol"
Set-SmbServerConfiguration –EnableSMB2Protocol $true

최후의 수단: SMBv1 클라이언트 활성화 (비권장)

네트워크 장치(NAS, Windows XP, Windows Server 2003 등)가 SMB1 프로토콜만 지원한다면, Windows 10/11 또는 Windows Server에서 별도의 SMB1Protocol-Client 기능을 활성화할 수 있습니다. 단, 이 방법은 절대 권장되지 않습니다!!!

원격 장치가 SMBv1 연결을 요구하는데 클라이언트에서 이 프로토콜이 비활성화된 경우, 이벤트 뷰어에 다음 오류가 기록됩니다.

로그 이름: Microsoft-Windows-SmbClient/Security
원본: Microsoft-Windows-SMBClient
이벤트 ID: 32000
설명: 로컬 컴퓨터가 SMB1을 협상할 수 없는 상태에서 원격 장치로부터 SMB1 협상 응답을 받았습니다.

관리자 권한 PowerShell을 실행하고 SMB1Protocol-Client가 비활성화 상태(State: Disabled)인지 확인합니다.

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

SMBv1 클라이언트 프로토콜을 활성화합니다(재부팅 필요).

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

Windows 10/11에서는 optionalfeatures.exe(Windows 기능 켜기/끄기)를 통해서도 추가 기능을 활성화/비활성화할 수 있습니다. 'SMB 1.0/CIFS 파일 공유 지원'을 확장하고 'SMB 1.0/CIFS 클라이언트'를 체크하면 됩니다.

참고로 Windows 10 1809 이상에서는 SMBv1 클라이언트가 15일 이상 사용되지 않으면 자동으로 제거됩니다('SMB 1.0/CIFS 자동 제거' 구성 요소가 담당).

이 예제에서는 SMBv1 클라이언트만 활성화했습니다. 컴퓨터가 구형 클라이언트를 위한 SMB 서버 역할을 하지 않는다면 SMB1Protocol-Server 기능은 활성화하지 마세요.

SMBv1 클라이언트 설치 후에는 공유 폴더나 프린터에 문제없이 연결할 수 있을 것입니다. 다만 이러한 임시 방편은 컴퓨터 보안을 저하시키므로 권장되지 않는다는 점을 반드시 기억하세요.

권한이 없어서 공유 폴더에 액세스할 수 없는 경우

원격 컴퓨터의 공유 네트워크 폴더에 연결할 때 다음과 같은 오류가 나타날 수 있습니다.

네트워크 오류
Windows에서 \\PC12\Share에 액세스할 수 없습니다.
\\PC12\Share에 액세스할 권한이 없습니다. 네트워크 관리자에게 문의하여 액세스 권한을 요청하십시오.

이 오류가 발생하면 다음 두 가지를 확인해야 합니다.

  1. 공유 폴더 접근 권한 확인: 공유 폴더에 접근하는 데 사용하는 사용자에게 원격 공유에 대한 액세스 권한이 부여되어 있는지 확인합니다. 서버에서 공유 폴더 속성을 열어 사용자에게 최소한 읽기 권한이 있는지 살펴보세요. PowerShell로 원격 호스트의 공유 권한도 확인할 수 있습니다.
    Get-SmbShareAccess -Name "tools"
    이어서 NTFS 폴더 권한도 확인합니다.
    get-acl C:\tools\ |fl
    필요하면 폴더 및/또는 공유 속성에서 권한을 수정합니다.
  2. 자격 증명 확인: 네트워크 폴더에 접근할 때 올바른 사용자 이름과 암호를 사용하고 있는지 확인합니다. 사용자 이름과 암호 입력 프롬프트가 나타나지 않는다면, Windows 자격 증명 관리자에서 원격 공유에 대해 저장된(캐시된) 자격 증명을 삭제해 보세요. rundll32.exe keymgr.dll, KRShowKeyMgr 명령을 실행한 후 접근하려는 원격 컴퓨터의 캐시된 자격 증명을 삭제합니다.
    다음에 공유 폴더에 연결하면 사용자 이름과 암호를 묻는 프롬프트가 나타납니다. 원격 컴퓨터의 네트워크 공유 폴더에 접근하기 위한 자격 증명을 입력하고, 자격 증명 관리자에 저장하거나 수동으로 추가할 수 있습니다.

기타 해결 방법: Windows에서 공유 폴더에 접근할 수 없을 때

이 섹션에서는 Windows에서 네트워크 폴더를 여는 데 문제가 있을 때 시도해 볼 수 있는 추가적인 문제 해결 방법을 소개합니다.

  • SMB 포트(445) 연결 확인: 원격 컴퓨터가 SMB 프로토콜(TCP 포트 445)을 통한 공유 폴더 인바운드 연결을 허용하는지 확인합니다. Test-NetConnection 명령으로 원격 컴퓨터의 445 포트 가용성을 점검할 수 있습니다.
    Test-NetConnection -ComputerName HomePC212 -Port 445
    cmdlet이 TcpTestSucceeded : False를 반환하면 방화벽이 원격 컴퓨터의 네트워크 폴더 접근을 차단하고 있다는 뜻입니다. 백신 프로그램이나 방화벽(서드파티 또는 Windows Defender 방화벽)이 연결을 막고 있을 수 있습니다. Windows Defender를 사용 중이라면 파일 공유 호스트에서 세 가지 네트워크 프로필 모두에 대해 '파일 및 프린터 공유' 규칙을 활성화하세요(제어판 → 시스템 및 보안 → Windows Defender 방화벽 → 앱 허용).
    또는 PowerShell로 방화벽 규칙을 생성할 수 있습니다.
    New-NetFirewallRule -DisplayName "Allow_SBM-FileSharing_In" -Direction Inbound -Protocol TCP –LocalPort 445 -Action Allow
  • 매핑된 드라이브 재연결: 매핑된 네트워크 드라이브(폴더)를 열 수 없다면, Windows 자격 증명 관리자에서 저장된 캐시 자격 증명을 제거하고(Net Use * /delete 명령으로) 매핑된 드라이브를 삭제한 뒤 다시 연결해 보세요.
  • IP 주소로 접근 시도: 컴퓨터 이름 대신 IP 주소를 사용해 폴더에 접근해 보세요. 예: Win+R\\192.168.12.20 → 확인.
  • 작업 그룹 확인: 컴퓨터들이 동일한 작업 그룹에 속해 있는지 확인합니다. PowerShell로 컴퓨터의 작업 그룹 이름을 확인할 수 있습니다.
    Get-WmiObject Win32_ComputerSystem).domain
  • TCP/IP 스택 초기화: TCP/IP 스택 설정을 초기화하고 컴퓨터의 IP 주소를 갱신합니다.
    netsh int ip reset
    netsh winsock reset
    ipconfig /flushdns
    ipconfig /release
    ipconfig /renew