Windows 용 MIT Kerberos에 따른 다중 영역 및 다중 TGT FR에 대한

내 로컬 컴퓨터는 Windows 7 Pro를 사용하며 AD 서버에서 관리하는 영역 LR에 속합니다. 해당 영역의 네트워크에 연결된 상태에서 컴퓨터에 로그인합니다. Windows 용 MIT Kerberos를 사용하여 TGT를 볼 수 있습니다. 4.0.1.

외국 영역 FR의 리소스에 액세스하고 싶습니다. LR과 FR 간에는 Kerberos 트러스트가 없지만 서로간에 TCP 트래픽을 허용합니다. KDC (Red Hat IdM / FreeIPA)를 사용하여 FR에 대한 TGT를 요청하고 요청시 비밀번호를 성공적으로 입력합니다. 다시 한 번 Windows 용 MIT Kerberos를 사용하여 TGT를 볼 수 있습니다. 4.0.1. LR에서 시작했지만 비밀번호를 묻지 않고 SSH를 통해 FR의 리소스에 액세스 할 수 있습니다.

문제는 FR의 TGT를 얻을 때 LR 주체의 TGT가 사라집니다. FR TGT 만 MIT Kerberos에 표시됩니다. 컴퓨터를 잠근 다음 암호로 잠금 해제하면 FR TGT가 사라지고 새 LR TGT로 교체됩니다.

Windows 용 MIT Kerberos는 한 번에 하나의 TGT 만 저장할 수있는 것 같습니다. 각 TGT는 모든 의도와 목적을 위해 해당 영역에서 완전히 작동합니다. 각 영역마다 하나씩 두 개의 TGT를 한 번에 갖도록 MIT Kerberos를 구성하려면 어떻게해야합니까? 각각 다른 KRB5_CONFIG 및 로컬 키탭을 가리키는 여러 클라이언트 인스턴스로 “구분”할 수 있습니까? 내가 영역 간 트러스트가없는 경우에도 클라이언트 측 Kerberos 5의 대체 Windows 구현이 있습니까?

추신-나는 신뢰를 원하지 않습니다. 신뢰를 얻을 수 없습니다.

업데이트 : 나는이 문제를 혼란스럽게 할 수 있다고 생각했기 때문에 이러한 세부 사항 중 일부를 생략했습니다. 그러나 브래드의 대답에 따르면, 그것은 보증 될 수 있습니다. 내가 기대하는 대부분의 로컬 소프트웨어에서 Kerberos의 내장 윈도우 구현을 사용하고 항상 LR 키 탭을 사용합니다.

그러나 나와 같은 고급 사용자는 Cygwin에서 heimdal을 사용하여 FR에 SSH로 연결합니다. Cygwin DLL을 통해 전달되는 모든 것이 heimdal을 사용하고 LR TGT를 보지 못합니다 (기본적으로는 그렇지 않습니다). 나는 명시 적으로 kinit하고 움직입니다.

까다로운 부분은 Cygwin을 사용하지 않지만 PuTTY를 사용하는 사람을 지원 해야하는 비 파워 유저에게 제공됩니다. PuTTY를 사용하면 GSSAPI 구현에서 사용할 라이브러리 경로와 DLL을 모두 지정할 수 있습니다. 예를 들어, 기본 제공 Windows DLL 대신 MIT Kerberos DLL을 사용하도록 SSH 세션을 구성하고 있습니다. 나는 heimdal과 같은 LR TGT를 찾지 못하거나 여러 영역에서 여러 TGT를 허용하지 않는 DLL이 있기를 바랍니다. MIT Kerberos와 같은 GUI 창이 없어도되지만 도움이됩니다.



답변

글쎄, Windows로 할 수 없다고 말하지는 않지만 제한은 세션 기반 이라고 말할 것입니다 . 문제는 각 세션마다 Windows가 하나의 티켓을 캐시한다는 것입니다. 컴퓨터를 잠근 후 잠금을 해제하면 다른 세션이 시작되고 KDC에서 새 키가 요청됩니다. 컴퓨터에 로그 오프했다가 다시 로그온 할 때도 마찬가지입니다. 이 방법은 실제로 서버 세션에 대한 사용자 권한을 결정하는 방법입니다. 즉, 키 / 티켓을 캐시하여 시작하는 모든 서버 리소스 또는 세션이 암호를 요구할 필요는 없지만 결코 들어 본 적이 없습니다. 하나 이상을 캐시 할 수 있도록 읽거나 검색했습니다.

자, 당신은 이미 당신이 당신의 질문에 표시했다는 지식을 알고 있으므로 TGT가 발행되고 세션 기반 일 때 얻는 키를 Windows가 저장한다는 사실을 바탕으로 말할 것입니다. 그냥 JUST Windows에서 가능하다고 생각하십시오. Windows 용 MIT Kerberos는 한 명의 사용자로 두 개의 세션을 시작하는 방법이있을 수 있지만, 액세스하는 리소스가 어떤 티켓 / 키 쌍을 사용할지 어떻게 알 수 있는지 잘 모르겠습니다. 말이 돼?

Windows가 TGT / 키 쌍을 저장하는 방법에 대한 설명은이 내용을 참조하십시오.

그런데 아주 좋은 질문입니다.


답변

좋아, 나는 좀 더 연마가 필요한 작업 솔루션을 생각해 냈으므로 모든 환경에서 작동하지 않을 수도 있습니다.

