SSH Single-Sign-On mit Kerberos

1403
bassjoe

Ich möchte mich mit SSH über Kerberos SSO authentifizieren. Wenn ich jetzt bei meinem Benutzer-Principal angemeldet sourcehostbin, bekomme ich mein Kerberos-Ticket, kann es aber nicht für SSH verwenden targethost.

Das Problem scheint der Hostname zu sein. Ich habe einen Host-Principal host/targethost.example.com@EXAMPLE.COM, unabhängig davon, ob ich ssh targethostoder ssh targethost.example.comes in einen Host-Principal übersetzt werde host/targethost@EXAMPLE.COM(siehe Fehlermeldung unten), der nicht existiert.

Ich bin vielleicht falsch, aber ich denke, es sollte umgekehrt sein und beides, ssh targethostund ssh targethost.example.comsollte in den Gastgeber übersetzt werden host/targethost.example.com@EXAMPLE.COM.

Hier ist der Fehler:

$ ssh targethost.example.com -v ... debug1: Unspecified GSS failure. Minor code may provide more information Server host/targethost@EXAMPLE.COM not found in Kerberos database  debug1: Unspecified GSS failure. Minor code may provide more information Server host/targethost@EXAMPLE.COM not found in Kerberos database  debug1: Unspecified GSS failure. Minor code may provide more information ... debug1: Next authentication method: password testuser@targethost.example.com's password:  

Kann jemand erklären, wie der Host-Principal vom Hostnamen abgeleitet wird und wie dieser konfiguriert werden kann (ich bin übrigens auf Ubuntu)?


Bearbeiten:

grawitys Antwort führte mich zu einer Lösung, die meiner Meinung nach eine gute Lösung für meine Konfiguration ist.

  • In Garmans Kerberos-Buch fand ich heraus, dass die Kanonisierung auf der KDC-Seite der bevorzugte Weg war.
  • Für mein LDAP-gestütztes KDC habe ich in der Kerberos-Dokumentation (unten auf dieser Seite ) gefunden, wie dies realisiert werden kann.

Nachdem ich den Host-Principal mit kdadmin.local/ addprincmit dem FQDN erstellt hatte, musste ich dem neuen Principal-Eintrag in LDAP einen Alias ​​hinzufügen, indem er ldapmodifymit der folgenden Eingabe ausgeführt wurde:

dn: krbPrincipalName=host/targethost.example.com@EXAMPLE.COM,cn=EXAMPLE.COM,cn=krbContainer,dc=example,dc=com replace: krbCanonicalName krbCanonicalName: host/targethost.example.com@EXAMPLE.COM - add: krbPrincipalName krbPrincipalName: host/targethost@EXAMPLE.COM 
0

1 Antwort auf die Frage

1
grawity

Traditionell hat Kerberos Reverse-DNS verwendet, um den Prinzipalnamen zu kanonisieren. Das heißt, nachdem es targethost.example.comin eine IP-Adresse aufgelöst wurde, versucht es, die Adresse wieder in den "kanonischen" Namen aufzulösen, und verwendet diesen für den Principal.

Wenn Ihr targethostüber aufgelöst wurde / etc / hosts, dann ist der erste Name in der entsprechenden Zeile wird als „kanonische“ Name verwendet werden:

# good: 1.2.3.4 targethost.example.com targethost  # bad: 1.2.3.4 targethost targethost.example.com 

Wenn Sie möchten, können Sie die DNS-basierte Kanonisierung vollständig über /etc/krb5.conf deaktivieren:

[libdefaults] dns_canonicalize_hostname = false 

... und erstellen Sie einfach zwei Principals für den Host - einen für den kurzen Namen, einen für den langen. (Das ist eigentlich das, was Active Directory tut, und es ist nicht anders, wie sich SSL / TLS verhält - es ist immer sicherer, die Benutzereingaben direkt zu verwenden, anstatt DNS zu fragen.)

Vielen Dank für die Hinweise! Meine / etc / hosts-Dateien waren bereits "gut" und liefen "nslookup targethost" und dann "nslookup" für die IP-Adresse in FQDN. Sie in "schlecht" zu ändern, hat nichts geändert. Ich vermute, es gibt verschiedene Konfigurationen für die Hostnamenauflösung. bassjoe vor 7 Jahren 0
Ich habe die Lösung dank des von Ihnen erwähnten Begriffs "Kanonisierung" gefunden. Ich werde es der Frage hinzufügen. Ich habe nicht versucht, die Kanonisierung abzuschalten. Danke noch einmal! bassjoe vor 7 Jahren 0
@bassjoe: `nslookup` ist jedoch das falsche Werkzeug zum Überprüfen. Verwenden Sie "getent ahosts". grawity vor 7 Jahren 0
Bei einer neuen Fedora 27-Installation musste ich nach der ipa-client-Installation diesen Eintrag in der `/ etc / krb5.conf` ändern, um die Ausführung von` ssh shortname` zu ​​ermöglichen und Kerberos-Authentifizierung wie in Fedora auszuführen 26 und davor. bgStack15 vor 6 Jahren 0