퍼티 Kerberos / GSSAPI 인증


9

RHEL6에서 sssd를 사용하여 Active Directory Kerberos로 인증하도록 일부 Linux 서버를 구성했습니다. 또한 암호없는 로그인을 위해 GSSAPI 인증을 활성화했습니다.

그러나 암호가 없으면 퍼티 (0.63)를 인증받을 수 없습니다.

GSSAPI는 .ssh / config 설정을 사용하여 GSSAPI를 활성화하는 AD 인증 용으로 구성된 Linux 시스템 (openSSH 클라이언트)간에 작동합니다.

Cygwin (openSSH 클라이언트)에서도 동일한 .ssh / config 설정을 사용하고 kinit 명령을 실행하여 티켓을 얻습니다.

또한 홈 디렉토리를 포함하여 모든 Linux 시스템에서 Samba 공유는 암호없이 Windows 탐색기에서 작동합니다 (GSSAPI가 작동하는지 확실하지 않습니다)

이 문제를 해결하기 위해 어떤 종류의 것들을 시도 할 수 있습니까? 대부분의 사용자는 퍼티를 사용합니다. 또한 Windows 관리자가 아니므로 도메인 컨트롤러에서 아무것도 할 수 없습니다. 내 계정에는 AD 도메인에 서버를 추가 할 수있는 권한 만 있습니다.


퍼티 SSH 패킷 로깅을 켰습니다. 나는 이런 종류의 흥미로운 것을 발견했다. 나는이 정보로 무엇을 해야할지 모르겠다.

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.63
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Incoming packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Event Log: Doing Diffie-Hellman group exchange
Outgoing packet #0x1, type 30 / 0x1e (SSH2_MSG_KEX_DH_GEX_REQUEST)
Incoming packet #0x1, type 31 / 0x1f (SSH2_MSG_KEX_DH_GEX_GROUP)
Event Log: Doing Diffie-Hellman key exchange with hash SHA-256
Outgoing packet #0x2, type 32 / 0x20 (SSH2_MSG_KEX_DH_GEX_INIT)
Incoming packet #0x2, type 33 / 0x21 (SSH2_MSG_KEX_DH_GEX_REPLY)
Outgoing packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Outgoing raw data at 2014-11-25 00:21:08
Incoming packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Outgoing packet #0x4, type 5 / 0x05 (SSH2_MSG_SERVICE_REQUEST)
Incoming packet #0x6, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
Event Log: Using SSPI from SECUR32.DLL
Event Log: Attempting GSSAPI authentication
Outgoing packet #0x6, type 50 / 0x32 (SSH2_MSG_USERAUTH_REQUEST)
Incoming packet #0x7, type 60 / 0x3c (SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)
Event Log: GSSAPI authentication initialised
Outgoing packet #0x7, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Incoming packet #0x8, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Event Log: GSSAPI authentication initialised
Event Log: GSSAPI authentication loop finished OK
Outgoing packet #0x8, type 66 / 0x42 (SSH2_MSG_USERAUTH_GSSAPI_MIC)
Incoming packet #0x9, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.

1
ssh 데몬 밤에 디버그를 켜면 유용한 정보가 표시됩니다. 테스트를 위해 항상 다른 포트에서 두 번째 인스턴스를 시작할 수 있습니다.
Paul Haldane

답변:


7

Active Directory 도메인의 일부인 Windows 시스템에서 사용자는 Windows에 로그인 할 때 Kerberos 티켓 부여 티켓을 받게되며 PuTTY Configuration Connection | SSH | Auth | GSSAPI에서 GSSAPI 인증이 활성화 된 경우 PuTTY는이를 인증에 사용할 수 있습니다 (및 Pageant를 통한 공개 키와 같은 GSSAPI 이전에 시도하는 다른 인증 방법은 Connection | SSH | Auth에서 설정되거나 비활성화되지 않습니다).

[티켓 위임이 필요한 경우 (예 : 로그인 후 서버에 Kerberos화된 파일 시스템을 마운트하기 위해) PuTTY에서도 GSSAPI 위임이 활성화되어 있고 로그인 한 서버가 위임 탭의 Active Directory에 다음과 같이 표시되어 있는지 확인하십시오. " 이 서비스는 모든 서비스 (Kerberos 만 해당)에 위임되도록 기본 설정되어 있지 않습니다". AD의 후자의 트러스트 설정은 이상하게도 위임이 PuTTY와 같은 Windows 클라이언트에서 작동하는 데만 필요합니다. Linux "ssh -K"클라이언트에는 필요하지 않습니다.]

