Files
adlockerinfo/README.md

77 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

2025-09-15 13:39:33 +09:00
# 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) 정보를 통해 실제 인증 실패가 발생한 출처를 특정.