ktpass.exe 실행 후 30분 동안만 Kerberos 서비스 로그인 가능

ktpass.exe 실행 후 30분 동안만 Kerberos 서비스 로그인 가능

Apache 서버를 Kerberize하고 생성된 서버 주체가 Active Directory에 로그인하도록 허용하려고 합니다. 온라인에서 제공되는 수많은 튜토리얼 중 하나를 따랐는데 제대로 작동하는 것 같습니다. 저는 프로젝트의 Linux 측에 있고 기업 IT 팀은 Windows 측에 있습니다.

IT에서는 서비스 계정과 이에 대한 서비스 주체를 제공했습니다. 이 예에서는 이를 HTTP/라고 하겠습니다.[이메일 보호됨]. 그들은 AD 서버에서 ktpass.exe라는 도구를 실행하는 것과 관련된 해당 주체에 대한 keytab 파일을 나에게 제공했습니다.

AD/KDC의 KVNO와 keytab 파일이 일치하는지 확인했습니다. 모든 것이 잘되었습니다.

호스트 이름에 대한 적절한 DNS A 레코드가 있고 IP에 대한 적절한 PTR 레코드가 있습니다. 두 서버 모두 시간 동기화되어 있습니다.

다음과 같이 발급된 keytab 파일을 사용하여 위에 언급된 서비스 주체에 대해 AD/KDC에 티켓을 요청할 수 있습니다.

kinit -k -t http.keytab HTTP/[email protected]

이것은 작동합니다. 티켓을 얻었고 이 티켓을 AD/LDAP 디렉터리 쿼리와 같은 작업에 사용할 수 있습니다. 또한 키탭은 이 연습의 목표 중 하나인 Single Signon Apache 사이트를 실행하는 데에도 적합합니다.

30분이 지났습니다.

이제 위의 kinit 명령을 사용하여 로그온하려는 시도가 다음 메시지와 함께 실패합니다.

Client not found in Kerberos database

마치 AD 서버에서 주체가 삭제된 것처럼 서비스 주체로 인증할 수 없습니다.

이제 적어도 나에게는 이상해집니다.

요청에 따라 AD 관리자는 ktpass.exe 도구를 다시 실행하여 내 서비스에 대한 새로운 keytab 파일을 구축합니다. 서버에서 KVNO(키 버전 번호)가 증가하여 Apache 테스트 서버가 Kerberos 싱글 사인온 유효성 검사를 중지합니다. 현재 구성에서는 이것이 예상됩니다. 우리 모두를 놀라게 한 것은 이제 kinit 명령이 다시 작동했다는 것입니다. 우리는 30분을 더 벌었고, 그 후 다시 작동을 멈췄습니다.

우리 IT 부서는 여기서 당황하고 있으며 이것이 AD 서버 자체의 문제라고 추측하고 있습니다. 나는 그것이 구성이라고 생각하고 있지만 그들에 따르면 그들의 설정에는 30분 제한이 없다고 합니다.

나는 팔로우했다http://www.grolmsnet.de/kerbtut/(섹션 7 참조) 그러나 방법은 내가 찾은 모든 문서에서 동일한 것 같습니다. 서비스 주체의 시간 제한에 대한 참조를 찾지 못했습니다.

편집: 이는 복제 문제인 것 같습니다. 복제 과정에서 오류는 보고되지 않지만 서비스 계정의 SPN 값이 "HTTP/[이메일 보호됨]" 에게 "[이메일 보호됨]"30분 후에요.

답변1

모든 의견을 보내주셔서 감사합니다. 우리는 Microsoft를 참여시켰고 AD 측의 인증 프로세스를 디버그하는 데 도움을 주었습니다. 모든 것이 예상대로 작동했지만 30분 후에 실패했습니다.

원격 디버깅 세션을 수행하는 동안 참가자 중 한 명이 서비스 계정의 UPN/SPN이 갑자기 재위치된 것을 발견했습니다.HTTP/[이메일 보호됨]에게[이메일 보호됨]. AD 복제 디버깅을 포함하여 많은 조사 끝에 우리는 범인을 발견했습니다.

누군가 주기적으로(또는 ktpass.exe를 실행한 지 정확히 30분이 지났으므로 이벤트별로) 실행되는 스크립트를 만들었고, UPN/PSN을 다음과 같이 업데이트했습니다."클라우드 연결 보장". 이 작업을 수행하는 이유에 대한 추가 정보가 없습니다.

다음으로 끝나는 기존 UPN/SPN 값을 허용하도록 스크립트가 변경되었습니다.@mycorp.com, 효과적으로 문제를 해결합니다.

