OpenSSH를 통해 인증한 다음 하나의 티켓 서비스(Kerberos TGS 호스트/fqdn)만 사용하여 sudo를 수행하는 방법

OpenSSH를 통해 인증한 다음 하나의 티켓 서비스(Kerberos TGS 호스트/fqdn)만 사용하여 sudo를 수행하는 방법

지금까지 우리는 모든 서버(Debian 10~12)에서 OpenSSH GSSAPI 인증을 사용하고 있습니다. 그런 다음 sudo -i를 사용하고 sssd-ldap을 통해 LDAP 인증을 사용합니다.

OpenSSH와 Sudo 모두에서 LDAP 인증을 제거하고 GSSAPI에만 의존하고 싶습니다. 아이디어는 티켓 서비스를 Openssh(host/fqdn)로 전달하고 자격 증명 캐시(보통 /tmp/krb5...)에 저장한 다음 TGS를 유지하여 sudo를 인증하는 것입니다(GSSAPI로 sudo를 인증하기 위해 pam_sss_gss.so를 찾았습니다). ).

문제는... OpenSSH가 인증되면 티켓 서비스를 중단한다는 것입니다.

내 질문은 다음과 같습니다.

  1. 자격 증명 캐시 내에서 티켓 서비스를 openssh로 전달하는 방법이 있습니까? 나중에 sudo를 확인하는 데 도움이 될 것입니다.
  2. 1이 불가능하다면(제 생각에는 그럴 것 같습니다) 모든 서버에 TGT를 전달할 때 보안 문제가 있습니까? (TGT 수명은 4시간입니다.) 서버와 방화벽의 KDC 포트 88 사이에 스트림을 열어야 합니다.
  3. sudoer에서 NOPASSWD를 사용하는 것을 피하고 싶지만 sudo 그룹의 구성원이 kerberos를 통해 인증하는 경우 해당 그룹의 sudoer에 NOPASSWD를 넣는 데 보안 문제가 있습니까?
  4. 다른 의견이 있으시면 알려주시면 매우 감사하겠습니다.

감사해요.

답변1

자격 증명 캐시 내에서 티켓 서비스를 openssh로 전달하는 방법이 있습니까? 나중에 sudo를 확인하는 데 도움이 될 것입니다.

아니요, 이렇게 할 수 있는 방법은 없습니다. (이론적으로는 가능하지만 구현된 기능은 아닙니다.)

그러나 서비스가 자체 키 탭을 사용하여 사용자를 "대신"하여 자체 티켓을 얻는 PAM을 사용하여 "S4U2self" 티켓을 얻는 것이 가능합니다. (예를 들어 참조하십시오 kvno -I.)

( service ticket대신 , 라고도 합니다 ticket service.)

1이 불가능하다면(제 생각에는 그럴 것 같습니다) 모든 서버에 TGT를 전달할 때 보안 문제가 있습니까? (TGT 수명은 4시간입니다.)

예, SSH 에이전트 전달과 매우 유사합니다. 장기 자격 증명을 훔칠 수 없더라도 이론상 4시간 TGT할 수 있다도난당했습니다(정상 수명뿐만 아니라 재생 가능한 수명까지 연장됨).

이것이 귀하의 경우에 중요한 문제인지, 루트 액세스 권한을 얻고 다른 사용자의 티켓을 읽는 누군가에 대해 서버가 얼마나 잘 강화되었는지 결정하는 것은 귀하에게 달려 있습니다.

서버와 방화벽의 KDC 포트 88 사이에 스트림을 열어야 합니다.

이것은 문제가 되지 않습니다. (사실 나도 이유를 모르겠다)아니요이미 열려 있습니다. )

sudoer에서 NOPASSWD를 사용하는 것을 피하고 싶지만 sudo 그룹의 구성원이 kerberos를 통해 인증하는 경우 해당 그룹의 sudoer에 NOPASSWD를 넣는 데 보안 문제가 있습니까?

계획 중인 기능은 이미 NOPASSWD와 유사합니다. 아이디어는 pam_sss_gssapi가 성공하면 "비밀번호 요청" pam_unix 모듈에 전혀 도달하지 않고 PAM에서 즉시 반환된다는 것입니다.

그러나 NOPASSWD가 활성화되면 Kerberos 인증도 무시됩니다. 그 이유는 Sudo가 비밀번호를 명시적으로 묻지 않기 때문입니다.PAM을 호출하여 사용자를 인증합니다.NOPASSWD 플래그는 실제로 "PAM 인증 없음"을 의미합니다. (이것은 "비밀번호 없음"을 의미하지 않습니다. 단지 표준 PAM 모듈(pam_unix)에 비밀번호가 필요하다는 것입니다.) 그러나 NOPASSWD가 활성화되면 sudo는 인증을 위해 PAM을 호출하지 않으므로 pam_unix 및 pam_sss_gss를 건너뜁니다.

Windows Kerberos는 PAC를 사용하여 그룹 멤버십을 전달합니다. MIT Kerberos에서는 이 기능이 구현되지 않는 이유를 알고 계십니까?

"원래" Kerberos 배포판인 MIT Kerberos는 인증(액세스 제어)이 명시적으로 Kerberos 기능의 일부가 아닌 순전히 인증 시스템인 원래 디자인을 계속 따르고 있습니다.

내 말은 Linux의 NSS가 데이터베이스에 사용자 및 그룹에 대한 정보를 제공하기 위해 LDAP를 자주 폴링해야 한다는 것입니다.

하지만 사실은 그렇지 않아요투표모든 빈도의 LDAP; 사용자가 "로그인"할 때만 LDAP를 쿼리합니다. Windows와 크게 다르지 않습니다.

관련 정보