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.

user@host.example.com$ klist
klist: Credentials cache keyring 'persistent:25536700022:krb_ccache_h3j7qk7' not found

user@host.example.com$ kinit
Password for user@example.com:

user@host.example.com$ klist
Ticket cache: KEYRING:persistent:25536700022:krb_ccache_h3j7qk7
Default principal: user@example.com

Valid starting       Expires              Service principal
08/03/2018 17:06:45  08/04/2018 17:06:41  krbtgt/example.com@example.com

user@host.example.com$ ssh -K host
Last login: Fri Aug  3 17:06:21 2018 from 10.250.57.186

user@host.example.com$ klist
Ticket cache: KEYRING:persistent:25536700022:krb_ccache_h3j7qk7
Default principal: user@example.com

Valid starting       Expires              Service principal
08/03/2018 17:06:54  08/04/2018 17:06:41  krbtgt/example.com@example.com

user@host.example.com$ exit
logout
Connection to host closed.

user@host.example.com$ klist
klist: Credentials cache keyring 'persistent:25536700022:krb_ccache_h3j7qk7' not found

user@host.example.com$

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?

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.