내 로컬 컴퓨터는 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가 사라진다는 것입니다. MIT Kerberos에서는 FR TGT만 표시됩니다. 컴퓨터를 잠근 다음 비밀번호로 잠금을 해제하면 이제 FR TGT가 사라지고 새로운 LR TGT로 대체됩니다.
Windows용 MIT Kerberos는 한 번에 하나의 TGT만 저장할 수 있는 것 같습니다.각 TGT는 모든 의도와 목적을 위해 해당 영역에서 완벽하게 작동합니다. 각 영역마다 하나씩, 동시에 두 개의 TGT를 갖도록 MIT Kerberos를 구성하려면 어떻게 해야 합니까? 각각 다른 KRB5_CONFIG 및 로컬 키탭을 가리키는 여러 클라이언트 인스턴스로 "구획화"할 수 있습니까? 그럴 수 없다면 영역 간 트러스트가 없는 경우에도 이를 수행하는 클라이언트 측 Kerberos 5의 대체 Windows 구현이 있습니까?
추신 - 나는 신뢰를 원하지 않습니다. 신뢰를 얻을 수 없습니다.
업데이트:문제를 혼란스럽게 할 수 있다고 생각했기 때문에 이러한 세부 사항 중 일부를 이전에 생략했습니다. 그러나 브래드의 대답에 따르면 그것은 타당할 수도 있습니다. 나는 기대최대로컬 소프트웨어는 Windows에 내장된 Kerberos 구현을 사용하고 항상 LR 키탭을 사용합니다.
그러나 나와 같은 고급 사용자는 Cygwin에서 heimdal을 사용하여 FR에 SSH로 연결합니다. 나는 Cygwin DLL을 통해 heimdal을 사용하고 LR TGT를 결코 볼 수 없을 것으로 예상합니다(적어도 기본적으로는 그렇지 않습니다). 나는 명시적으로 kinit하고 계속 진행합니다.
Cygwin을 사용하지 않지만 PuTTY를 사용하는 사용자를 지원해야 하는 비고급 사용자에게는 까다로운 부분이 있습니다. PuTTY에서는 사용할 GSSAPI 구현에 대한 라이브러리 경로와 DLL을 모두 지정할 수 있습니다. 예를 들어, 내장된 Windows DLL 대신 MIT Kerberos DLL을 사용하도록 SSH 세션을 구성하고 있습니다. 나는 LR TGT(예: heimdal)를 찾으려고 시도하지 않았거나 여러 영역의 여러 TGT를 허용하는 DLL이 있기를 바랐습니다. MIT Kerberos와 같은 GUI 창을 가질 필요는 없지만 도움이 됩니다.
답변1
글쎄요, Windows에서는 할 수 없다고는 말하지 않겠지만, 그렇다고 말씀드리겠습니다.제한은 세션 기반입니다. 그러면 문제는 Windows가 각 세션마다 하나의 티켓을 캐시한다는 것입니다. 컴퓨터를 잠근 다음 잠금을 해제하면 다른 세션이 시작되고 KDC에서 새 키가 요청됩니다. 로그오프한 다음 컴퓨터에 다시 로그인해도 동일한 현상이 발생합니다. 이 방법은 실제로 서버 세션에 대한 사용자 권한을 결정하는 방법이기도 합니다.즉, 키/티켓을 캐시하여 귀하가 시작한 모든 서버 리소스 또는 세션에서 비밀번호를 묻지 않아도 되지만 둘 이상을 캐시할 수 있다는 이야기를 들어본 적도, 읽은 적도, 조사한 적도 없습니다.
이제 질문에 표시한 지식을 바탕으로 이미 알고 계실 것입니다. 따라서 Windows가 TGT가 발행될 때 얻은 키를 세션 기반으로 저장한다는 사실을 바탕으로 말씀드리겠습니다. Windows에서만 가능하다고 생각하세요. Windows용 MIT Kerberos에는 한 명의 사용자로 두 개의 세션을 시작하는 방법이 있을 수 있지만, 그럼에도 불구하고 액세스 중인 리소스가 사용할 티켓/키 쌍을 어떻게 알 수 있는지 잘 모르겠습니다. 말이 돼?
Windows가 TGT/키 쌍을 저장하는 방법에 대한 설명은 여기를 참조하세요.
그런데 아주 좋은 질문입니다.
답변2
좋아, 좀 더 다듬어져야 할 작동하는 솔루션을 생각해 냈기 때문에 모든 환경에서 작동하지 않을 수도 있습니다.
이는 다음과 함께 작동합니다.
저는 MIT Kerberos 소스를 검색하다가 다음과 같은 내용을 발견했습니다.Windows용 읽어보기. 특히 흥미로운 점은자격 증명 캐시. 이는 다음의 기본값을 지지합니다.API:, 하지만 놀랍게도 다음을 사용하여 레지스트리를 찾았습니다.MSLSA:대신에.
나는 다른 가치를 가지고 놀았습니다.참조 이름아래에 HKEY_CURRENT_USER\Software\MIT\Kerberos5
. 나는 노력했다메모리:처음에는 흥미로운 행동으로 이어집니다. PuTTY 세션을 열면 MIT Kerberos 티켓 관리자 창이 복원되고 전경으로 나타나 자격 증명을 입력하라는 메시지가 표시됩니다. 우와! 이전에는 그런 일이 일어나지 않았지만 아쉽게도 PuTTY는 이를 거부했습니다. 나를 위해 트릭을 수행한 값은 FILE:C:\Some\Full\File\Path
. 지정된 파일에 대한 액세스를 보호하는 방법을 정확히 알지 못하므로 독자를 위한 연습으로 남겨 두겠습니다. 나는 동일한 창에서 전경 동작을 얻었지만 이번에는 PuTTY만이 그것을 좋아했습니다. 티켓 관리자 창에도 마침내 LR 및 FR 티켓이 모두 표시되었습니다. 티켓은 전달이 가능하며 여러 번의 Windows 잠금/잠금 해제 후에도 유지되는 것으로 입증되었습니다.메모:레지스트리 편집 사이에 티켓 관리자를 완전히 종료했다가 다시 시작하십시오. 나는 한번도 시도해본 적이 없다.참조 이름~의API:아직.
이것이 차이가 있는지는 모르겠지만 나는 또한KSETUP이것이 작동하기 전에. 처음에는 매개변수가 없는 KSETUP이 LR에 대한 정보만 표시했습니다. 내 로컬 워크스테이션에 FR에 대한 정보를 추가했습니다.
ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported
답변3
제가 보기에는 Windows용 Kerberos에 실제로 버그가 있는 것 같습니다.
나는 다음을 발견했습니다 :
KfW 4.0.1 창에서 "티켓 받기" 옵션을 사용하면 Just Works(TM)가 작동합니다. "티켓 받기" 버튼을 누르고 티켓을 얻을 수 있습니다.추가의로그인할 때 받은 원래 티켓에 대한 티켓입니다.
KfW 창에서 "기본값으로 설정" 옵션을 누르면 그 시점부터 "티켓 받기"를 누를 때마다 새 티켓이바꾸다알려진 티켓 목록에 다른 항목을 추가하는 대신 모든 티켓이 기본값입니다. 해당 시점에서 레지스트리를 확인하면 ccname
항목(Toddius의 답변에서와 같이)이 추가되었음을 알 수 있습니다.풀이놀랍게도 해당 항목은 여러 티켓을 허용하는 이전 동작을 복원합니다.
답변4
Toddius의 답변에 이어 비슷한 상황에 처한 동료가 있습니다(Windows 7 Enterprise 64비트, AD 도메인에 가입, Windows 4.0.1용 MIT Kerberos 실행). 그의 Kerberos Ticket Manager 사본은 다음과 같습니다. 그에게 하나의 주체/하나의 TGT만 허용합니다. 그가 다른 주체에 대한 TGT를 얻기 위해 "티켓 받기" 버튼을 사용할 때마다 이전 주체는 사라지게 됩니다.
나는읽어보기, 대부분의 레지스트리 키가 예상대로 설정되었습니다.제외하고에 대한참조 이름경로의 키입니다 HKEY_CURRENT_USER\Software\MIT\Kerberos5
. 해당 키는 값으로 설정되었습니다 MSLSA:
. 우리의 해결책은 그것을 API:
. 보다 구체적으로 단계는 다음과 같습니다.
- 다시 시작하게 되므로 다른 모든 응용 프로그램과 함께 Kerberos 티켓 관리자를 종료합니다.
- 레지스트리 경로에서
HKEY_CURRENT_USER\Software\MIT\Kerberos5
다음을 변경합니다.참조 이름API:
(API, 그다음 콜론) 에 대한 키입니다 . - regedit를 종료하고 다시 시작하십시오.
- 다시 로그인한 후 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의 답변에 댓글로 추가할 수 없었습니다. 사과!