# AD 계정 잠금 해제 툴 (AD Account Unlocker) Active Directory(AD) 환경에서 잠긴 사용자 계정을 관리하기 위한 PowerShell 기반 GUI 툴. 잠긴 계정 목록 조회, 잠금 해제, 잠금 출처 추적 기능을 제공한다. ## 주요 기능 * **잠긴 AD 계정 목록 조회**: 도메인 내 잠긴 모든 사용자 계정 목록 실시간 조회. * **간편한 계정 잠금 해제**: 선택한 사용자의 계정 잠금을 버튼 클릭으로 해제. * **계정 잠금 출처 추적**: 계정 잠금을 유발한 컴퓨터(IP 또는 이름)를 추적하여 원인 파악 지원. * **사용자 검색**: 표시 이름, 로그온 ID 등으로 전체 AD 사용자 검색 기능 제공. * **직관적인 다크 모드 GUI**: 관리자 편의를 위한 다크 테마 인터페이스. * **실시간 작업 로그**: 모든 작업의 성공 및 실패 여부를 로그 창에 실시간 표시. ## 사용 전제 조건 1. **Active Directory 모듈**: 스크립트 실행 컴퓨터에 `ActiveDirectory` PowerShell 모듈 설치 필요. (RSAT의 일부) 2. **실행 권한**: * AD 사용자 조회 및 계정 잠금 해제 권한. * 도메인 컨트롤러(DC)의 보안 이벤트 로그(Event ID 4740, 4625) 원격 조회 권한. 3. **실행 환경**: 도메인에 가입된 Windows PC. 4. **.NET Framework**: .NET Framework 4.5 이상 필요. (최신 Windows에 기본 설치됨) ## 사용법 ### 방법 1: PowerShell 스크립트(.ps1) 직접 실행 1. `AccountUnlocker.ps1` 스크립트 파일을 PC에 저장. 2. PowerShell을 **관리자 권한으로** 실행. 3. 필요 시 PowerShell 실행 정책 변경: `Set-ExecutionPolicy RemoteSigned -Scope Process` 4. 스크립트가 있는 경로로 이동 후 아래와 같이 실행. ```powershell .\AccountUnlocker.ps1 ``` ### 방법 2: 실행 파일(.exe)로 패키징 `PS2EXE` 모듈을 사용하여 스크립트를 단일 실행 파일로 변환 가능. **1단계: PS2EXE 모듈 설치 (최초 1회)** 관리자 권한 PowerShell에서 아래 명령어로 `PS2EXE` 설치. ```powershell Install-Module -Name PS2EXE ``` **2단계: 스크립트 패키징** 스크립트 경로에서 아래 명령어로 `.exe` 파일 생성. ```powershell 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-ADAccount` cmdlet을 실행. * 성공/실패 여부를 반환하여 GUI에 로그를 기록. ### `Get-ADLockoutEvent` (잠금 출처 추적) 이 기능은 2단계에 걸쳐 잠금 원인을 추적한다. 1. **1단계 (Event ID 4740 조회)**: 모든 DC를 대상으로 보안 로그에서 **Event ID 4740 (계정 잠김)** 이벤트를 검색. 이를 통해 잠금 시간, 발생 DC, 호출자 컴퓨터 이름을 확인. 2. **2단계 (Event ID 4625 조회)**: 4740 이벤트의 '호출자 컴퓨터 이름'이 명확하지 않을 경우, 해당 DC에서 잠금 직전의 **Event ID 4625 (로그온 실패)** 이벤트를 추가 검색. 이 로그의 네트워크 주소(IP) 정보를 통해 실제 인증 실패가 발생한 출처를 특정.