4장 관리 메커니즘 발표자: 정희종 발표일: 2006년 7월 3일
기본 메커니즘 레지스트리 서비스 WMI (Windows Management Instrumentation) 일반적인 IT 모델은 인프라와 응용 프로그램으로 분리됩니다. 비즈니스 관점에서 볼 때 오늘날 응용 프로그램에서 점점 더 중용되고 있는 비즈니스 기능이 있는 것은 사실입니다. 하지만 종합적 통찰, 의사 결정, 책임 수행, 변화에 대한 대처, 리소스 조정 등 일상적인 실무에 해당하는 다른 차원의 비즈니스도 있습니다. 이러한 실무는 회의실과 작업 현장에서 이루어집니다. 오늘날의 IT 문제는 대부분 비즈니스 실무와 응용 프로그램과의 단절로 인해 발생합니다. 사람들은 IT 비즈니스 경영에 대해 언급할 때 마치 상당한 노력을 투자해야 결합할 수 있는 두 개의 커다란 존재가 있는 것처럼 말합니다. 하지만 멈춰 있는 시계도 하루에 두 번은 정확한 법입니다.
레지스트리 시스템 전반의 설정 및 각 사용자의 설정에 대한 저장소
도구 Windows 2000 - Regedit.exe, Regedt32.exe WindowsXP 및 Windows 2003 - Regedit.exe
레지스트리 사용하는 3가지 중요한 시기 부트 프로세트 - 장치 드라이버 로드 등 로그인 - 바탕화면 등 사용자 설정 시동 (During their startup) - 각 app 별 설정
레지스트리 수정되는 시점 윈도우 설치 응용프로그램 설치 장치 드라이버 설치 사용자의 설정 변경
레지스트리 데이터 형식 키(key)와 값(value) (p269 표 4-1) REG_NONE - No value type. REG_SZ - Fixed-length Unicode string. REG_EXPAND_SZ - Variable-length Unicode string that can have embedded environment variables. REG_BINARY - Arbitrary-length binary data REG_LINK – 링크
레지스트리 루트키 p270 표4-2, 표4-3 HKEY_CURRENT_USER HKEY_USERS HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA HKEY_CURRENT_CONFIG 이중 3개의 키는 Link (부팅시 동적 생성)
HKEY_CURRENT_USER 현재 로그온 한 사용자의 설정 HKEY_USERS 의 링크 \Documents and Settings\<username>\Ntuser.dat P272 표4-4
HKEY_USERS 사용자 설정 HKU\.DEFAULT – 기본 사용자 프로필 링크
HKEY_CLASSES_ROOT 파일 확장자 COM 클래스 등록 LINK - HKCU\SOFTWARE\Classes - HKLM\SOFTWARE\Classes
HKEY_LOCAL_MACHINE HARDWARE – 하드웨어 정보 SAM – 사용자 암호, 그룹 정의 등 SECURITY – 보안 정책 등 SOFTWARE – 시스템 구성, 응용프로그램 정보 SYSTEM – 시스템 부팅에 필요한 전반적인 구성 정보 (마지막으로 성공한 컨트롤 세트 포함)
HKEY_CURRENT_CONFIG 현재 하드웨어 프로필에 대한 링크 링크 - HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current
HKEY_PERFORMANCE_DATA 성능 카운터 값들에 액세스 하기 위한 메커니즘 레지스트리 형태의 서비스의 장점 - 원격 성능 모니터링이 자유롭다 실제 값을 찾을 수는 없다, 저장되지 않는다 RegQueryValueEx 같은 함수 사용
Regmon 유틸리티 레지스트리 모니터링 액세스, 시간, 형식, 프로세스 등을 보여줌 레지스트리 관련 트러블 슈팅에 유용하다.
실습 281p (실습) 메모장의 폰트를 바꾼다 Regmon 에서 모니터링 한것을 살펴본다
Regmon 트리블 슈팅 기술 응용 프로그램이 실패하기 전에 수행했던 마지막 작업을 찾아본다 “내 컴퓨터에서는 잘 되는데?” - 작동하는 시스템과 안하는 시스템 비교 NOTFOUND or ACCESS DENIED 값을 주의한다 BUFROVERFLOW 의심 (에러는 아님) 트러블 슈팅 성공 예 - 인터넷 익스플로러 시작이 멈춤 - HKCU\Software\Microsoft\RAS - 언인스톨할 때 레지스트리를 지우지 않았음 권한이 필요한 경우 psexec 사용
하이브 Hives 디스크 상에서 레지스트리는 하이브라고 불리는 분리된 파일들의 집합이다. 285p 표4-5 (레지스트리의 디스크 파일 경로) 휘발성 – 파일이 아닌 메모리 상에서만 저장 - 하드웨어 정보
하이브 구조 블록 – 파일 크기 증가분 셀 – 데이터 컨테이너 빈 – 셀을 포함하는 할당 단위
셀 데이터 형식들 290p 표4-6 키, 값, 서브키 리스트, 값 리스트, 보안 설명자
셀 맵 메모리에서 하이브 데이터가 참조하는 비연속적인 메모리 주소를 다루기 위해 사용 셀 맵 디렉터리 – 1024개의 항목 셀 맵 테이블 – 512개의 항목 셀 맵 테이블 – 빈과 셀의 블록 메모리 주소 위치
셀 맵
레지스트리 이름 공간 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Registry\Machine\System\CurrentControlSet 키 제어 블락의 사용 - 레지스트리 키를 열때, 키 제어 블락 할당 - 최적화 : 가장 가까운 조상으로 부터 시작 - 참조 카운트 사용하여 삭제 결정
견고한 저장소 (Stable Storage) 각 하이브들은 log have 를 가진다 메모리에 로딩한 레지스트리 변경이 즉시 하이브에 반영되지 않음 변경된 더티 섹터들을 로그 파일로 덤프한다.
레지스트리 최적화 모든 레지스트리 키는 보안 서술자를 가진다 - 복사하지 않고 참조한다 ASCII 형식으로 이름 저장 전체 경로 저장하지 않고 키의 이름만 참조 자주 액세스 되는 키 제어 블록을 캐시
요약 정리 271p 표4-3 레지스트리 6가지 주요 키 Regmon 유틸리티 하이브
WMI (Windows Management Instrumentation) 시스템 이벤트 모니터링 도구 WinNT 서비스팩4 에 추가 산업협회(DMTF) 표준에 따른 WBEM 구현 WBEM – Web Based Enterprise Management
WMI 아키텍쳐
WMI 아키텍쳐 CIM (Common Information Model) common model core model A set of classes in the Common Information Model (CIM) that represent objects that are specific to management areas of a system but independent of a particular implementation. These classes are considered an extension of the CIM core model. See also core model. core model A set of classes in the Common Information Model (CIM) provided as part of the WBEM standard. These classes are CIM's basic language and represent objects that apply to all areas of management. See also common model. WMI SDK를 사용하여 서드파티 WMI 공급자 개발
공급자 정보제공 – 클래스, 이벤트 등 339p 표4-10
CIM 및 MOF 언어 CIM 구현을 위해 MOF (Managed Object Format) 언어 사용 클래스 (class) 로 설계 표현 (객체지향 언어와 유사) 추상화, 다형성, 재사용 가능 CIM_DataFile -> CIM_LogicalFile -> CIM_LogicalElement 341p 아래쪽 MOF 문법 class Win32_NTEventlogFile : CIM_DataFile { … }
도구 WMI CIM Studio – MS 다운로드 센터 342p 그림4-20 WbemTest – 윈도우 기본 제공
WMI 이름 공간 루트 디렉터리 – root Root 아래 있는것이 WMI 이름공간 WMI 이름공간은 하나의 깊이만 가진다 \\DARYL\root\CIMV2:Win32_NTLogEvent.Logfile="Application", RecordNumber="1"
WMI 스크립트를 사용하여 시스템 관리하기 WMI 는 스크립팅 언어를 지원한다 cscript script.vbs 347p 실습 ExecNotificationQuery – WQL 실행
WMI 보안 WMI 보안 속성 관리 351p 그림 4-22 WMI 보안 속성들
WMI 요약 정리 WMI 스크립트 언어 지원 WMI CIM Studio, WbemTest
서비스 시스템 시작시 필요한 프로세스들을 독립적으로 시작하기 위한 메커니즘 구성요소 3가지 - 서비스 응용 프로그램 - 서비스 제어 프로그램 SCP - 서비스 제어 관리자 SCM
서비스 생성 CreateService 함수 파라미터들 306p 표4-7 Type 파라미터 (장치 드라이버에 적용하는 값) - 장치 드라이버 - 파일 시스템 드라이버 - 파일 시스템 인식 장치
서비스 시작 StartServiceCtrlDispatcher - 서비스 스레드 생성 서비스의 진입점 호출 RegisterServiceCtrlHandler - 서비스 진입점의 첫번째 동작 - “컨트롤 핸들러” 함수 포인터 저장 - 서비스가 SCM 으로부터 받는 명령 처리 위해 SetServiceStatus - SCM 에 주기적으로 상태 메시지 전송
서비스 프로세스 내부
로컬 시스템 계정 대부분의 서비스들은 로컬 시스템 계정의 보안 컨텍스트에서 실행한다 강력한 권한을 가지며 어떤 계정보다 강력하다 기타 계정 - 로컬 서비스 계정 - 네트워크 서비스 계정 312p 표4-9 서비스 계정 특권들
대체 계정으로 서비스 실행하기 특정 사용자 계정의 보안 자격으로 실행할 필요가 있을 때 서비스 계정을 설정 해 준다 315p 그림4-10 서비스 계정 설정
윈도우 스테이션 윈도우 스테이션은 데스크톱을 포함 데스크톱은 윈도우 포함 하나의 윈도우 스테이션만 볼 수 있다 하나의 윈도우 스테이션만 마우스, 키보드 입력받음 가상의 데스크톱 (?) 눈에 보이는 것은 WinSta0
대화식 서비스 로컬 시스템 계정은 보이지 않는 윈도우 스테이션에서 시작된다 보이지도 않고, 키보드나 마우스 입력도 받을 수 없기 때문에 대화식 서비스는 불가능 예외 - MB_SERVICE_NOTIFICATION or MB_DEFAULT_DESKTOP_ ONLY is set on the MessageBox call - SERVICE_ INTERACTIVE_PROCESS 대화식 서비스는 WinSta0 에 연결된다
서비스 제어 관리자 SvcCtrlMain – 부팅시 로그인 상자 나타나기 전 실행 SvcCtrlEvent_ A3752DX 동기화 이벤트 생성 ScCreateServiceDB – 레지스트리에서 정보를 읽어 서비스 데이터베이스에서 항목 생성 LSA_RPC_SERVER_ACTIVE 동기화 이벤트 신호화 - 사용자 계정으로 실행되는 서비스 때문에 LSASS 호출이 필요하므로 ScGetBootAndSystemDriverState – 자동 시작 서비스 검색
서비스 시작 자동시작 서비스 - SvcCtrlMain 함수에서 ScAutoStartServices 호출 - 자동 시작 드라이버 들도 시작 ScStartService – 서비스 시작 - SERVICE_KERNEL_DRIVER or SERVICE_FILE_SYSTEM_ DRIVER 파라미터가 있으면 드라이버 이므로 ScLoadDeviceDriver 호출
시동 에러 서비스 시작에 실패했을때 ErrorControl 값에 따라 무시하고 진행하거나 이벤트 로그에 기록
마지막으로 성공한 구성으로 부팅하기 ErrorControl 값이 SERVICE_ERROR_SEVERE or SERVICE_ERROR_CRITICAL 으로 설정된 경우에 서비스 시작이 실패하였다면 “마지막으로 성공한 구성”으로 전환
서비스 실패 서비스 실패시 복구 동작 설정
서비스 종료 Winlogon 이 ExitWindowsEx 호출 Csrss (서브시스템 프로세스)가 각 프로세스에 종료 메시지 전달 ScShutdownAllServices – SCM 서비스 데이터베이스 검색을 반복하여 각각의 서비스에 종료 명령 전송
공유된 서비스 프로세스 하나의 프로세스에서 여러 서비스를 실행한다 장점 – 자원 낭비 방지 단점 – 프로세스 종료시 모든 서비스 종료 - 같은 계정으로 실행 해야함
서비스 제어 프로그램 OpenSCManager – SCM 통신 채널 열기 함수 목록 - CreateService, OpenService, StartService, ControlService, QueryServiceStatus, DeleteService 친숙한 SCP의 예 – MMC 스냅인
요약 정리 271p 표4-3 레지스트리 6가지 주요 키 Regmon 유틸리티 하이브 WMI 아키텍쳐 서비스