Windows Vista의 사용자 계정 컨트롤(User Account Control : UAC) – 누구를 위한 기능인가? 그리고 왜?

Windows Vista의 사용자 계정 컨트롤(User Account Control : UAC) – 누구를 위한 기능인가? 그리고 왜?

** 백승주**

  • IT Pro Evangelist
  • Microsoft Korea

Windows Vista의 보안이 한층 강화되어 출시된다는 언론 매체의 뉴스가 하루에도 몇번씩 눈에 띄고, 커뮤니티와 여러 IT 종사자 그룹에서는 도대체 Windows Vista 보안의 핵심 기능은 무엇이냐? 라는 이야기가 화두에 오르고 있습니다.

그럴 때 마다 항상 나오는 이야기가 있습니다. UAC라는 기술이 보안의 상당 부분에 영향을 주고 있다…라고

Windows Vista를 사용하다가 보면, 다음과 같은 메시지들이 종종 뜨게 됩니다

<Administrators 그룹에 포함된 사용자가 관리자 권한이 필요한 프로그램을 실행한 경우>

<Administrators 그룹에 포함된 서명되지 않은 프로그램을 실행한 경우>

<서명되지 않은 프로그램을 Users 그룹에 소속된 사용자가 실행시>

<서명된 프로그램을 Users 그룹에 소속된 사용자가 실행시>

해당 Windows 보안 대화 상자는 보안 데스크톱(Secure Desktop – Ctrl+Alt+Del을 누를 때처럼, 다른 작업은 전혀 할 수 없고, 해당 대화 상자에만 나타나는) 상태에서 표시가 되게 됩니다.

여기서 계속이나 암호 입력을 해야만 해당 작업이 진행됩니다.

위의 대화 상자들이 바로 사용자 계정 컨트롤(UAC)에서 보여주는 대화 상자입니다.

UAC의 기본적인 형태는 간단합니다. 명시적인 Administrator 계정을 제외하고, 로그온 사용자를 일단 표준 사용자 권한(Users)으로 보는 것입니다. 기술적 표현으로는 Split Access Token(분리된 접근 토큰)이라고 합니다. Split Access Token은 모든 권한을 가진 보안 토큰을 생성한 후, 관리자 권한과 그룹을 뺀 다른 UAC 접근 토큰을 생성합니다. 이를 Linked Token이라고 합니다. Linked Token을 사용하던 사용자가 모든 권한이 필요한 경우, 이를 확인하는 절차를 밟은 후, 권한을 부여받게 됩니다.

내장 Administrators내 포함된 사용자에 대해서 Windows XP는 관리자와 동일한 권한을 주었었습니다. 이에 어떠한 제약도 없이 Windows의 모든 작업을 다 할 수 있었습니다. 그렇지만 Windows Vista에서는 틀립니다.