Active Directory 도메인에 속하지 않은 자체 관리 형 (개인용) Windows 시스템에서는 PuTTY를 통해 Kerberos / GSSAPI 인증 (및 티켓 위임)을 계속 사용할 수 있지만 티켓을 직접 가져와야합니다. 불행히도, Windows 7에는 kinit 프로그램과 동등한 기능이 설치되어 있지 않으며 (티켓을 수동으로 요청하기 위해) 티켓이없는 경우 PuTTY에서도 Kerberos 암호를 입력하라는 메시지를 표시하지 않습니다. 따라서 Windows 용 MIT Kerberos 를 설치해야합니다.패키지에는 일반적인 kinit / klist / kdestroy 명령 줄 도구와 깔끔한 GUI 도구 "MIT Kerberos Ticket Manager"가 모두 포함되어 있습니다. 그것들을 사용하여 티켓을 받으면 PuTTY는 Microsoft SSPI 대신 MIT GSSAPI 라이브러리를 자동으로 사용하며 모든 것이 작동합니다. "MIT Kerberos Ticket Manager"가 실행 중이면 PuTTY에 티켓이 필요할 때 Kerberos 암호를 묻는 메시지가 자동으로 표시되므로 Startup 폴더에서 연결하는 것이 좋습니다.


1
그 후 Windows에는 실제로 kinit라는 MIT Kerberos 명령 과 동등한 기능이 있다는 것을 알게되었습니다 cmdkey.
Markus Kuhn

1
티켓 위임 활성화와 관련하여 Active Directory 가 실제로 Microsoft LDAPv3 이라는 사실을 이해하는 사람 중 하나 인 경우 Kerberos 티켓을 위임 할 서비스 주체의 LDAP 항목이 userAccountControl에 있어야합니다. 비트 TRUSTED_FOR_DELEGATION = 0x80000 = 524288이 설정되었습니다.
Markus Kuhn

참고로 "이 서비스를 모든 서비스에 위임하기 위해이 컴퓨터를 신뢰 (Kerberos 만 해당)"(예 : 제한되지 않은 Kerberos 위임)를 고려하는 사람에게는 고려해야 할 심각한 보안 문제가 있습니다. 먼저 adsecurity.org/?p=1667을 읽는 것이 좋습니다 .
Brad

3

먼저 PuTTY를 실행하는 Windows 상자의 klist 출력에 유효한 TGT가 표시되는지 다시 확인하십시오. 그런 다음 PuTTY 세션 구성에서에서 GSSAPI 인증 시도 가 활성화되어 있는지 확인하십시오 Connection - SSH - Auth - GSSAPI. 마지막으로에서 사용자 이름으로 자동 로그인하도록 구성되어 있는지 확인하십시오 Connection - Data. 사용자 이름을 명시 적으로 지정하거나 시스템 사용자 이름 사용 라디오 버튼을 선택할 수 있습니다 .

지금까지는 Kerberos를 통해 비밀번호없는 SSH 로그인을 수행하기 위해 필요한 모든 것입니다.


1
klist tgt는 나에게 의미가있는 것 같습니다. 전달 가능하다고 말합니다. klist는 Exchange와 같은 것들을위한 5 개의 키를 보여줍니다. 또한 ssh하려는 Linux 서버 티켓이 있습니다. 퍼티 구성을 100 번 살펴 보았습니다. 모든 온라인 문서 / 가이드는 거의 동일한 내용을 말하므로 부분이 올바르게 설정되어 있다고 확신합니다.
xdaxdb

3

문제가 Windows Kerberos 설정에있었습니다. Active Directory가 펑키하게 설정되어 있다고 생각합니다. Windows 관리자가 아닌 것 같습니다.

그러나 Windows 7 CLI에서 ksetup을 사용하여 Kerberos를 수동으로 구성하여 문제를 해결했습니다.

원격 워크 스테이션으로 재부팅 한 후 PC에 로그인 할 수 없습니다. 원래 구성에서는 영역 도메인의 TLD 부분이 항상 없었지만 (도메인 \ 사용자) 수동으로 구성한 후 전체 영역 도메인 이름 (domain.TLD \ user)을 반영하도록 로그인 도메인을 변경해야했기 때문입니다. 인증하는 데 시간이 오래 걸리지 만 Windows PC에 로그인 할 수있었습니다.

변경하기 전에 ksetup의 출력은 기본 영역 만 표시했으며 소문자였습니다.

"nslookup -type = SRV _kerberos._tcp.domain.TLD"를 사용하여 해당 영역의 모든 kdc 서버를 가져 왔습니다.

플래그를 설정하지 않았습니다.

내 사용자 이름 "ksetup / mapuser user@domain.TLD 사용자"를 설정했습니다.

내가 사용한 리소스 : https://wiki.ncsa.illinois.edu/display/ITS/Windows+7+Kerberos+Login+using+External+Kerberos+KDC

https://www.cgl.ucsf.edu/Security/CGLAUTH/CGLAUTH.html

누구든지 Windows 관리자 에게이 문제를 해결할 수있는 방법에 대해 제안 할 수있는 제안이 있으면 (파손 되었습니까?) 전달하겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.