NAS, Samba Linux 서버, Windows 10 또는 11에서 레거시 Windows 버전(Windows 7/XP/Server 2003)이 있는 컴퓨터에서 네트워크 공유 폴더를 열거나 매핑할 수 없는 경우 문제는 SMB의 레거시 및 안전하지 않은 버전일 가능성이 큽니다. 프로토콜은 현재 Windows 빌드에서 비활성화됩니다(SMB 프로토콜은 Windows에서 공유 네트워크 폴더 및 파일에 액세스하는 데 사용됨).
Microsoft는 모든 최신 Windows 버전에서 레거시 및 안전하지 않은 SMB 프로토콜 버전을 체계적으로 비활성화하고 있습니다. Windows 10 1709 및 Windows Server 2019(Datacenter 및 Standard 에디션 모두)부터 안전하지 않은 SMBv1 프로토콜은 기본적으로 비활성화되고 네트워크 공유 폴더에 대한 익명(게스트) 액세스도 비활성화됩니다.
취해야 할 구체적인 단계는 공유 폴더에 액세스할 때 Windows에 표시되는 오류와 네트워크 공유를 호스팅하는 원격 SMB 서버의 설정에 따라 다릅니다.
보안 정책이 인증되지 않은 게스트 액세스를 차단하기 때문에 공유 폴더에 액세스할 수 없음
Windows 10 빌드 1709 Fall Creators Update(Enterprise 및 Education 버전)부터 사용자가 이웃 컴퓨터에서 네트워크 공유 폴더를 열려고 할 때 오류가 표시된다고 불평하기 시작했습니다.
Restoring Network Connections An error occurs when you try to open a network folder: An error occurred while reconnecting Y: to \\nas1\share Microsoft Windows Network: You can’t access this shared folder because your organization’s security policies block unauthenticated guest access. These policies help protect your PC from unsafe or malicious devices on the network.
또한 Windows 8.1, Windows 7 또는 최대 빌드가 1709인 Windows 10이 설치된 다른 컴퓨터에서는 동일한 공유 네트워크 폴더가 정상적으로 열립니다. 요점은 최신 버전의 Windows 10(빌드 1709+)에서 SMBv2 프로토콜을 사용하는 공유 폴더에 대한 게스트 액세스가 기본적으로 비활성화되어 있다는 것입니다. 게스트(익명)는 인증 없이 공유 네트워크 폴더에 액세스하는 것을 의미합니다. SMBv1/v2 프로토콜을 통해 게스트 계정으로 네트워크 폴더에 액세스할 때 SMB 서명 및 암호화와 같은 트래픽 보호 방법이 사용되지 않으므로 세션이 MiTM(man-in-the-middle) 공격에 취약합니다.
이러한 변경 사항은 Windows 10 Home 버전에 적용되지 않으며 게스트 계정에서 네트워크 액세스가 제대로 작동합니다.게스트 계정에서 SMB v2 프로토콜을 사용하여 공유 네트워크 폴더를 열려고 하면 컴퓨터(SMB 클라이언트)의 이벤트 뷰어에 다음 오류가 나타납니다.
Log Name: Microsoft-Windows-SmbClient/Security Source: Microsoft-Windows-SMBClient Event ID: 31017 Rejected an insecure guest logon.
이 오류는 컴퓨터(클라이언트)가 게스트 계정에서 인증되지 않은 액세스를 차단함을 나타냅니다.
대부분의 경우 오래된 NAS 장치에 액세스할 때(일반적으로 설정을 쉽게 하기 위해 게스트 액세스가 활성화됨) 또는 익명(게스트)으로 레거시 Windows 7/2008 R2/Windows XP/2003 장치에서 공유 폴더를 열 때 이 문제에 직면할 수 있습니다. 액세스가 활성화되었습니다(다양한 Windows 버전에서 지원되는 SMB 프로토콜 버전 표 참조).
Microsoft는 공유 네트워크 폴더를 호스팅하는 원격 컴퓨터 또는 NAS 장치에서 설정을 변경할 것을 권장합니다. 네트워크 공유를 SMBv3 모드로 전환하는 것이 좋습니다. 또는 장치에서 SMBv2 프로토콜만 지원하는 경우 인증으로 액세스를 구성합니다. 이것이 문제를 해결하는 가장 정확하고 안전한 방법입니다.
공유 폴더가 저장된 장치에서 게스트 액세스 비활성화:
- NAS 기기 – NAS 장치 설정에서 게스트 액세스 비활성화(공급업체 및 모델에 따라 다름),
- Linux의 Samba 서버 — Linux의 Samba와 네트워크 폴더를 공유하는 경우 [global] 섹션 아래의 smb.conf 구성 파일에 다음 문자열을 추가합니다.
map to guest = never
공유 폴더 구성 섹션에서 익명 액세스를 제한합니다.guest ok = no
- Windows에서는 제어판 -> 네트워크 및 공유 센터 -> 고급 공유 설정을 통해 암호로 보호된 네트워크 폴더 및 프린터 공유를 활성화할 수 있습니다. '비밀번호로 보호된 공유' 섹션의 모든 네트워크에서 값을 '비밀번호로 보호된 공유 켜기'로 변경합니다. . 이 경우 네트워크 공유 폴더에 대한 익명(게스트) 액세스가 비활성화되고 로컬 사용자를 생성하고 공유 폴더 및 프린터에 대한 액세스 권한을 부여하고 이 계정을 사용하여 원격 컴퓨터의 공유 폴더에 연결해야 합니다. .
다른 방법이 있습니다. 게스트 계정에서 공유 네트워크 폴더에 대한 액세스를 허용하도록 Windows 장치의 설정을 변경할 수 있습니다. 이 방법은 임시 해결 방법(!!!)으로만 사용해야 합니다. 인증 없이 폴더에 액세스하면 컴퓨터 보안이 크게 저하되기 때문입니다.
컴퓨터에서 게스트 액세스를 활성화하려면 그룹 정책 편집기(gpedit.msc
). 컴퓨터 구성 -> 관리 템플릿 -> 네트워크 -> Lanman 워크스테이션 섹션으로 이동합니다. 안전하지 않은 게스트 로그온 활성화 정책을 찾아 활성화합니다. 이 정책 옵션은 SMB 클라이언트가 SMB 서버에 대한 안전하지 않은 게스트 로그온을 허용할지 여부를 결정합니다.
다음 명령을 사용하여 Windows에서 그룹 정책 설정을 업데이트합니다.
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 프로토콜 버전만 서버 측에서 지원된다는 것입니다. SMBv1 클라이언트는 Windows 10 1709+에서 기본적으로 비활성화되어 있으므로 공유 폴더를 열거나 네트워크 드라이브를 매핑하려고 할 때 다음 오류가 발생할 수 있습니다.
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.
이 경우 주변 컴퓨터가 로컬 네트워크에 표시되지 않을 수 있으며, UNC 경로로 공유 폴더를 열 때 오류 0x80070035가 나타날 수 있습니다.
오류 메시지는 네트워크 공유 폴더가 SMBv1 클라이언트 액세스 프로토콜만 지원한다는 것을 명확하게 보여줍니다. 이 경우 원격 SMB 장치를 재구성하여 최소한 SMBv2(올바르고 안전한 방법)를 사용하도록 해야 합니다.
Linux에서 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
네트워크 장치(NAS, Windows XP, Windows Server 2003)가 SMB1 프로토콜만 지원하는 경우 별도의 SMB1Protocol-Client Windows 10/11 또는 Windows Server의 기능. 하지만 이것은 권장하지 않습니다!!!
원격 장치에 연결하려면 SMBv1이 필요하고 Windows 장치에서 이 프로토콜이 비활성화된 경우 이벤트 뷰어에 오류가 나타납니다.Log Name: Microsoft-Windows-SmbClient/Security Source: Microsoft-Windows-SMBClient Event ID: 32000 Description: SMB1 negotiate response received from a remote device when SMB1 cannot be negotiated by the local computer.
관리자 권한 PowerShell 프롬프트를 실행하고 SMB1Protocol-Client가 비활성화되었는지 확인합니다(State: Disabled
):
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client
SMBv1 클라이언트 프로토콜 활성화(재부팅 필요):
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client
optionalfeatures.exe
에서 Windows 10 및 11의 추가 기능을 활성화/비활성화할 수도 있습니다. . SMB 1.0/CIFS 파일 공유 지원을 확장하고 SMB 1.0/CIFS 클라이언트를 활성화합니다.
Windows 10 1809 이상에서 SMBv1 클라이언트는 15일 이상 사용하지 않으면 자동으로 제거됩니다(SMB 1.0/CIFS 자동 제거 구성 요소가 이에 대한 책임이 있습니다).
이 예에서는 SMBv1 클라이언트만 활성화했습니다. 레거시 클라이언트에서 공유 폴더를 호스팅하는 SMB 서버로 컴퓨터를 사용하지 않는 경우 SMB1Protocol-Server 기능을 활성화하지 마십시오.
SMBv1 클라이언트를 설치하면 문제 없이 공유 폴더나 프린터에 연결할 수 있습니다. 그러나 이 해결 방법은 컴퓨터 보안을 저하시키므로 권장되지 않는다는 점을 이해해야 합니다.
Windows에서 공유 폴더에 액세스할 수 없음:권한이 없습니다.
원격 컴퓨터의 공유 네트워크 폴더에 연결할 때 오류가 나타날 수 있습니다.
Network Error Windows cannot access \\PC12\Share You do not have permission to access \\PC12\Share. Contact your network administrator to request access.
이 오류가 발생하면 다음을 수행해야 합니다.
- 공유 폴더에 액세스하는 데 사용하는 사용자에게 원격 공유에 대한 액세스 권한이 부여되었는지 확인하십시오. 서버에서 공유 폴더의 속성을 열고 사용자에게 최소한 읽기 권한이 있는지 확인하십시오. 또한 PowerShell을 사용하여 원격 호스트에 대한 공유 권한을 확인할 수 있습니다.
Get-SmbShareAccess -Name "tools"
그런 다음 NTFS 폴더 권한을 확인합니다.get-acl C:\tools\ |fl
필요한 경우 폴더의 권한을 수정하거나 속성을 공유합니다. - 네트워크 폴더에 액세스하려면 올바른 사용자 이름과 암호를 사용하고 있는지 확인하십시오. 사용자 이름과 암호를 묻는 메시지가 표시되지 않으면 Windows 자격 증명 관리자에서 원격 공유에 대해 저장된(캐시된) 자격 증명을 제거해 보십시오.
rundll32.exe keymgr.dll, KRShowKeyMgr
명령을 실행합니다. 액세스하려는 원격 컴퓨터에 대해 캐시된 자격 증명을 삭제합니다.
다음에 공유 폴더에 연결할 때 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. . 원격 컴퓨터의 네트워크 공유 폴더에 액세스하기 위한 자격 증명을 지정합니다. 자격 증명 관리자에 저장하거나 수동으로 추가할 수 있습니다.
기타 수정 사항:Windows에서 공유 폴더에 액세스할 수 없음
이 섹션에서는 Windows에서 네트워크 폴더를 여는 문제를 해결하는 추가 방법을 제공합니다.
- 원격 컴퓨터가 SMB 프로토콜(TCP 포트 445)을 사용하여 공유 네트워크 폴더로 들어오는 연결을 허용하는지 확인하십시오. Test-NetConnection 명령을 사용하여 원격 컴퓨터에서 포트 445의 가용성을 확인할 수 있습니다.
Test-NetConnection -ComputerName HomePC212 -Port 445
cmdlet이TcpTestSucceeded : False
를 반환하는 경우 , 이는 원격 컴퓨터의 네트워크 폴더에 대한 액세스가 방화벽에 의해 차단되고 있음을 의미합니다. 바이러스 백신 또는 방화벽(타사 또는 내장 Windows Defender 방화벽)에 의해 연결이 차단되었을 수 있습니다. Windows Defender를 사용하는 경우 파일 및 프린터 공유를 활성화합니다. 규칙(제어판\시스템 및 보안\Windows Defender 방화벽\허용된 앱\앱이 Windows 방화벽을 통해 통신하도록 허용 ) 세 가지 네트워크 프로필 모두에 대한 파일 공유 호스트에 있습니다.
또는 PowerShell로 방화벽 규칙 생성:New-NetFirewallRule -DisplayName "Allow_SBM-FileSharing_In" -Direction Inbound -Protocol TCP –LocalPort 445 -Action Allow
- 매핑된 네트워크 드라이브(폴더)를 열 수 없는 경우 Windows 자격 증명 관리자에서 저장된 캐시된 자격 증명을 제거하고 매핑된 네트워크 드라이브를 삭제합니다(
Net Use * /delete
명령)을 다시 연결합니다. - 폴더에 액세스하려면 이름 대신 원격 컴퓨터의 IP 주소를 사용하십시오. 예:
Win+R
->\\192.168.12.20
-> 알겠습니다. - 컴퓨터가 동일한 작업 그룹에 가입되어 있는지 확인하십시오. 컴퓨터의 작업 그룹 이름은 PowerShell을 사용하여 찾을 수 있습니다.
Get-WmiObject Win32_ComputerSystem).domain
- TCP/IP 스택 설정을 재설정하고 컴퓨터의 IP 주소를 업데이트합니다.
netsh int ip reset
netsh winsock reset
ipconfig /flushdns
ipconfig /release
ipconfig /renew