다음과 같은 문제 디버깅을 위한 팁:

  • 인증에 참여하는 모든 참가자가 동일한 암호화 유형을 지원하는지 확인하세요. DES를 피하세요. 오래되고 안전하지 않습니다.
  • 서비스 계정에서 AES-128 및 AES-256 암호화를 활성화해야 합니다.
  • 서비스 계정에서 DES를 활성화하면"이 계정에는 DES만 사용하세요", AES 암호화를 활성화한 경우에도 마찬가지입니다. 검색해 보세요UF_USE_DES_KEY_ONLY이에 대한 자세한 내용은.
  • UPN/SPN 값이 정확하고 발급된 keytab 파일의 값과 일치하는지 확인하세요(즉, LDAP 조회를 통해).
  • keytab 파일의 KVNO(키 버전 번호)가 서버의 버전 번호와 일치하는지 확인하세요.
  • 서버와 클라이언트 간 트래픽 검사(예: tcpdump 및/또는 WireShark 사용)
  • AD 측에서 인증 디버깅 활성화 - 로그 검사
  • AD 측에서 복제 디버깅 활성화 - 로그 검사

귀하의 의견에 다시 한 번 감사드립니다.

답변2

mod_auth_kerb나는 또한 정말 좋은 문서인 Achim Grolms의 튜토리얼을 시작으로 Kerberos를 배웠습니다 .

파일 은 keytab비밀번호 인증만 대체합니다. 비밀번호는 파일에 인코딩되어 있으며 이 바이트는 KDC의 인증 문제에 사용됩니다. 서비스 계정의 비밀번호를 변경하면 keytab 인증이 무효화되고 kvno 번호도 늘어납니다.

서비스 계정 SPN이 사용 가능한지 확인하기 위해 종종 서비스 계정 비밀번호로 인증합니다.

kinit HTTP/[email protected]

실패하는 경우 서비스 계정이 비활성화되어 있지 않은지 확인하려면 기본 인증을 시도하세요.

kinit account

인증에 실패한 경우 문제를 방지하려면 계정을 삭제하고 다른 로그인 이름으로 새 계정을 만드세요.

다른 소프트웨어(예: 동일한 SPN에 대해 이전에 생성된 키탭이 있는 다른 시스템)가 이 서비스 계정에 대해 인증을 시도하고 잘못된 암호로 인해 계정을 비활성화할 가능성이 높습니다.

Kerberos SSO를 설정할 때 작업 속도가 너무 빠르면 Active Directory에서 불일치가 발생할 수 있습니다. 구성 프로세스가 중단될 때 일반적인 지침은 다음 단계를 따르는 것입니다.

  • 테스트 및 프로덕션 시스템에 대한 "오래된" 또는 "실패하는" 서비스 계정 삭제
  • kvno구성하려는 SPN이 영역에 더 이상 존재하지 않는지 확인하세요 .
  • setspn -X여러 계정에 충돌하는 SPN이 없는지 확인하세요.
  • 새로운 로그인 이름을 사용하여 정규화된 단일 SPN 전용으로 시스템당 하나의 서비스 계정을 만듭니다.
  • 서비스 계정의 비밀번호 변경 및 비밀번호 만료 방지
  • DC 동기화를 위해 잠시 기다리자
  • ktpass키탭 생성 시 비밀번호를 옵션으로 설정
  • FQDN SPN 및 별칭을 확인하십시오.setspn -l account

다음은 DC에서 서비스 계정을 구성하는 명령 집합입니다.

ktpass -princ HTTP/[email protected] -mapuser [email protected]
  -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL
  -pass long!$longp2ass3word -out c:\temp\http-mysite-mycorp-com.keytab
setspn -a HTTP/mysite mysiteAccount
setspn -l mysiteAccount

MMC와 관리 명령줄에서 키탭 생성을 위해 ktpass를 실행하는 사이의 서로 다른 DC에서 작업이 너무 빠르게 수행되면 DC 동기화로 인해 설명하는 것과 같은 예기치 않은 결과가 발생할 수 있습니다. 그럼 계정 생성 ktpass과 추가 명령 사이에 잠시 기다려 보겠습니다 setspn.

모든 것이 제대로 작동하는지 확인하기 위해 Linux에서 실행하는 명령은 다음과 같습니다.

kinit [email protected]
kinit HTTP/[email protected]
kinit -k -t http-mysite-mycorp-com.keytab HTTP/[email protected]
kvno HTTP/mysite.mycorp.com
kvno HTTP/mysite

관련 정보