Active Directory에서 잠긴 계정 찾기 (실제로 작동하는 방식)


8

잠긴 계정을 나열하는 방법을 googled하고 지금까지 두 가지 방법이 작동하지 않는 두 가지 방법을 발견했습니다 ...

저장된 검색어- (&(&(&(objectCategory=Person)(objectClass=User)(lockoutTime>=1))))

많은 계정이 나열되어 있으며 많은 계정이 잠겨 있지 않습니다. 내가 알고있는 것을 잠금 해제하면 여전히 쿼리에 의해 반환됩니다.

Powershell 명령- Search-ADAccount -LockedOut

아무것도하지 않습니다.

둘 중 하나-내가 뭔가 잘못하고 있습니까? 또는-실제로 작동하는 방법이 있습니까?


참고 : AD PowerShell 모듈 (Search-ADAccount 커맨드 렛 사용 포함)에 포함 된 명령으로 도메인을 관리하려면이 도메인의 도메인 컨트롤러 하나 이상에 ADWS (Active Directory 웹 서비스) 서비스가 설치되어 있어야합니다. 그러나 ADWS 인스턴스가 없으면 오류 메시지가 표시되므로 문제가되지 않습니다.
Mikhail

답변:


11

Get-ADUser -LDAPFilter "(&(objectCategory=Person)(objectClass=User)(lockoutTime>=1))" -Properties LockedOut신뢰할 수있는 결과를 반환하지 않기 때문에 반드시 신뢰할 필요 는 없지만 현재로서는 내 PDCe에 직접 연결할 수 없습니다. 최상의 결과를 얻으려면 도메인 전체의 계정 잠금에 대한 최신 정보가 항상 있으므로 PDC 에뮬레이터를 직접 대상으로하고자합니다.

이것이 여러분이 여기서 목격하고있는 것입니다. 복제가 지연됩니다.

... 계정 잠금이 PDC (Primary Domain Controller) 에뮬레이터 역할 소유자에게 긴급하게 복제 된 후 다음으로 긴급하게 복제됩니다.

• PDC 에뮬레이터와 동일한 사이트에있는 동일한 도메인의 도메인 컨트롤러.

• 계정 잠금을 처리 한 도메인 컨트롤러와 동일한 사이트에있는 동일한 도메인의 도메인 컨트롤러.

• PDC 에뮬레이터가 포함 된 사이트 또는 계정 잠금이 처리 된 사이트와 사이트간에 변경 알림을 허용하도록 구성된 사이트 (및 긴급 복제)에있는 동일한 도메인의 도메인 컨트롤러. 이러한 사이트에는 PDC 에뮬레이터가 포함 된 사이트와 동일한 사이트 링크 또는 계정 잠금을 처리 한 도메인 컨트롤러가있는 사이트와 동일한 사이트 링크에 ​​포함 된 모든 사이트가 포함됩니다.

또한 PDC 에뮬레이터 이외의 도메인 컨트롤러에서 인증이 실패하면 PDC 에뮬레이터에서 인증이 다시 시도됩니다. 이러한 이유로 PDC 에뮬레이터는 잘못된 암호 시도 임계 값에 도달하면 실패한 암호 시도를 처리 한 도메인 컨트롤러 전에 계정을 잠급니다. PDC 에뮬레이터 역할 소유자가 암호 변경 및 계정 잠금을 관리하는 방법에 대한 자세한 내용은이 설명서의 "유연한 단일 마스터 작업 관리"를 참조하십시오.

따라서 Search-ADAccount -LockedOut -Server DC-PDCE결과가 더 나은지 확인하십시오.

또한 lockoutTime 속성 주위에 쿼리를 작성할 때 고려해야 할 사항이 있습니다.

이 속성 값은 계정이 성공적으로 로그온 한 경우에만 재설정됩니다. 즉,이 값은 0이 아닐 수 있지만 계정은 잠기지 않습니다. 계정이 잠겨 있는지 정확하게 확인하려면이 시간에 잠금 기간을 추가하고 결과를 현재 시간과 비교하여 현지 시간대와 일광 절약 시간을 고려해야합니다.

편집 : 리버스 엔지니어링 을 통해 신뢰할 수있는 결과를 생성하는 것처럼 보이는 다음 코드를 실행 Microsoft.ActiveDirectory.Management.dll한다고 말할 수 Search-ADAccount -LockedOut있습니다.

else if ((bool) this._paramSet.LockedOut)
      {
        list.Add(ADAccountFactory<ADAccount>.AttributeTable[cmdletSessionInfo.ConnectedADServerType]["AccountLockoutTime"].InvokeToSearcherConverter(ADOPathUtil.CreateFilterClause(ADOperator.Ge, "AccountLockoutTime", (object) 1), cmdletSessionInfo));
        this.OutputFilterFunction = new ADGetCmdletBase<SearchADAccountParameterSet, ADAccountFactory<ADAccount>, ADAccount>.OutputFilterDelegate(this.FilterIsLockedOut);
      }
      if (list.Count > 0)
        this.OutputSearchResults(list.Count != 1 ? ADOPathUtil.CreateAndClause(list.ToArray()) : list[0]);
      else
        this.OutputSearchResults((IADOPathNode) null);

그래서 Search-ADAccount -LockedOutAccountLockoutTime 속성도보고있는 것처럼 보입니다 !

위대한 정의를 위해 좀 더 편집하십시오 : Richard Mueller, Dir. 서비스 MVP는 다음과 같이 말합니다.

userAccountControl 속성을 사용하여 잠긴 사용자를 식별 할 수 없습니다. 이에 대해 문서화 된 약간의 userAccountControl이 있지만 사용되지는 않습니다.

따라서 이것을 확인할 수 있습니다.

PS C:\Users\ryan> $(Search-ADAccount -LockedOut).Count
11
PS C:\Users\ryan> $(Get-ADUser -LDAPFilter "(&(objectCategory=User)(userAccountControl:1.2.840.113556.1.4.803:=16))").Count
0

마지막으로 주제에 대한 이 블로그 게시물 을 끝내고 싶습니다. 왜 이것이 lockoutTime>=1최고의 솔루션에 접근하고 있는지 설명 하지만, 이는 이야기의 일부일뿐입니다. lockoutTime이 과거 $ (도메인 잠금 기간)보다 큰 사용자 만 포함하도록 목록을 추가로 필터링해야합니다.


userAccountControl비트가 유효하지 않은 시점에 대한 문서를 찾고 싶습니다 . 메모리가 제공된다면 과거에는 잘 작동했습니다. AD 코드의 이후 개정판에서 기능이 제거되었는지 궁금합니다. 흠 ...
에반 앤더슨

저는 권위에 호소하는 것을 싫어하지만, Richard Mueller는 Windows 2000 이후로 작동하지 않았다고 말합니다.
Ryan Ries

SAM이있는 DC 로의 복제를 용이하게하기 위해 Windows NT 4.0 도메인 컨트롤러가있을 때 Windows 2000에서 작동한다고 생각합니다. 더 이상 NT 4.0 용으로 테스트 된 테스트 환경이 없습니다 (이전의 모든 VM을 삭제했습니다). 그러나 확실히 사용해 볼 것입니다. 이 것 가지고 내가 일을 볼 수있는 유일한 방법 계정 lockout--을 인식 할 수 있도록 SAM 전용 DC를위한 방법이 될 수 있습니다.
Evan Anderson

@EvenAnderson 난 당신의 연구를 진심으로 지원하고 테스트 결과를 열심히 기다리고 있습니다. :)
Ryan Ries
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.