OCI - Windows 인스턴스 패스워드 Reset 방법
몇 달만의 OCI 포스팅 입니다!!
업무적으로 다른 영역으로 변경되어 포스팅 주제에 대해 고민이 있었습니다.
(실은 지금도 고민중이에요)
틈틈이 유용할 내용이 있으면 업데이트하고, 추후에는 지금 하고 있는 빅데이터 관련 포스팅도 할 예정 입니다.
이번 시간에는 OCI 에서 만든 Windows 인스턴스를 오랜 시간 접속하지 않아, 접속시 패스워드가 잠기는 경우가 있습니다.
혹은 패스워드를 잊어버려서 접속하지 못하는 경우가 있을 수 있습니다.
이럴 때, 다음과 같이 같은 서브넷에 Ubuntu 인스턴스를 하나 만들어서 Windows Server 인스턴스의 패스워드를 초기화 할 수 있습니다.
(단, Windows 인스턴스가 AD에 의해 계정 관리 되지 않는다는 조건 입니다.)
중요 : Windows 2012 및 2016 Server 에 해당되는 내용 입니다.
(1/9) : 부팅 볼륨을 유지하면서(삭제하지 않고), Windows 인스턴스 Terminate
OCI Console 에서 Windows 인스턴스를 Terminate 하는데, 아래와 같이 Permanently delete the attached Boot Volume 에 체크 해제하고 Terminate Instance 버튼을 클릭합니다.
중요 : 인스턴스의 모든 정보 (compartment, attached 된 block volume, subnet IP 혹은 static IP 정보)를 기록해두세요.
(2/9) : Ubuntu 인스턴스 생성 후, Windows 인스턴스의 boot volume 연결
Windows 인스턴스가 있던 subnet에서 Ubuntu 인스턴스를 하나 생성 합니다.
(Image는 Canonical Ubuntu 16.04 선택)
Shape은 기본(VM.Standard2.1)이면 충분합니다.
Ubuntu 인스턴스가 RUNNING 상태가 되면, OCI Console 에서 Windows 인스턴스의 boot volume을 block storage volume 으로 attach 하세요.
(ISCSI 로 연결하며, Access 부분에 READ/WRITE를 선택해야 합니다.)
(3/9) : Ubuntu 인스턴스에서 ISCSI 로그인 명령 실행
Ubuntu 인스턴스에 ssh 접속한 뒤 iSCSI 접속 명령을 입력할 겁니다.
OCI Console에서 볼륨에 연결된 인스턴스의 세부 정보 페이지에서 ISCSI 명령을 확인할 수 있습니다.
볼륨 행에서 Actions 아이콘을 클릭하고 iSCSI Information을 클릭한 뒤, 아래와 같은 커맨드를 copy 합니다.
예시)
$ sudo iscsiadm -m node -o new -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260
$ sudo iscsiadm -m node -o update -T iqn.2015-02.oracle.boot:uefi -n node.startup -v automatic
$ sudo iscsiadm -m node -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260 -l
iSCSI로 Windows 인스턴스 볼륨이 정상적으로 붙었으면 lsblk 명령어로 /dev/sdb 가 보일 것 입니다.
(4/9) : 파티션 레이아웃 확인
다음 명령을 실행하면 예제와 비슷한 결과를 볼 수 있습니다.
$ sudo sfdisk -l /dev/sdb
Disk /dev/sdb: 256 GiB, 274877906944 bytes, 536870912 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: 3D757AFA-F8FA-4592-A8FE-5D6A19E2FA6C
Device Start End Sectors Size Type
/dev/sdb1 2048 616447 614400 300M Windows recovery environment
/dev/sdb2 616448 821247 204800 100M EFI System
/dev/sdb3 821248 1083391 262144 128M Microsoft reserved
/dev/sdb4 1083392 536868863 535785472 255.5G Microsoft basic data
(5/9) : NTFS 볼륨 확인
$ sudo ntfsfix /dev/sdb4
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb4 was processed successfully.
$ sudo mkdir -p /media/windows
$ sudo mount /dev/sdb4 /media/windows
(6/9) : chntpw 설치
$ sudo apt-get update
$ sudo apt-get install chntpw
(7/9) : chntpw로 Windows Administrator 패스워드 리셋
$ chntpw /media/windows/Windows/System32/config/SAM -u opc
ubuntu@linux-instance-1:~$ chntpw /media/windows/Windows/System32/config/SAM -u opc
chntpw version 1.00 140201, (c) Petter N Hagen
Hive </media/windows/Windows/System32/config/SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 65536 [10000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 329/31960 blocks/bytes, unused: 28/8776 blocks/bytes.
================= USER EDIT ====================
RID : 1000 [03e8]
Username: opc
fullname:
comment :
homedir :
00000220 = Administrators (which has 2 members)
Account bits: 0x0010 =
[ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |
Failed login count: 2, while max tries is: 8
Total login count: 2
- - - - User Edit Menu:
1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
3 - Promote user (make user an administrator)
4 - Add user to a group
5 - Remove user from a group
q - Quit editing user, back to user select
Select: [q] >
> 1
Password cleared!
================= USER EDIT ====================
RID : 1000 [03e8]
Username: opc
fullname:
comment :
homedir :
00000220 = Administrators (which has 2 members)
Account bits: 0x0010 =
[ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |
Failed login count: 2, while max tries is: 8
Total login count: 2
** No NT MD4 hash found. This user probably has a BLANK password!
** No LANMAN hash found either. Try login with no password!
- - - - User Edit Menu:
1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
3 - Promote user (make user an administrator)
4 - Add user to a group
5 - Remove user from a group
q - Quit editing user, back to user select
Select: [q] >
> 2
Unlocked!
...
Select: [q] >
> q
Hives that have changed:
# Name
0 </media/windows/Windows/System32/config/SAM>
Write hive files? (y/n) [n] :
> y
0 </media/windows/Windows/System32/config/SAM> - OK
(8/9) : 빈 암호 로그인이 허용되도록 레지스트리 설정 편집
$ chntpw -e /media/windows/Windows/System32/config/SYSTEM
> ls Select
Node has 0 subkeys and 4 values
size type value name [value if type DWORD]
4 4 REG_DWORD <Current> 1 [0x1]
4 4 REG_DWORD <Default> 1 [0x1]
4 4 REG_DWORD <Failed> 0 [0x0]
4 4 REG_DWORD <LastKnownGood> 2 [0x2]
현재 필드 값을 기록해두세요.
> cd ControlSet001\Control\Lsa\
위에서 Current가 0x1인지 0x2 인지에 따라 ControlSet001 또는 ControlSet002를 사용하세요.
> ed LimitBlankPasswordUse
EDIT: <LimitBlankPasswordUse> of type REG_DWORD (4) with length 4 [0x4]
DWORD: Old value 1 [0x1], enter new value (prepend 0x if hex, empty to keep old value)
> 0x0
> q
Hives that have changed:
# Name
0
Write hive files? (y/n) [n] :
> y
그리고 iSCSI로 attached 된 Windows 인스턴스 boot 볼륨을 detach 합니다.
$ sudo umount /media/windows
$ sudo iscsiadm -m node -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260 -u
$ sudo iscsiadm -m node -o delete -T iqn.2015-02.oracle.boot:uefi -p 169.254.2.2:3260
(9/9) : Windows 인스턴스 새로 생성
Create Instance 메뉴를 통해 Windows 인스턴스를 다시 만드세요. 이때, Image는 기존의 boot volume을 선택해야 합니다.
(그외 기타 파라미터가 있다면 (1/9)단계에서 기록한 내용으로 함께 설정하세요.)
이제 새로 만든 Windows 인스턴스에 opc로 접속하면 initial password를 설정하게 됩니다.
패스워드 설정 후, 보안을 위해 빈 비밀번호가 허용되지 않도록 아래의 레지스트리를 수정하세요.
HKEY_LOCAL_MACHINE\System\Currentcontrolset\Control\Lsa\Limitblankpassworduse 키를 1로 설정
이로서 OCI에서 Windows 인스턴스 (2012, 2016)의 패스워드를 리셋하는 방법에 대해 알아보았습니다.
참조
- 본 내용에 대한 원문은 Tutorial: How to Reset a Forgotten Password for a Windows Instance 입니다.
** 해당 포스트는 개인적으로 시간을 할애하여 작성하였습니다. 내용에 오류가 있을 수 있으며, 글의 내용은 개인적인 의견 입니다.