현재 호스트에 대한 SSH 및 종료 후 Kerberos 티켓 손실

현재 호스트에 대한 SSH 및 종료 후 Kerberos 티켓 손실

저는 CentOS 7.3을 사용하고 있습니다.

아래 시나리오에서 Kerberos TGT 손실을 방지하려면 어떻게 해야 합니까?

나는 로그아웃 시 Kerberos 티켓을 파기하지 않는 것이 보안에 미치는 영향을 이해하고 있으며 이에 대해 더 깊이 파고들 것입니다. 하지만 저는 아래에 제시하는 가장 간단한 예부터 시작하고 싶습니다.

[email protected]$ klist
klist: Credentials cache keyring 'persistent:25536700022:krb_ccache_h3j7qk7' not found

[email protected]$ kinit
Password for [email protected]:

[email protected]$ klist
Ticket cache: KEYRING:persistent:25536700022:krb_ccache_h3j7qk7
Default principal: [email protected]

Valid starting       Expires              Service principal
08/03/2018 17:06:45  08/04/2018 17:06:41  krbtgt/[email protected]

[email protected]$ ssh -K host
Last login: Fri Aug  3 17:06:21 2018 from 10.250.57.186

[email protected]$ klist
Ticket cache: KEYRING:persistent:25536700022:krb_ccache_h3j7qk7
Default principal: [email protected]

Valid starting       Expires              Service principal
08/03/2018 17:06:54  08/04/2018 17:06:41  krbtgt/[email protected]

[email protected]$ exit
logout
Connection to host closed.

[email protected]$ klist
klist: Credentials cache keyring 'persistent:25536700022:krb_ccache_h3j7qk7' not found

[email protected]$

업데이트 #1

다음과 같이 SSH 서버 구성을 업데이트하면 제시된 문제가 해결됩니다.

GSSAPICleanupCredentials no

그러나 이를 무조건적으로 수행하는 것은 보안에 부정적인 영향을 미치기 때문에 바람직하지 않습니다. 작업을 마친 후 만료되지 않은 티켓을 기계에 그대로 놔두는 것은 위험합니다.

사용 사례에 대한 자세한 내용
원격 호스트에서 명령을 실행하기 위해 SSH를 사용하고 있습니다. 원격 호스트에서 실행되는 명령은 SSH를 사용하여 또 다른 호스트에서 원격 명령을 실행할 수 있습니다. 이는 모두 스크립트로 작성/자동화되어 있으므로 비밀번호를 묻는 메시지가 표시되는 것을 허용할 수 없습니다. 이것이 내가 사용한 이유이다SSH -K. 그만큼-케이플래그는 Kerberos TGT를 SSH를 사용하는 호스트로 전달하므로 암호를 입력하지 않고도 해당 호스트에서 다른 호스트로 SSH를 연결할 수 있습니다.

특정 사용 사례에서는 명령을 실행하기 위해 SSH를 사용하는 "원격" 호스트 중 하나가 이미 있는 호스트인 경우가 있습니다. 위에 표시된 구성 변경 없이 "remote" 명령 실행이 완료되고 SSH 세션이 종료된 후 Kerberos 티켓이 삭제됩니다.우리가 지금 타고 있는 기계에서! 그런 다음 모든 호스트에 대해 비밀번호 없는 방식으로 SSH를 수행하는 기능을 상실했습니다.

사용 사례에 대한 안전한 솔루션 검색
무조건적인 보안 영향을 피하기 위해~ 아니다로그아웃 시 Kerberos 티켓을 파기하는 방법에 대해 좀 더 자세히 알아보고 싶습니다.

다음 중 하나를 수행할 수 있는 방법이 있습니까?

  1. SSH를 사용하려는 머신에 아직 Kerberos TGT가 없는 경우에만 Kerberos TGT를 전달하세요.
  2. 종료할 때만 Kerberos 티켓을 파기하십시오.마지막쉘 세션

내가 고려하지 않은 다른 가능성이 있습니까?

답변1

결국 .bash_profile에 다음을 넣었습니다.

cleanup()
{
   SHELL_COUNT=$(ps -elf | grep bash | grep $(whoami) | grep -v grep | wc -l)

   if [[ "$SHELL_COUNT" -eq 2 ]]; then
      kdestroy -q
   fi
}

trap '
   cleanup
' 0

관련 정보