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?
- Przekaż swój Kerberos TGT tylko wtedy, gdy nie znajduje się on jeszcze na komputerze, na którym SSHing
- Zniszcz bilety Kerberos tylko podczas wychodzenia z ostatniej sesji powłoki
Czy są inne możliwości, których nie rozważam?