로컬 계정을 통한 네트워크 액세스가 위험한 이유
Active Directory 환경에서 로컬 계정(로컬 관리자 계정 포함)으로 네트워크상의 다른 컴퓨터에 접근하는 것은 여러 가지 이유로 권장되지 않습니다. 많은 컴퓨터에서 동일한 로컬 관리자 사용자 이름과 비밀번호가 사용되는 경우가 많아, 단 한 대의 컴퓨터라도 침해되면 여러 장치가 동시에 위험에 노출될 수 있습니다. 이것이 바로 Pass-the-hash 공격의 위협입니다. 또한 로컬 계정을 이용한 네트워크 리소스 접근은 AD 도메인 컨트롤러에 기록되지 않기 때문에, 사용자 식별과 중앙 집중식 모니터링이 매우 어렵습니다.
이러한 위험을 줄이기 위해 관리자는 기본 로컬 Windows Administrator 계정의 이름을 변경할 수 있습니다. 도메인 내 모든 컴퓨터의 로컬 관리자 비밀번호를 주기적으로 변경하려면 MS LAPS(Local Administrator Password Solution) 도구를 활용할 수도 있습니다. 그러나 한 대의 컴퓨터에 로컬 계정이 두 개 이상 존재할 수 있기 때문에, 이런 방법만으로는 모든 로컬 사용자 계정의 네트워크 액세스를 제한하는 문제를 해결할 수 없습니다.
Deny access to this computer from the network 정책을 사용하면 로컬 계정의 네트워크 액세스를 제한할 수 있지만, 이 정책은 네트워크 액세스를 거부할 모든 계정을 일일이 명시해야 한다는 번거로움이 있습니다.
Windows 8.1과 Windows Server 2012 R2부터는 새로운 SID를 가진 두 개의 well-known 보안 그룹이 추가되었습니다. 하나는 모든 로컬 사용자를, 다른 하나는 모든 로컬 관리자를 포함합니다.
| S-1-5-113 | NT AUTHORITY\Local account | 모든 로컬 계정 |
| S-1-5-114 | NT AUTHORITY\Local account and member of Administrators group | 관리자 권한을 가진 모든 로컬 계정 |
이제 이 보안 그룹들의 공통 SID를 활용해 로컬 계정의 액세스를 손쉽게 제한할 수 있습니다. 이 그룹들은 로컬 계정으로 컴퓨터에 로그온할 때 사용자의 액세스 토큰에 자동으로 추가됩니다.
Windows 10/Windows Server 2016에서 로컬 관리자 계정에 두 개의 새 보안 그룹(NT AUTHORITY\Local account (SID S-1-5-113), NT AUTHORITY\Local account and member of Administrators group (SID S-1-5-114))이 할당되어 있는지 확인하려면 아래 명령을 실행합니다:
whoami /all
2014년 6월 배포된 업데이트 KB 2871997을 설치하면 Windows 7/8 및 Windows Server 2008 R2/Windows Server 2012에서도 이러한 기본 제공 로컬 보안 그룹을 사용할 수 있습니다.
PowerShell로 보안 그룹 존재 여부 확인
다음 PowerShell 스크립트를 사용하면 SID를 기준으로 해당 보안 그룹이 Windows 장치에 존재하는지 확인할 수 있습니다:
$objSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-113")
$objAccount = $objSID.Translate([System.Security.Principal.NTAccount])
$objAccount.Value스크립트가 NT Authority\Local account를 반환하면, 해당 로컬 그룹(SID S-1-5-113)이 컴퓨터에 존재한다는 의미입니다.
토큰에 이 SID들이 포함된 로컬 사용자 계정의 원격 네트워크 액세스를 차단하려면 GPO의 Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment 섹션에서 설정을 구성하면 됩니다.
로컬 사용자 및 관리자의 RDP(원격 데스크톱) 액세스 거부
Deny log on through Remote Desktop Services 정책을 사용하면 원격 데스크톱 서비스를 통한 컴퓨터 로그온이 명시적으로 거부될 사용자 및 그룹을 지정할 수 있습니다. 로컬 계정과 도메인 계정 모두에 대해 RDP 액세스를 거부할 수 있습니다.
기본적으로 Windows에서는 Administrators 그룹과 로컬 Remote Desktop Users 그룹의 멤버에게 RDP 액세스가 허용됩니다.
로컬 사용자(로컬 관리자 포함)에 대해서만 RDP 연결을 제한하려면 로컬 GPO 편집기(gpedit.msc)를 엽니다. Active Directory 도메인의 컴퓨터들에 적용하려면 도메인 그룹 정책 편집기(gpmc.msc)를 사용하세요. User Rights Assignment 섹션으로 이동하여 Deny log on through Remote Desktop Services 정책을 편집합니다.
여기에 기본 제공 로컬 보안 그룹 "Local account and member of Administrators group"과 "Local account"를 추가합니다. 이후 gpupdate /force 명령을 실행해 로컬 그룹 정책 설정을 갱신합니다.
거부(Deny) 정책은 Allow log on through Remote Desktop Services 정책보다 우선합니다. 사용자나 그룹이 두 정책 모두에 포함된 경우, 해당 사용자의 RDP 액세스는 거부됩니다.
이제 로컬 사용자 계정으로 RDP 연결을 시도하면 다음과 같은 오류가 표시됩니다:
To sign in remotely, you need the right to sign in through Remote Desktop Services. By default, members of the Remote Desktop Users group have this right. If the group you're in doesn't have this right, or if the right has been removed from the Remote Desktop Users group, you need to be granted this right manually.
네트워크를 통한 컴퓨터 액세스 거부
Deny access to this computer from the network 정책을 사용하면 로컬 자격 증명을 통한 컴퓨터의 네트워크 액세스를 거부할 수 있습니다.
"Local account"와 "Local account and member of Administrators group" 로컬 그룹을 Deny access to this computer from the network 정책에 추가합니다. 또한 익명(anonymous) 액세스와 게스트 계정을 통한 액세스는 항상 거부해야 합니다.
도메인 환경에서는 Deny access to this computer from the network 정책을 활용해 워크스테이션과 도메인 멤버 서버에 대한 Domain Admins 및 Enterprise Admins 보안 그룹 계정의 액세스를 완전히 차단하는 것도 좋습니다. 이러한 계정은 도메인 컨트롤러에 접근할 때만 사용해야 하며, 이를 통해 관리자(권한 있는) 계정의 해시 탈취 및 권한 상승 위험을 크게 줄일 수 있습니다.
정책 적용 후에는 어떤 로컬 Windows 계정으로도 이 컴퓨터에 네트워크를 경유해 원격 연결할 수 없습니다. 로컬 계정으로 공유 네트워크 폴더에 접속하거나 네트워크 드라이브를 매핑하려고 하면 다음 오류가 발생합니다:
Microsoft Windows Network: Logon failure: the user has not been granted the requested logon type at this computer.
로컬 관리자 계정(.\administrator)으로 원격 데스크톱 연결을 시도하면 다음 오류 메시지가 나타납니다:
The system administrator has restricted the types of logon (network or interactive) that you may use. For assistance, contact your system administrator or technical support.
주의: Active Directory 도메인에 가입하지 않은 Windows 작업 그룹(workgroup) 컴퓨터에 이 정책을 적용하면, 로컬 로그온 방식으로만 해당 컴퓨터에 접속할 수 있습니다.
Windows 10에서 로컬 로그온 거부하기
Deny log on locally 정책을 사용하면 로컬 Windows 계정을 통한 컴퓨터/서버의 대화형(interactive) 로그인까지 제한할 수 있습니다. GPO의 User Rights Assignment 섹션으로 이동하여 Deny log on locally 정책을 편집하고 필요한 로컬 보안 그룹을 추가합니다.
거부 유형의 그룹 정책 설정은 특히 신중하게 다루어야 합니다. 잘못 구성하면 컴퓨터에 대한 액세스 자체를 잃을 수 있으며, 최악의 경우 로컬 GPO 설정 초기화가 필요할 수도 있습니다.
설정 후 사용자나 관리자가 로컬 계정으로 컴퓨터에 로그온하려고 하면 다음 메시지가 표시됩니다:
The sign-in method you are trying to use isn't allowed. For more info, contact your network administrator.
AD의 사용자 계정 설정에서 로그인이 허용된 컴퓨터 목록을 제한한 경우에도 동일한 메시지가 나타납니다.
이처럼 GPO 정책과 보안 SID를 활용하면 로컬 Windows 계정을 통한 컴퓨터 및 도메인 멤버 서버 접근을 효과적으로 차단하여, 기업 환경 전반의 보안 수준을 한층 강화할 수 있습니다.