이것은 다음과 함께 작동합니다.

  1. Windows 지원 도구 (KSETUP.EXE, KTPASS.EXE)가있는 Windows 4.0.1 용 MIT Kerberos
  2. 퍼티 0.63
  3. Windows 7 SP1

나는 MIT Kerberos 소스를 찾고 있었고 Windows 용 README를 발견했다 . Credentials Cache에 대한 다른 값이 특히 중요합니다 . 기본 값인 API : 를 사용하지만 MSLSA : 를 사용하여 놀랍게도 레지스트리를 찾았습니다 .

나는 다른 값으로 주위를 연주 ccname의 아래 HKEY_CURRENT_USER\Software\MIT\Kerberos5. 나는 MEMORY : 를 시도했는데 처음에는 재미있는 행동으로 이어졌다. PuTTY 세션을 열면 MIT Kerberos Ticket Manager 창이 복원되어 포 그라운드로 와서 자격 증명을 입력하도록 요청합니다. 와! 전에는 그런 일이 없었지만, 아쉽게 PuTTY는 그것을 거부 할 것입니다. 나를 위해 속임수를 쓴 가치는 FILE:C:\Some\Full\File\Path입니다. 지정된 파일에 대한 액세스를 보호하는 방법을 정확히 모르므로 독자에게 연습으로 남겨 두겠습니다. 나는 똑같은 창을 배경으로 행동했으며 이번에는 PuTTY만이 좋아했습니다. 또한 Ticket Manager 창에는 LR 및 FR 티켓이 모두 표시되었습니다. 티켓은 전달 가능한 것으로 입증되었으며 여러 Windows 잠금 / 잠금 해제 상태에서도 유지됩니다. 노트:레지스트리 편집 사이에 Ticket Manager를 완전히 종료했다가 다시 시작하십시오. APIccname 을 시도하지 않았습니다.

이것이 차이가 있는지는 모르겠지만 작동하기 전에 KSETUP 과 함께 놀았 습니다 . 처음에는 매개 변수가없는 KSETUP이 LR에 대한 정보를 보여줍니다. 로컬 워크 스테이션에 FR에 대한 정보를 추가했습니다.

ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported


답변

나에게는 실제로 Kerberos for Windows에 버그가있는 것처럼 보입니다.

나는 다음을 발견했다.

KfW 4.0.1 창에서 “티켓 받기”옵션을 사용하면 Just Works (TM); “티켓 받기”버튼을 누르고 로그온 할 때 얻은 원래 티켓에 대한 추가 티켓을 얻을 수 있습니다.

KfW 창에서 “기본 설정”옵션을 누른 경우 “티켓 받기”를 누를 때마다 해당 시점부터 알려진 티켓 목록에 다른 항목을 추가하는 대신 새 티켓이 기본 티켓을 대체합니다. . 그 시점에서 레지스트리를 확인하면 ccname(Toddius의 답변에서와 같이) 항목이 추가되었음을 나타냅니다. 이 항목을 제거 하면 놀랍게도 여러 티켓을 허용하는 이전 동작이 복원됩니다.


답변

Toddius의 대답에 따라 비슷한 상황에 동료가 있습니다 (Windows 7 Enterprise 64 비트, AD 도메인에 가입하고 Windows 4.0.1 용 MIT Kerberos 실행) .Kerberos Ticket Manager 사본은 한 명의 교장 / 한 명의 TGT 만 가질 수 있습니다. “티켓 받기”버튼을 사용하여 다른 프린시 펄에 대한 TGT를 얻을 때마다 이전 프린시 펄이 사라집니다.

README 검토하고 경로 의 ccname 키를 제외한 대부분의 레지스트리 키가 예상대로 설정되었습니다 . 이 키는 값으로 설정되었습니다 . 우리의 수정은로 변경했습니다 . 보다 구체적으로, 단계는 다음과 같습니다.HKEY_CURRENT_USER\Software\MIT\Kerberos5MSLSA:API:

  1. 다시 시작하기 때문에 다른 모든 응용 프로그램과 함께 Kerberos Ticket Manager를 종료하십시오.
  2. 레지스트리 경로 HKEY_CURRENT_USER\Software\MIT\Kerberos5에서 ccname 키를 API:(API, 콜론)으로 변경하십시오 .
  3. regedit를 종료하고 다시 시작하십시오.
  4. 다시 로그인 한 후 Kerberos Ticket Manager를 실행하고 Get Ticket 버튼을 사용하여 AD 이외의 주체의 TGT를 가져 오십시오.

위의 단계를 통해 모든 것이 작동했으며 동료는 이제 여러 주체 / TGT를 한 번에 볼 수 있습니다.

그런데 Windows 용 MIT Kerberos는 klist와 같은 자체 명령 줄 프로그램을 가져 오며 이러한 프로그램은 여러 자격 증명 캐시를 지원합니다. 64 비트 시스템에서 "C:\Program Files\MIT\Kerberos\bin\klist.exe" -A"여러 TGT를 가져온 후 실행 하면 MSLSA 캐시에 내 Active Directory 주체가 표시되고 각 추가 주체마다 하나의 API 캐시가 있습니다.

추신 :이 사이트의 첫 번째 글이므로 Toddius의 답변에 대한 설명으로 추가 할 수 없습니다. 사과!


답변