NewSID v4.10
Mark Russinovich 작성
게시일: 2006년 11월 1일
참고: NewSID는 폐기되었으며 더 이상 다운로드할 수 없습니다. Mark Russinovich의 블로그 게시물: NewSID 폐기 및 기계 SID 중복에 대한 잘못된 정보를 참조하세요.
SID와 관련하여 Microsoft는 NewSID를 사용하여 준비된 이미지를 지원하지 않으며 SysPrep을 사용하여 준비된 이미지만 지원합니다. Microsoft는 모든 배포 복제 옵션에 대해 NewSID를 테스트하지 않았습니다.
Microsoft의 공식 정책에 대한 자세한 내용은 다음 기술 자료 문서를 참조하세요.
많은 조직에서 디스크 이미지 복제를 사용하여 Windows의 대량 출시를 수행합니다. 이 기술에는 완전히 설치되고 구성된 Windows 컴퓨터의 디스크를 다른 컴퓨터의 디스크 드라이브에 복사하는 작업이 포함됩니다. 이러한 다른 컴퓨터는 사실상 동일한 설치 프로세스를 거친 것으로 나타나 즉시 사용할 수 있습니다.
이 방법은 다른 출시 방식에 비해 작업 시간과 번거로움을 줄여주지만 복제된 모든 시스템이 동일한 컴퓨터 보안 식별자(SID)를 갖는다는 주요 문제가 있습니다. 이 사실은 작업 그룹 환경에서 보안을 손상시키며 이동식 미디어 보안은 여러 동일한 컴퓨터 SID가 있는 네트워크에서도 손상될 수 있습니다.
Windows 커뮤니티의 요구로 인해 여러 회사에서 시스템이 복제된 후 컴퓨터의 SID를 변경할 수 있는 프로그램을 개발하게 되었습니다. 그러나 Symantec의 SID Changer 와 Symantec의 Ghost Walker는 각 회사의 고급 제품으로만 판매되고 있습니다. 또한 둘 다 DOS 명령 프롬프트에서 실행됩니다(Altiris의 체인저는 NewSID와 유사함).
NewSID는 우리가 개발한 컴퓨터의 SID를 변경하는 프로그램입니다. 무료이며 Win32 프로그램이므로 이전에 복제된 시스템에서 쉽게 실행할 수 있습니다.
이 프로그램을 사용하기 전에 이 기사 전문을 읽으세요.
버전 정보:
- 버전 4.0에는 Windows XP 및 마법사 스타일 인터페이스인 .NET 서버에 대한 지원이 도입되어 적용할 SID, 레지스트리 압축 및 시스템 이름 변경 옵션을 지정할 수 있습니다(NetBIOS 및 DNS 이름이 모두 변경됨).
- 버전 3.02는 이전 SID가 있는 키의 이름을 새 SID로 바꿀 때 NewSid가 유효하지 않은 값 유형의 기본값을 올바르게 복사하지 않는 버그를 수정합니다. NT는 실제로 SAM에서 특정 시간에 이러한 유효하지 않은 값을 사용합니다. 이 버그의 증상은 인증된 사용자가 계정 정보를 업데이트할 때 액세스 거부를 보고하는 오류 메시지였습니다.
- 버전 3.01은 Microsoft Transaction Server에서 생성된 액세스할 수 없는 레지스트리 키에 대한 해결 방법을 추가합니다. 해결 방법이 없으면 NewSID가 조기에 종료됩니다.
- 버전 3.0에는 다른 컴퓨터에서 적용할 SID를 가져오도록 NewSID에 지시하는 SID 동기화 기능이 도입되었습니다.
- 버전 2.0에는 자동 모드 옵션이 있으며 컴퓨터 이름도 변경할 수 있습니다.
- 버전 1.2는 일부 파일 시스템 보안 설명자가 업데이트되지 않은 1.1에 도입된 버그를 수정합니다.
- 버전 1.1은 특정 설치에만 영향을 미치는 비교적 사소한 버그를 수정합니다. 또한 파일 및 프린터 공유의 권한 설정과 관련된 SID를 변경하도록 업데이트되었습니다.
기업 환경에서 대규모 Windows 출시(일반적으로 수백 대의 컴퓨터)을 수행하는 가장 인기 있는 방법 중 하나는 디스크 복제 기술을 기반으로 합니다. 시스템 관리자는 회사에서 사용하는 기본 운영 체제와 애드온 소프트웨어를 템플릿 컴퓨터에 설치합니다. 회사 네트워크에서 작동하도록 시스템을 구성한 후 자동 디스크 또는 시스템 복제 도구(예: Symantec의Ghost, PowerQuest의Image Drive , 및 Altiris의RapiDeploy)는 템플릿 컴퓨터의 드라이브를 수십 또는 수백 대의 컴퓨터에 복사하는 데 사용됩니다. 그런 다음 이러한 복제본에 고유한 이름 할당과 같은 최종 조정을 한 다음 회사 직원이 사용합니다.
널리 사용되는 또 다른 배포 방법은 Microsoft sysdiff 유틸리티(Windows Resource Kit의 일부)를 사용하는 것입니다. 이 도구를 사용하려면 시스템 관리자가 각 컴퓨터에서 전체 설치(일반적으로 스크립트 무인 설치)를 수행한 다음 sysdiff가 추가 기능 소프트웨어 설치 이미지의 적용을 자동화해야 합니다.
설치를 건너뛰고 디스크 섹터 복사가 파일 복사보다 효율적이기 때문에 복제 기반 출시는 비슷한 sysdiff 설치보다 수십 시간을 절약할 수 있습니다. 또한 시스템 관리자는 무인 설치 또는 sysdiff 사용 방법이나 설치 스크립트 생성 및 디버그 방법을 배울 필요가 없습니다. 이것만으로도 작업 시간이 절약됩니다.
복제의 문제는 매우 제한된 의미에서 Microsoft에서만 지원된다는 것입니다. Microsoft는 복제 시스템이 Windows 설치의 GUI 부분에 도달하기 전에 완료되는 경우에만 지원된다고 밝혔습니다. 설치가 이 지점에 도달하면 컴퓨터에 이름과 고유한 컴퓨터 SID가 할당됩니다. 이 단계 후에 시스템이 복제되면 복제된 머신은 모두 동일한 컴퓨터 SID를 갖게 됩니다. 컴퓨터 이름을 변경하거나 컴퓨터를 다른 도메인에 추가하는 것만으로는 컴퓨터 SID가 변경되지 않습니다. 컴퓨터가 이전에 도메인과 연결된 경우 이름 또는 도메인을 변경하면 도메인 SID만 변경됩니다.
복제로 인해 발생할 수 있는 문제를 이해하려면 먼저 컴퓨터의 개별 로컬 계정에 SID가 할당되는 방식을 이해해야 합니다. 로컬 계정의 SID는 컴퓨터의 SID와 추가된 RID(Relative Identifier)로 구성됩니다. RID는 고정 값에서 시작하여 생성된 각 계정에 대해 1씩 증가합니다. 예를 들어 한 컴퓨터의 두 번째 계정에는 복제본의 두 번째 계정과 동일한 RID가 부여됩니다. 결과적으로 두 계정의 SID는 동일합니다.
도메인 계정에는 도메인 SID를 기반으로 하는 SID가 있으므로 중복 SID는 도메인 기반 환경에서 문제가 되지 않습니다. 그러나 Microsoft 기술 자료 문서 Q162001 "디스크를 사용하지 않음 Windows NT의 설치된 버전을 암호 해독하지 않음(디스크를 사용하지 않음 Windows NT의 설치된 버전을 암호 해독하지 않음)"에 따르면 워크그룹 환경 보안은 로컬 계정 SID를 기반으로 합니다. 따라서 두 컴퓨터의 사용자가 동일한 SID를 가진 경우 작업 그룹은 사용자를 구분할 수 없습니다. 한 사용자가 액세스할 수 있는 파일 및 레지스트리 키를 포함한 모든 리소스는 다른 사용자도 마찬가지입니다.
중복 SID가 문제를 일으킬 수 있는 또 다른 경우는 NTFS로 포맷된 이동식 미디어가 있고 로컬 계정 보안 특성이 파일 및 디렉터리에 적용되는 경우입니다. 이러한 미디어가 동일한 SID를 가진 다른 컴퓨터로 이동하는 경우 계정 ID가 보안 속성의 계정 ID와 일치하는 경우 다른 방법으로는 파일에 액세스할 수 없는 로컬 계정이 파일에 액세스할 수 있습니다. 컴퓨터에 다른 SID가 있는 경우에는 불가능합니다.
Mark가 작성한 "NT 출시 옵션"이라는 제목의 기사가 Windows NT Magazine 6월호에 게재되었습니다. 중복 SID 문제에 대해 자세히 설명하고 복제에 대한 Microsoft의 공식 입장을 제시합니다. 네트워크에 중복 SID 문제가 있는지 확인하려면 PsGetSid를 사용하여 시스템 SID를 표시합니다.
NewSID는 컴퓨터의 SID를 변경하기 위해 개발한 프로그램입니다. 먼저 컴퓨터에 대한 임의의 SID를 생성하고 레지스트리 및 파일 보안 설명자에서 찾은 기존 컴퓨터 SID의 인스턴스를 업데이트하여 발생 항목을 새 SID로 바꿉니다. NewSID를 실행하려면 관리 권한이 필요합니다. SID 변경과 컴퓨터 이름 변경의 두 가지 기능이 있습니다.
NewSID의 자동 실행 옵션을 사용하려면 명령줄에서 "/a"를 지정합니다. "/a" 스위치 뒤에 새 이름을 포함시켜 컴퓨터 이름을 자동으로 변경하도록 지시할 수도 있습니다. 예를 들면 다음과 같습니다.
newsid /a [새 이름]
메시지를 표시하지 않고 NewSID를 실행하고 컴퓨터 이름을 "newname"으로 변경하고 모든 것이 정상이면 컴퓨터를 재부팅합니다.
참고:NewSID를 실행하려는 시스템에서 IISAdmin을 실행 중인 경우 NewSID를 실행하기 전에 IISAdmin 서비스를 중지해야 합니다. 다음 명령을 사용하여 IISAdmin 서비스를 중지합니다. net stop iisadmin /y
NewSID의 SID 동기화 기능으로 임의로 생성하는 대신 새 SID를 다른 컴퓨터에서 가져와야 한다고 지정할 수 있습니다. 이 기능을 사용하면 백업 도메인 컨트롤러(BDC)를 새 도메인으로 이동할 수 있습니다. BDC와 도메인의 관계는 다른 DC(도메인 컨트롤러)와 동일한 컴퓨터 SID를 갖는 것으로 식별되기 때문입니다. "SID 동기화" 버튼을 선택하고 대상 컴퓨터의 이름을 입력하기만 하면 됩니다. 대상 컴퓨터 레지스트리 키의 보안 설정을 변경할 수 있는 권한이 있어야 합니다. 즉, 일반적으로 이 기능을 사용하려면 도메인 관리자로 로그인해야 합니다.
NewSID를 실행하면 레지스트리 크기가 커지므로 최대 레지스트리 크기가 증가를 수용할 수 있는지 확인하세요. 우리는 이러한 성장이 시스템 성능에 눈에 띄는 영향을 미치지 않는다는 것을 발견했습니다. 레지스트리가 커지는 이유는 NewSID에 의해 임시 보안 설정이 적용되어 조각화되기 때문입니다. 설정이 제거되면 레지스트리가 압축되지 않습니다.
중요: 우리는 NewSID를 철저히 테스트했지만 사용에 따른 위험은 사용자가 감수해야 합니다. 파일 및 레지스트리 설정을 변경하는 모든 소프트웨어와 마찬가지로 NewSID를 실행하기 전에 컴퓨터를 완전히 백업하는 것이 좋습니다.
한 도메인에서 다른 도메인으로 BDC를 이동하려는 경우 따라야 하는 단계는 다음과 같습니다.
- 이동하려는 BDC를 부팅하고 로그인합니다. NewSID를 사용하여 BDC를 이동하려는 도메인의 PDC와 BDC의 SID를 동기화합니다.
- SID(BDC)를 변경한 시스템을 재부팅합니다. 현재 BDC와 연결된 도메인에는 이미 활성 PDC가 있으므로 새 도메인에서 BDC로 부팅됩니다.
- BDC는 서버 관리자에서 워크스테이션으로 표시되므로 "도메인에 추가" 단추를 사용하여 BDC를 새 도메인에 추가하세요. 추가할 때 BDC 라디오 버튼을 지정해야 합니다.
NewSID는 기존 컴퓨터 SID를 읽는 것으로 시작합니다. 컴퓨터의 SID는 SECURITY\SAM\Domains\Account 아래 레지스트리의 SECURITY 하이브에 저장됩니다. 이 키에는 F라는 값과 V라는 값이 있습니다. V 값은 데이터 끝에 컴퓨터 SID가 포함된 이진 값입니다. NewSID는 이 SID가 표준 형식(3개의 32비트 권한 필드 앞에 3개의 32비트 하위 인증 기관)인지 확인합니다.
그런 다음 NewSID는 컴퓨터에 대한 새로운 임의 SID를 생성합니다. NewSID의 세대는 컴퓨터 SID를 구성하는 3개의 하위 권한 값 중 96비트를 대체하는 진정한 임의의 96비트 값을 생성하기 위해 많은 노력을 기울입니다.
컴퓨터 SID 교체의 세 단계는 다음과 같습니다. 첫 번째 단계에서는 SECURITY 및 SAM 레지스트리 하이브에서 키 값과 키 이름에 이전 컴퓨터 SID가 있는지 검색합니다. 값에서 SID가 발견되면 새 컴퓨터 SID로 대체되고 SID가 이름에 있으면 키와 해당 하위 키가 이전을 대체하는 새 SID를 제외하고 이름이 같은 새 하위 키로 복사됩니다.
마지막 두 단계에는 보안 설명자를 업데이트하는 작업이 포함됩니다. 레지스트리 키 및 NTFS 파일에는 보안이 연결되어 있습니다. 보안 설명자는 리소스를 소유하는 계정을 식별하는 항목, 기본 그룹 소유자인 그룹, 사용자 또는 그룹이 허용하는 작업을 지정하는 선택적 항목 목록(임의 액세스 제어 목록(DACL)이라고 함) 및 선택적 특정 사용자 또는 그룹이 수행하는 작업을 지정하는 항목 목록은 시스템 이벤트 로그(SACL)에 항목을 생성합니다. 사용자 또는 그룹은 해당 SID를 사용하여 이러한 보안 설명자에서 식별되며, 앞에서 설명한 것처럼 로컬 사용자 계정(관리자, 게스트 등과 같은 기본 제공 계정 제외)에는 컴퓨터 SID와 RID로 구성된 SID가 있습니다.
보안 설명자 업데이트의 첫 번째 부분은 컴퓨터의 모든 NTFS 파일 시스템 파일에서 발생합니다. 모든 보안 설명자는 컴퓨터 SID의 발생을 검사합니다. NewSID가 하나를 찾으면 새 컴퓨터 SID로 교체합니다.
보안 설명자 업데이트의 두 번째 부분은 레지스트리에서 수행됩니다. 먼저 NewSID는 로드된 하이브뿐만 아니라 모든 하이브를 검사하는지 확인해야 합니다. 모든 사용자 계정에는 사용자가 로그인할 때 HKEY_CURRENT_USER로 로드되지만 로그인하지 않을 때는 사용자 프로필 디렉토리의 디스크에 남아 있는 레지스트리 하이브가 있습니다. NewSID는 저장된 디렉토리를 가리키는 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList 키를 열거하여 모든 사용자 하이브 위치의 위치를 식별합니다. 그런 다음 HKEY_LOCAL_MACHINE 아래의 RegLoadKey를 사용하여 이를 레지스트리로 로드하고 전체 레지스트리를 검사하여 이전 컴퓨터 SID를 찾기 위해 각 보안 설명자를 검사합니다. 업데이트는 파일과 동일하게 수행되며 업데이트가 완료되면 NewSID가 사용자 하이브를 언로드합니다. 마지막 단계로 NewSID는 현재 로그인한 사용자의 하이브와 .Default 하이브가 포함된 HKEY_USERS 키를 검사합니다. 이는 하이브를 두 번 로드할 수 없기 때문에 필요합니다. 따라서 NewSID가 다른 사용자 하이브를 로드할 때 로그인한 사용자 하이브가 HKEY_LOCAL_MACHINE에 로드되지 않습니다.
마지막으로 NewSID는 새 계정 SID를 참조하도록 ProfileList 하위 키를 업데이트해야 합니다. 이 단계는 계정 SID가 새 컴퓨터 SID를 반영하도록 변경된 후 Windows NT가 프로필을 사용자 계정과 올바르게 연결하도록 하는 데 필요합니다.
NewSID는 시스템, 백업, 복원 및 소유권 가져오기 권한을 부여하여 시스템의 모든 파일과 레지스트리 키에 액세스하고 수정할 수 있도록 합니다.