Utrata biletu Kerberos po SSH na bieżący host i wyjście

0

Korzystam z CentOS 7.3.

Jak mogę zapobiec utracie mojego protokołu Kerberos TGT w poniższym scenariuszu?

Rozumiem konsekwencje dla bezpieczeństwa związane z nieniszczeniem biletów Kerberos po wylogowaniu i będę zagłębiał się w to. Ale chcę zacząć od najprostszego możliwego przykładu, który przedstawiam poniżej.

[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]$

AKTUALIZACJA # 1

Aktualizacja konfiguracji serwera SSH w następujący sposób rozwiązuje przedstawiony problem:

GSSAPICleanupCredentials no

Jednak robienie tego bezwarunkowo jest niepożądane, ponieważ ma negatywne konsekwencje dla bezpieczeństwa. Pozostawienie niewygasłych biletów rezydentnych na maszynie po zakończeniu pracy nad nią jest niebezpieczne.

Więcej szczegółów na temat naszego przypadku użycia
Używamy SSH do wykonywania poleceń na zdalnych hostach. Komendy wykonywane na zdalnych hostach mogą z kolei używać SSH do wykonywania komend zdalnych na jeszcze innych hostach. To wszystko jest skrypty / zautomatyzowane, więc nie możemy pozwolić na monit o podanie hasła. Dlatego użyłem ssh -K . -K flaga przekazuje swoją Kerberos TGT do hosta jesteś SSHing się, tym samym umożliwiając SSH do innego hosta stamtąd bez konieczności podawania hasła.

W naszym szczególnym przypadku czasami zdarza się, że jednym z „zdalnych” hostów, których używamy SSH do wykonania polecenia, jest host, na którym już jesteśmy. Bez zmiany konfiguracji pokazanej powyżej, po zakończeniu wykonywania polecenia „zdalnego” i zakończeniu sesji SSH bilet Kerberos zostaje zniszczony - na komputerze, na którym aktualnie jesteśmy ! Następnie straciliśmy naszą zdolność do SSH w sposób bez hasła dla wszystkich hostów.

Poszukiwanie bezpiecznego rozwiązania naszego przypadku użycia
Aby uniknąć konsekwencji związanych z bezpieczeństwem bezwarunkowego nie niszczenia biletów Kerberos po wylogowaniu, chciałbym głębiej kopać.

Czy istnieje sposób na wykonanie jednej z poniższych czynności?

  1. Przekaż swój Kerberos TGT tylko wtedy, gdy nie znajduje się on jeszcze na komputerze, na którym SSHing
  2. Zniszcz bilety Kerberos tylko podczas wychodzenia z ostatniej sesji powłoki

Czy są inne możliwości, których nie rozważam?

Dave
źródło

Odpowiedzi:

0

Skończyło się na umieszczeniu w moim .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
Dave
źródło