[Dongclee의 2011년 6월 첫 번째 포스팅] 윈도우 클라이언트의 기본 shell을 특정 *.exe 파일로 변경하는 방법
안녕하세요.....
6월 첫 번째 날입니다. 이젠 완전 신록이 물들어 가는 계절입니다. 날씨가 요즘 부쩍 더워졌는데,, 이젠 한국에는 봄 가을이 없는 것 같습니다.
이번 포스팅은 어쩌면 5월달 Enterprise 보안 강화 방안에 연속되는 주제일 수도 있을 것 같습니다.
다름이 아니라, 최근 계속되고 있는 보안 사고로 인하여,,, Enterprise 차원의 각종 보안 강화 방안이 수립되고 있는 실정입니다.
최근 저희 부서의 고객 중에서, 데이터 센터 내의 서버들을 접근하는 PC에 대해서 윈도우 기본 shell이 아닌 특정 프로그램이 shell로 수행되도록 구성하는 방안에 대해서 문의를 해 왔습니다. 즉, 서버 접근용 PC에 대해서는 일반 KIOSK 처럼 특정 프로그램만 수행할 수 있도록 제어해서, 기본적인 서버 접근 PC의 보안성을 높히고자 하는 방안입니다.
예를 들어, 서버 접근 PC는 "원격 데스크톱(mstsc.exe)" 만 수행되도록 구성하는 것입니다.
이렇게 되면, 서버에 대한 작업을 수행하는 PC에서 별도의 프로그램을 수행하지 못 하도록 하는 것이기 때문에, 보안성을 상당히 높힐 수 있습니다.
기본적으로 윈도우 클라이언트의 기본 shell을 정의하는 레지스트리는 아래와 같습니다.
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\shell
- HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\shell
위 2 곳의 레지스트리 키 "shell" 의 값에 의해 기본 shell이 지정됩니다. 기본 shell은 "explorer.exe" 로 지정되어 있는데, 본 테스트 환경에서는 이 값을 "mstsc.exe"로 변경하여, 로그온 하는 순간 기본 shell이 "원격 데스크톱"으로 변경하도록 구성하였습니다.
이 작업을 하기 위해서는 대상 윈도우 클라이언트의 레지스트리 키 값을 변경하면 되는데, 이 작업을 Active Directory 기반의 GPO 내의 "사용자 로그온 스크립트"를 구성하여 처리하는 방안을 구현해 보았습니다.
스크립트는 아래와 같이 VBS로 구성해 보았습니다.
--------------------------------------------------------
const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
'For Windows 7 (Windows7에는 아래 키 값을 반드시 설정해야만 XP와 동일하게 작동합니다)
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "ParseAutoexec"
StrValue = "1"
oReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
'For Windows 7 and only Windows XP
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "Shell"
StrValue = "C:\windows\System32\mstsc.exe"
oReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
--------------------------------------------------------
위 스크립트를 GPO를 통해 대상 윈도우 클라이언트에 적용해 보면, 아래와 같이 "원격 데스크톱" 으로 기본 shell이 변경됨을 확인할 수 있습니다.
이상과 같이 간단하게 서버 접근용 PC의 기본 shell을 "원격 데스크톱"으로 변경하는 구성을 간단하게 살펴보았습니다.
한 가지 여러분에게 미리 알려 드릴 점은, 여러분들이 저의 가이드에 따라서 위 작업을 완료하더라도 몇 가지 security hole이 발생할 수 있음을 미리 알려드립니다. 이 점 현명하신 여러분들이 감안하고 제 자료를 봐 주셨으면 합니다.
그럼 이만 줄이겠습니다.