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