Active Directory 2012 LDAP 통합 서비스 사용자 이름 항목이 사라 집니까?


8

AD 특성을 쿼리하기위한 Python 서비스 만들기

SASL (DIGEST-MD5)을 통해 Python-LDAP를 사용하여 Linux에서 Python을 실행하는 웹 서비스와 AD를 통합하여 AD 2012 사용자 특성 (구분, 부서, 전화 내선 번호, 전자 메일 등)을 쿼리하고 있습니다. AD 2003에 대한 서비스 관련 문제를 해결 한 후에 새 AD 2012에 대해 SPN 오류가 발생하기 시작했는데 digest-uri가 서버의 SPN과 일치하지 않습니다. 두 서버의 SPN 목록을 상호 참조했으며 서로 동일한 아날로그가 포함되어 있습니다.

오류 : digest-uri가이 서버에 등록 된 LDAP SPN과 일치하지 않습니다

수정?

이것은 다음을 실행하여 수정되었습니다.

setspn -A ldap/<Domain_Name> <Computer_Name>

다음 명령을 실행해도 서비스 계정을 만들면 SPN 오류가 해결되지 않았습니다.

setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>

simple_bind_s ()에는 SPN이 필요하지 않으며 sasl_interactive_bind_s ()에는 SPN이 필요합니다

SPN을 로컬 컴퓨터 SPN 목록에 추가하는 것만 sasl_interactive_bind_s ()를 사용하는 Python-LDAP 서비스에서 작동했습니다. simple_bind_s ()를 사용하면 SPN 단계를 건너 뛸 수 있지만이 메서드는 허용되지 않는 일반 텍스트로 자격 증명을 보냅니다.

그러나 레코드가 사라지기 전에 약 1 분 동안 만 SPN 목록에 남아 있음을 알았습니다. setspn 명령을 실행할 때 오류가없고, 이벤트 로그가 완전히 비어 있고, 중복 된 부분이 없으며, 기본 dn에서 -F 포리스트 전체 검색으로 확인하고 아무것도 확인하지 않았습니다. SPN을 추가하고 다시 추가하고 제거하고 SPN을 객체에서 객체로 이동하여 어디에서 숨어 있지 않은지 확인했지만 두 번째로 객체를 어디에나 추가 한 다음 다시 추가하려고하면 중복을 알립니다. 어딘가에 숨겨진 복제본이 없다고 확신합니다.

해킹

지금은 예약 된 작업을 수행하여 명령을 다시 실행하여 레코드를 목록에 보관하여 서비스가 "SPN Hack"으로 적절하게 작동하도록합니다.

cmd.exe /C "setspn -A ldap/<Domain_Name> <Computer_Name>"

SPN이 목록에서 정리되는 이유를 찾을 때까지

이 특정 AD의 기본 관리자가 아닙니다. 관리자가 AD의 다른 서비스에서 SPN을 동기화하는 서비스를 실행하고 알지 못합니까? 내 직책은 웹 개발자이며 변명이 아니라 Active Directory 문제에 대한 무지를 설명합니다. 나는 AD를 마스터 사용자 DB로 만들겠다고 들었고 많이 읽었지만 SPN이 정기적으로 '덮어 지거나'정리 된 문제가있는 곳을 찾을 수 없으며 관리자는 SQLServer 항목 외부의 SPN에 매우 익숙합니다.

왜 해킹이 필요한가요?

지금까지 내 해킹으로 인해 사용자 또는 서비스에 문제가 발생하지 않았으며 오류가 발생하지 않았으므로 관리자는 실행을 계속하고 계속 볼 것이라고 말합니다. 그러나 구현이 기본으로 제공되는 서비스, 본질적으로 cron hack / shiver를 작성하는 불안정한 상황에 처해 있습니다. 그래서 어떤 도움이라도 감사하겠습니다.


최신 정보

sysadmin과의 대화 후 그는 해킹 위에 서비스를 구축하는 것이 해결책이 아니라고 동의했기 때문에 내 목적으로 사용할 수있는 엔드 포인트 암호화로 로컬 서비스를 스핀 업 할 수있는 권한이 부여되었습니다. . SPN을 지우는 원인을 주시하겠습니다. 로컬 바인드는 Python-LDAP를 사용하는 데 문제가되지 않으며 로컬 서비스는 이미 한 시간 정도 지나면 이미 실행되고 있습니다. 본질적으로 LDAP에 내장 된 기능을 래핑하는 것은 불행하지만 우리가해야 할 일을합니다.


그건 미스터리입니다. SPN은 대개 저절로 사라지는 것이 아닙니다. 응용 프로그램이 삭제하고 있다고 생각합니다. Python-Ldap은 자동으로 자체 SPN을 등록합니까? 그렇다면 올바르게 수행하고 있습니까? 그 외에도 도메인 컨트롤러에서 개체 액세스 감사를 구성하여 몇 분마다 SPN을 삭제하는 담당자를 시도해야합니다.
Ryan Ries

1
Python-LDAP는 자체 SPN을 등록하지 않습니다. 나는 테스트 서비스와 네트워크에서 도둑질을했다. 표준 요청 흐름처럼 보인다. 이제 초기 요청이 AD 측에서 SPN의 목적을 어길 것 같은 것을 등록할지 여부와 관련하여 처음에? 나는 일반 텍스트 바인딩이 spn없이 작동한다는 것을 알고 있습니다. 광고에 대한 SPN 레코드가 없으면 실패하는 sasl 요청 일뿐입니다 .SPN을 외부에서 관리하는 서비스를 찾기 시작했습니다. 대체 스크립트가 어딘가에서 실행 중입니다.
Melignus