이유는 바로 보안때문입니다. 시스템의 안정성과 신뢰성을 해치는 것 - 악성 프로그램(Malware), 바이러스(Virus), 스파이웨어(Spyware) 들이 설치되는 형태를 분석한 결과, 이들이 모두 관리자 권한에서 실행되었기 때문에, 아무런 확인없이 설치가 된다는 것입니다. Windows XP, Windows 2000, 2003 시절, 많은 Microsoft의 세미나를 참가해 보면 ‘최소의 권한을 사용하십시오(LUA – Least-Privileged User Account’ 라는 권장을 들어보신 적이 있으실 것입니다. 그렇지만, 데스크톱의 경우 자신의 환경을 모두 제어하기 위해서는 Administrator의 권한이 필요하였고, 모든 계정을 자신의 데스크톱에 대해서는 Administrators 그룹에 넣어서 사용하였습니다. 결국 이러한 형태가 악성 프로그램들의 설치를 손쉽게 하는데 일조했습니다. (표준 사용자 권한을 가지고 작업을 해보신 분들은 아시겠지만, 일상적인 이용외 프로그램의 설치 및 시스템 변경은 불가능합니다.)

UAC의 첫번째 형태는 바로 Administrator 권한 사용시에 대한 확인입니다. 두가지 형태로 구분됩니다. Administrators내 사용자는 Administrator 권한을 사용하고자 할 경우(Administrators 그룹에 권한을 준 경우에도 포함됩니다.), 확인 창을 띄우는 것입니다. Users 그룹내 사용자는 관리자 계정에 대한 암호 확인을 통하게 됩니다.

그럼 관리자 권한이 필요한 경우는 대표적으로 다음과 같습니다. 1. %Systemdrive% 대한 핸들링 2. %Systemroot%(Windows), Program Files 폴더에 대한 쓰기 작업 3. 레지스트리 중 HKEY_LOCAL_MACHINE에 대한 쓰기 작업 4. Internet Explorer에 대한 각종 설정 변경등 5. Windows 시스템의 각종 설정들 (정확하게 Administrators에게 권한이 부여된 모든 작업)

<HKEY_LOCAL_MACHINE 레지스트리 키의 Administrators 권한>

UAC 환경을 이용하게 된다면, 보안은 획기적으로 상승하게 됩니다. 이를 이용하는 Windows 사용자는 더 나은 보안이라는 강점을 가지게 됩니다.

“UAC환경에서 일반 사용자 권한으로 프로그램이 동작한다면, 응용 프로그램 대부분이 동작하지 않지 않나요?”

Windows XP에서 일반 사용자 권한으로 Program files나 HKEY_LOCAL_MACHINE 레지스트리키를 쓰려고하면 접근 거부가 되었습니다. 해당 응용 프로그램을 Windows Vista에서 사용할 경우, 호환성 이슈가 발생할 수 있습니다.

이러한 호환성 이슈를 처리하고자 Windows Vista에는 Virtualization(가상화)기술이 적용되었습니다. 일반 사용자가 실행하는 레가시 응용 프로그램들이 권한을 가지지 않은 곳에 문서 파일이라던가, 어떠한 설정 파일을 저장하려고 할 경우, 이를 사용자별로 리디렉션하여, 가상화시킵니다.

Virtualization되는 폴더들의 목록은 다음과 같습니다. 1. %Windir% 2. %Windir%\System32 3. HKLM\Software. 4. %ProgramFiles%

이러한 폴더에 파일 저장을 요청하였을 경우 Windows Vista의 경우, 이를 사용자의 프로파일 내에 가상화 폴더(%UserProfile%\Appdata\Low\VirtualStore\)를 생성하여 저장하게 됩니다. 사용자의 응용 프로그램은 해당 가상화 폴더를 실제 폴더라고 인지하고 동작하게 됩니다.

<사용자 프로파일 내 가상화 폴더>

<가상화 폴더가 있음을 알리는 호환성 파일 버튼>

<레지스트리 가상화>

가상화 폴더에 악성 코드들이 저장될 가능성이 있다는 반문을 하시는 경우를 보았습니다. 이는 불가능합니다. 실행 파일(.exe, .vbs, .dll 등)은 가상화하지 않습니다.

가상화는 다중 사용자 시스템의 경우, 한 사용자가 시스템 전체 신뢰성을 망치는 것을 1차로 막을 수 있습니다. (가상화는 사용자 단위로 이루어지게 됩니다.) 동시에 일반 사용자 권한으로 레가시 응용 프로그램에 대한 호환성을 높일 수 있습니다.

UAC는 프로그램 실행(설치)시 파일에 대한 전자 서명을 확인합니다. 대부분의 프로그램 개발 벤더는 프로그램 배포시 Setup.exe 및 각종 실행 파일에 대해서 전자 서명을 합니다. 전자 서명이후 배포된 프로그램이 누군가에 의해 수정되지 않았음을 확인할 수 있습니다. 프로그램 이름을 그럴싸하게 만들어서 배포를 하더라도, 전자 서명이 되어져 있지 않은 경우, 이를 UAC에서 감지한 후 경고를 띄워주는 것입니다. 웹을 통해 배포된 프로그램의 경우 기존의 인터넷 익스플로어(IE) 경우, 전자 서명을 이미 확인하고 있었습니다만, UAC에서는 이를 데스크톱 환경에까지 반영하여, 사용자의 확인을 받게 한다는 것입니다.

이 뿐만 아니라, UAC 대화 상자에 대한 피싱(Phishing)을 방지하기 위해 보안 데스크톱(Secure Desktop) 환경에서 대화 상자를 보여줍니다.

정리하면 UAC은 다음과 같은 작업을 통해 시스템의 보안을 강화합니다. 1. 관리자 권한이 필요한 작업시 확인 2. 주요 폴더에 대한 사용자별 가상화 3. 설치, 실행 프로그램에 대한 전자 서명 확인

이에 대해 두가지 측면으로 기본 설정되어져 있습니다. 1. 관리자 계정일 때 관리 승인 모드에서 권한 상승 확인 방법 – 동의 확인 2. 표준 사용자 계정일 때 권한 상승 확인 방법 – 자격 증명 확인

UAC은 Windows XP에선 없었던 기능입니다. Windows Vista에서는 대부분의 관리자 그룹내 사용자들은 귀찮을 정도로 창이 뜬다는 불만을 토로합니다. (난 관리자인데...) 사용자 입장에서는 한번만 확인하면, 차후에 동일 작업시는 안 묻는 것이 좋겠다라고 생각하기도 합니다.

인터넷 익스플로어에서는 ActiveX설치시 인터넷 익스플로어의 알림 표시줄이 나타납니다. 여기서 확인 누릅니다. 그러면 설치를 위해 관리자 권한이 필요한 경우, 이번엔 UAC에서 확인 창을 띄웁니다.

작은 프로그램 하나를 실행할 때 레지스트리의 특정 부분을 쓰려고 한다면, UAC이 동작하게 됩니다. Windows 설정 변경시 관리자 권한이 필요한 경우에도 마찬가지입니다.

보안과 사용자 편의성과는 반비례 합니다. 보안을 높일 수록 사용자 편의성은 떨어집니다. (이미 Windows XP SP2 시절에 많이 언급되었던 내용입니다.)

네트워크가 필수적인 현대의 컴퓨팅 환경은 사용자들을 손쉽게 위험한 상황에 빠뜨릴 수 있다는 것입니다. (사내 네트워크도 마찬가지라고 봅니다.) 이러한 안전하지 않은 환경에서 신뢰할 수 있는 컴퓨팅 환경을 제공하기 위한 선택이었습니다. 이로 인해 이제는 자신의 컴퓨터가 자신의 의지와는 상관없이 악성 프로그램이 설치되는 문제점은 더이상 일어나지 않게 된다는 것도 중요한 사실입니다. 바로 사용자들을 위해 만들어진 기능이 UAC이라고 보여집니다.

또한 Microsoft는 보안으로 인해 떨어지는 사용자 편의성을 어떻게 회복할 것인가에 고민하고 있습니다. 보안 패러다임의 변화는 사용자들의 혼란을 초기에는 일으키지만, 적응하게 된다면, 이는 또한 하나의 일상이 될 것입니다. (Windows XP 서비스팩 2 시절을 생각해봅니다.)

보안을 위한 핵심 기능이 이제 Windows 운영 체제에 추가되었습니다. 이에 대한 사용 여부에 대한 결정은 End-User들에게 맡겨졌습니다.

UAC은 여러분을 위한 기능입니다.

PARTⅠ >> PART Ⅱ >> PART III >> PART Ⅳ