3.8 KiB
3.8 KiB
AD 계정 잠금 해제 툴 (AD Account Unlocker)
Active Directory(AD) 환경에서 잠긴 사용자 계정을 관리하기 위한 PowerShell 기반 GUI 툴. 잠긴 계정 목록 조회, 잠금 해제, 잠금 출처 추적 기능을 제공한다.
주요 기능
- 잠긴 AD 계정 목록 조회: 도메인 내 잠긴 모든 사용자 계정 목록 실시간 조회.
- 간편한 계정 잠금 해제: 선택한 사용자의 계정 잠금을 버튼 클릭으로 해제.
- 계정 잠금 출처 추적: 계정 잠금을 유발한 컴퓨터(IP 또는 이름)를 추적하여 원인 파악 지원.
- 사용자 검색: 표시 이름, 로그온 ID 등으로 전체 AD 사용자 검색 기능 제공.
- 직관적인 다크 모드 GUI: 관리자 편의를 위한 다크 테마 인터페이스.
- 실시간 작업 로그: 모든 작업의 성공 및 실패 여부를 로그 창에 실시간 표시.
사용 전제 조건
- Active Directory 모듈: 스크립트 실행 컴퓨터에
ActiveDirectoryPowerShell 모듈 설치 필요. (RSAT의 일부) - 실행 권한:
- AD 사용자 조회 및 계정 잠금 해제 권한.
- 도메인 컨트롤러(DC)의 보안 이벤트 로그(Event ID 4740, 4625) 원격 조회 권한.
- 실행 환경: 도메인에 가입된 Windows PC.
- .NET Framework: .NET Framework 4.5 이상 필요. (최신 Windows에 기본 설치됨)
사용법
방법 1: PowerShell 스크립트(.ps1) 직접 실행
AccountUnlocker.ps1스크립트 파일을 PC에 저장.- PowerShell을 관리자 권한으로 실행.
- 필요 시 PowerShell 실행 정책 변경:
Set-ExecutionPolicy RemoteSigned -Scope Process - 스크립트가 있는 경로로 이동 후 아래와 같이 실행.
.\AccountUnlocker.ps1
방법 2: 실행 파일(.exe)로 패키징
PS2EXE 모듈을 사용하여 스크립트를 단일 실행 파일로 변환 가능.
1단계: PS2EXE 모듈 설치 (최초 1회)
관리자 권한 PowerShell에서 아래 명령어로 PS2EXE 설치.
Install-Module -Name PS2EXE
2단계: 스크립트 패키징
스크립트 경로에서 아래 명령어로 .exe 파일 생성.
Invoke-PS2EXE -InputFile ".\AccountUnlocker.ps1" -OutputFile ".\ADLockUser.exe" -noConsole -title "AD 계정 잠 금 해제 툴" -product "AD Management Tools" -company "TigErJin" -requireAdmin
-noConsole: 콘솔 창 없이 GUI만 실행.-title,-product,-company: 파일 속성 정보 지정.-requireAdmin: 실행 시 관리자 권한 자동 요구.
3단계: 프로그램 실행
생성된 ADLockUser.exe 파일 실행.
스크립트 주요 로직 설명
Get-LockedADAccounts
- 도메인의 PDC(Primary Domain Controller) 에뮬레이터에 쿼리하여 가장 정확한 잠긴 계정 목록을 가져온다.
Search-ADAccount -LockedOut으로 잠긴 계정을 찾고Get-ADUser로 상세 정보(표시 이름, 마지막 로그온 등)를 추가 조회.
Unlock-ADUserAccount
- 선택된 계정의
SamAccountName을 받아 PDC를 대상으로Unlock-ADAccountcmdlet을 실행. - 성공/실패 여부를 반환하여 GUI에 로그를 기록.
Get-ADLockoutEvent (잠금 출처 추적)
이 기능은 2단계에 걸쳐 잠금 원인을 추적한다.
-
1단계 (Event ID 4740 조회): 모든 DC를 대상으로 보안 로그에서 Event ID 4740 (계정 잠김) 이벤트를 검색. 이를 통해 잠금 시간, 발생 DC, 호출자 컴퓨터 이름을 확인.
-
2단계 (Event ID 4625 조회): 4740 이벤트의 '호출자 컴퓨터 이름'이 명확하지 않을 경우, 해당 DC에서 잠금 직전의 Event ID 4625 (로그온 실패) 이벤트를 추가 검색. 이 로그의 네트워크 주소(IP) 정보를 통해 실제 인증 실패가 발생한 출처를 특정.