SPN이 사라진 이유를 찾았습니까? 몇 시간 후에도 같은 행동을하는 것 같습니다 ...
David

답변:


6

이것은 정말 흥미롭고 성가신 현상이며 여기서 무슨 일이 일어나고 있는지 알아 내야합니다.

다행히도 Windows Server에는 2008 년 이후 세분화 된 감사 정책이 있으며 감사를 사용하여 누가이 작업을 수행 했는지 추적 할 수 있습니다 . 그렇게하려면 다음이 필요합니다.

  1. SPN 수정이 발생하는 위치 찾기
  2. AD DS 개체 변경 감사 사용
  3. 개체에 감사 ACE 설정
  4. 오류를 재현
  5. 문제가되는 DC의 보안 로그 검사

SPN 수정이 발생하는 위치를 찾으십시오.

도메인 컨트롤러에서 관리자 권한 명령 프롬프트를 열고 다음 명령을 실행하십시오.

repadmin /showobjmeta . "CN=computerAccount,DC=domain,DC=local"|findstr servicePricipalName

출력에는 원래 servicePrincipalName 속성 값의 현재 버전을 쓴 도메인 컨트롤러의 이름이 포함됩니다. repadmin iz 보스

AD DS 개체 변경 감사를 사용하도록 설정합니다.

글로벌 감사 정책이 아직 정의되지 않은 경우 이전 단계에서 식별 된 도메인 컨트롤러의 로컬 보안 정책을 변경할 수 있습니다.

그룹 정책 관리 콘솔 ( gpmc.msc)을 열고를 찾아 Default Domain Controllers Policy편집하십시오.

  1. 이동 Computer Configuration -> Windows Settings -> Security Settings
  2. 선택하고 확장 Local Policies -> Security Options
  3. 있는지 확인 강제 감사 정책 하위 범주 설정 ... : 감사가 설정되어 사용 가능 클래식 카테고리가 이미 적용되어있는 감사 서브 카테고리를 강제 실행하십시오.
  4. 선택하고 확장 Advanced Audit Policy -> Audit Policies -> DS Access
  5. 디렉터리 서비스 변경 감사성공으로 설정되어 있는지 확인하십시오. 디렉토리 서비스 변경 감사

오브젝트에 감사 ACE를 설정하십시오.

Active Directory 사용자 및 컴퓨터 ( dsa.msc)를 열고 "보기"메뉴에서 "고급 기능"설정을 확인하십시오.
컴퓨터 계정 개체로 이동하여 마우스 오른쪽 단추를 클릭 한 다음 속성을 선택하십시오. 보안 탭을 선택하고 "고급"버튼을 누르십시오.

프롬프트에서 선택 감사 탭을과에 대해 감사하고 있습니다 "모든 속성 쓰기"되도록 모든 사람을 . 그렇지 않은 경우 또는 확실하지 않은 경우 새 항목을 추가하십시오.

  1. 추가를 누르 십시오 .
  2. 대상 주체로 "Everyone"을 입력하십시오.
  3. 유형으로 "성공"을 선택하십시오.
  4. 속성 아래로 스크롤하여 "Write servicePrincipalName"을 확인하십시오.
  5. 확인을 눌러 항목을 추가하고 ADUC를 종료하십시오.

( 게으른 경우 "모든 속성 쓰기"를 선택하면됩니다 )

오류를 재현

귀하의 질문에 따르면 SPN이 1 분마다 삭제되는 것처럼 보이므로 이것이 가장 쉬운 단계 일 것입니다. 그 동안 1 분의 음악 레슨 을 받으십시오 .

문제가되는 DC의 보안 로그 검사

1 분이 지났으므로 1 단계에서 보낸 사람으로 식별 된 도메인 컨트롤러의 보안 로그를 검사 해 봅시다. 큰 도메인에서는 문제가 될 수 있지만 필터링은 다음과 같이 도움이됩니다.

  1. 이벤트 뷰어를 열고 Windows Logs -> Security
  2. 오른쪽 창에서 Filter Current Log를 선택 하십시오.
  3. " <All Event IDs>" 라고 표시된 입력 필드에 5136을 입력하십시오 (디렉토리 오브젝트 수정을위한 이벤트 ID입니다).

이제 servicePrincipalName컴퓨터 계정 에서 속성의 각 변경에 대한 이벤트 항목을 찾을 수 있습니다.

변경을 담당하는 "주체"를 식별하고 변경 위치를 확인하십시오. 그 프로세스 / 기계 / 계정을 불로 죽여라!

피사체로 확인 된 경우 SYSTEM, ANONYMOUS LOGON또는 유사 일반적인 설명, 우리는 도메인 컨트롤러 자체에 대한 내부 처리 상대하고, 우리는 무슨 일이 일어나고 있는지 알아 일부 NTDS 진단 로깅을 중단해야합니다. 이 경우 질문을 업데이트하십시오


동일한 LDAP SPN 문제를 해결하려는 시도에서 똑같은 문제가 발생했습니다. 나는 당신의 제안을 따랐지만 SPN에 대한 나의 (성공적인) 수정 만 보았고 이후의 제거 기록은 없었습니다.
Grisha Levit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.