Ich verwende CentOS 7.3.
Wie kann ich den Verlust meines Kerberos-TGT im folgenden Szenario verhindern?
Ich verstehe die Sicherheitsauswirkungen, die entstehen, wenn Kerberos-Tickets beim Abmelden nicht gelöscht werden, und werde mich näher damit befassen. Aber ich möchte mit dem einfachsten möglichen Beispiel beginnen, das ich unten vorstelle.
[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]$
UPDATE #1
Das Aktualisieren der SSH-Serverkonfiguration wie folgt löst das dargestellte Problem:
GSSAPICleanupCredentials no
Dies bedingungslos zu tun ist jedoch nicht wünschenswert, da es negative Auswirkungen auf die Sicherheit hat. Es ist gefährlich, nicht abgelaufene Tickets auf einem Rechner zu belassen, nachdem Sie mit der Arbeit daran fertig sind.
Weitere Details zu unserem Anwendungsfall
Wir verwenden SSH, um Befehle auf Remote-Hosts auszuführen. Die auf den Remote-Hosts ausgeführten Befehle können wiederum SSH verwenden, um Remote-Befehle auf weiteren Hosts auszuführen. Dies ist alles geskriptet/automatisiert, daher können wir keine Aufforderung zur Eingabe eines Passworts zulassen. Aus diesem Grund habe ichssh -K. Der-KFlag leitet Ihr Kerberos-TGT an den Host weiter, mit dem Sie per SSH verbunden sind. Dadurch können Sie von dort aus per SSH auf einen anderen Host zugreifen, ohne zur Eingabe eines Kennworts aufgefordert zu werden.
In unserem speziellen Anwendungsfall kommt es manchmal vor, dass einer der „Remote“-Hosts, auf denen wir per SSH einen Befehl ausführen, der Host ist, auf dem wir uns bereits befinden. Ohne die oben gezeigte Konfigurationsänderung wird das Kerberos-Ticket zerstört, nachdem die Ausführung des „Remote“-Befehls abgeschlossen und die SSH-Sitzung beendet wurde.auf der Maschine, auf der wir uns gerade befinden! Wir können nun nicht mehr per SSH auf alle Hosts zugreifen, ohne dass ein Passwort erforderlich ist.
Suche nach einer sicheren Lösung für unseren Anwendungsfall
Um die Sicherheitsrisiken einer bedingungslosennichtZerstörung von Kerberos-Tickets beim Abmelden, ich würde gern tiefer graben.
Gibt es eine Möglichkeit, eines der folgenden Dinge zu tun?
- Leiten Sie Ihr Kerberos-TGT nur weiter, wenn es sich nicht bereits auf dem Computer befindet, mit dem Sie per SSH kommunizieren.
- Vernichten Sie Ihre Kerberos-Tickets nur beim Verlassen IhreszuletztShell-Sitzung
Gibt es andere Möglichkeiten, die ich nicht in Betracht ziehe?
Antwort1
Ich habe schließlich Folgendes in mein .bash_profile eingefügt:
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