[unix] gssapi-keyex 또는 gssapi-with-mic를 사용한 SSH 인증 (공개 키는 허용되지 않음)

회사에서 SSH 공개 키 인증을 사용하지 않도록 설정했기 때문에 비밀번호를 변경할 때마다 수동으로 입력해야합니다 (변경할 생각은 없습니다 /etc/ssh/sshd_config).

그러나 gssapi-keyexgssapi-with-mic인증 (아래 참조하시기 바랍니다 사용할 수 있습니다 ssh디버그 출력).

이 경우 자동 로그인을 어떻게 사용할 수 있습니까?
악용 gssapi-keyex및 / 또는 gssapi-with-mic인증이 가능합니까?

> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'hostxx.domainxx' is known and matches the RSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password
debug1: No more authentication methods to try.
Permission denied (gssapi-keyex,gssapi-with-mic,password).



답변

아마도.

  • 표준 로그인 프로세스의 일부로 또는 수동으로 ( kinit, Windows 용 MIT Kerberos) 클라이언트 시스템에서 프린시 펄에 대한 티켓을 얻을 수 있습니까 ?
  • 서버에 Kerberos 보안 주체가 있습니까 아니면 서버에 주체를 줄 수 있습니까? 형식이어야합니다 host/server.example.com@EXAMPLE.COM.
  • 되어 GSSAPI클라이언트에 인증 활성화?
  • 클라이언트는 DNS TXT 리소스 레코드 또는 로컬 매핑으로 서버가 속한 영역을 알고 있습니까?

위의 모든 내용 에 “예”라고 말하면 축하합니다 GSSAPIAuthentication.

  • 설정에 따라 자격 증명 위임을 활성화해야 할 수도 있습니다.

테스트 단계 :
(가정 : domain = example.com; 영역 = EXAMPLE.COM)

  1. kinit username@EXAMPLE.COM
    • 이상적으로는 표준 로그인 프로세스에서 pam_krb5또는에 pam_sss(with auth_provider = krb5)를 포함하여 처리합니다 pam stack.
  2. kvno host/server.example.com@EXAMPLE.COM
    • 이것은 디버깅 단계입니다. ssh유효한 캐시를 가지고 당신이 이야기하는 경우이 작업을 자동으로 수행 sshd하는 지원 gssapi-with-mic이나 gssapi-keyex.
  3. dig _kerberos.example.com txt 돌아와야한다 "EXAMPLE.COM"
    • 또한 매핑이 저장 될 수있는 [domain_realm]섹션 /etc/krb5.conf으로 .example.com = EXAMPLE.COM하지만, dns방법의 저울 훨씬 더.
  4. ssh -o GSSAPIAuthentication=yes username@server.example.com
    • 서버에서 교장과 다른 사용자 이름으로 로그인하려면 여기에 들어 가지 않는 세부 정보를 매핑해야합니다.

답변

4 단계 방법은 정확합니다 (DNS에는 더 우아하고 모든 Active Directory에 존재하는 Kerberos SRV 레코드도 있습니다). 나는 이것을 항상 사용하고 있으며 대부분 보안 및 제어 관련 이유로 위의 pubkey 방법을 옹호 해 왔습니다.

즉, 워크 스테이션에서 티켓을 얻은 후에는 준 대화식 일 수 있지만 대화 형 로그인 만 가능합니다. Kerberos 티켓은 SSH 에이전트와 매우 유사합니다. 일단 당신이 그것을 가지고, 새로운 연결은 즉각적이고 암호가 없습니다; 시간 제한이 있지만.

대화식 배치 로그인을 얻으려면 SSH 키의 개인 절반과 같이 Kerberos 계정의 암호가 기본적으로 포함 된 파일 인 keytab 파일을 가져와야합니다. 보안 예방 조치에 따라; 특히 키탭은 암호로 암호화되거나 보호되지 않기 때문입니다.

나는 사용자들에게 개인 계정에 대한 키탭을 제공하는 것을 꺼려하지만, 특히 다양한 배치 작업에 대한 최소한의 권한으로 서비스 계정을 적극적으로 사용하고 있습니다. 달성.

키탭은 Unix의 ktutil 또는 Windows의 KTPASS.EXE (AD Kerberos 서비스의 후자)를 사용하여 만들 수 있습니다. ktutil은 Heimdal과 MIT의 두 가지 맛으로 존재하며 구문이 다릅니다. 관련 시스템에서 맨 페이지를 읽으면 도움이됩니다.


답변