Verwenden von Kerberos mit mehrfach vernetzten Hosts

462
Dave

Ich habe mehrere Hosts, auf denen CentOS 7.3 mit OpenSSH 6.6.1p1 und Kerberos 5 Version 1.14.1 ausgeführt wird .

Meine Hosts und ihre Netzwerkschnittstellen sind wie folgt. Hosts werden nach ihrem "primären" Hostnamen aufgelistet . Hierbei handelt es sich um den Hostnamen, der im DNS der einzelnen IP-Adresse der eth0- Netzwerkschnittstelle des Hosts zugeordnet ist. Bei Hosts mit mehreren Netzwerkschnittstellen gebe ich dann auch die DNS-Namen, die der einzelnen IP-Adresse auf jeder dieser Netzwerkschnittstellen zugeordnet sind.

  • inf.example.com

    • eth0: 192.168.1.1/24
  • dev.example.com

    • eth0: 192.168.1.2/24
  • cluster-1.example.com

    • eth0: 192.168.1.11/24
    • eth1: 192.168.10.11/24 (DNS-A / PTR-Einträge für diese sekundäre Netzwerkschnittstelle werden mithilfe des Hostnamens cluster-1-a.example.com eingerichtet.)
  • cluster-2.example.com

    • eth0: 192.168.1.12/24
    • eth1: 192.168.10.12/24 (DNS-A / PTR-Einträge für diese sekundäre Netzwerkschnittstelle werden mit dem Hostnamen cluster-2-a.example.com eingerichtet.)

inf.example.com, der "Infrastruktur" -Server, ist der Ort, an dem DNS, LDAP, das Kerberos Key Distribution Center (KDC) usw. ausgeführt werden. Diese Elemente werden durch die Verwendung von FreeIPA Version 4.4.0 einheitlich verwaltet .

dev.example.com ist ein Entwicklungshost, von dem Entwickler Skripts ausführen, die SSH verwenden, um Remote-Befehle auf cluster-1.example.com auszuführen .

Der Befehl, der auf cluster-1.example.com ausgeführt wird, verwendet wiederum SSH, um einen Remote-Befehl auf dem anderen Cluster-Host auszuführen, jedoch über seine sekundäre Netzwerkschnittstelle (dh über seine 192.168.10.11 (auch bekannt als cluster-2-a) .example.com ) Netzwerkschnittstelle).

Um die Ausführung dieser Skripts zu erleichtern, versuche ich, Single Sign On (SSO) für OpenSSH vollständig einzurichten.

Alles funktioniert gut, wenn ich die Adressen 192.168.1.0/24 verwende und das -K- Flag für SSH verwende, um mein Kerberos Ticket Granting Ticket (TGT) an den Host weiterzuleiten, an den ich SSHing gehe:

user@dev$ ssh -K cluster-1.example.com user@cluster-1$ ssh -K cluster-2.example.com user@cluster-2 $ # Everything worked! I was never prompted to accept an SSH host key or to enter a password! 

Wenn ich jedoch versuche, die sekundäre Netzwerkschnittstelle auf dem zweiten SSH-Hop zu verwenden, funktionieren die Dinge nicht wie gewünscht (dh auf eine Art und Weise, die keine menschliche Interaktion erfordert). Insbesondere treten zwei Eingabeaufforderungen für menschliche Interaktion auf:

  1. Ich werde aufgefordert, den SSH-Hostschlüssel des Servers zu akzeptieren
  2. Ich werde nach meinem Passwort gefragt

Diese Probleme können unten gesehen werden:

user@dev$ ssh -K cluster-1.example.com user@cluster-1$ ssh -K cluster-2-a.example.com The authenticity of host 'cluster-2-a.example.com (<no hostip for proxy command>)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'cluster-2-a.example.com' (RSA) to the list of known hosts. Password: 

Es ist nicht überraschend, dass dies nicht funktioniert. Obwohl die IP-Adressen und Hostnamen, die den sekundären Netzwerkschnittstellen zugeordnet sind, über entsprechende A- und PTR-Einträge im DNS verfügen, gibt es keine "Registrierung" der IP-Adressen und Hostnamen, die den sekundären Netzwerkschnittstellen in Kerberos zugeordnet sind.

Wie werden Hosts mit mehreren Netzwerkschnittstellen / Hostnamen / IP-Adressen in Kerberos ordnungsgemäß konfiguriert, damit SSH-SSO unter Verwendung von Hostnamen / IP-Adressen der Hosts funktioniert?

7/31/2018 UPDATE
inf.example.com (dh das KDC) ist im 192.168.10.0/24-Netzwerk nicht vorhanden .

Benötigt es eine Präsenz am 192.168.10.0/24 für 1) Erstmalige Registrierung von cluster-1-a.example.com und cluster-2-a.example.com oder für 2) laufende Vorgänge von cluster-1-a.example .com und cluster-2-a.example.com ?

Oder kann der gesamte Kerberos-Verkehr, der für die Registrierung und den Betrieb der sekundären Netzwerkschnittstellen benötigt wird, über die primären Schnittstellen (dh das 192.168.1.0/24-Netzwerk ) fließen ?

0

1 Antwort auf die Frage

1
grawity

Obwohl die IP-Adressen und Hostnamen, die den sekundären Netzwerkschnittstellen zugeordnet sind, über entsprechende A- und PTR-Einträge im DNS verfügen, gibt es keine "Registrierung" der IP-Adressen und Hostnamen, die den sekundären Netzwerkschnittstellen in Kerberos zugeordnet sind.

Nun, schreiben Sie sie ein.

  1. Deaktivieren Sie auf jedem Multihomed-Server die strikte Prinzipalprüfung und teilen Sie ihm mit, dass Sie Tickets für alle Schlüssel akzeptieren dürfen, die sich in seiner Keytab befinden:

  2. Nachdem Sie dies getan haben, fügen Sie dem KDC Principals für alle Namen des Servers und die Schlüssel für alle Namen in demselben hinzu /etc/krb5.keytab. (Für Clients, bei denen die Kanonisierung der Namen deaktiviert ist, können Sie sogar Principals für Kurznamen und / oder IP-Adressen hinzufügen.)

    FreeIPA scheint dafür eine Funktion namens "Prinzipaliasnamen" zu haben, obwohl ich nicht sicher bin, ob es hier wie benötigt funktioniert:

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/linux_domain_identity_authentication_and_policy_guide/managing-kerberos-aliases

Dies ist wahrscheinlich nicht der einzige Weg, aber es ist der einfachste und erfordert keine clientseitige Konfiguration. Alles funktioniert einfach wie zuvor.

7/31/2018 AKTUALISIERUNG

inf.example.com (dh das KDC) ist im Netzwerk 192.168.10.0/24 nicht vorhanden.

Benötigt es eine Präsenz am 192.168.10.0/24 für 1) Erstmalige Registrierung von cluster-1-a.example.com und cluster-2-a.example.com oder für 2) laufende Vorgänge von cluster-1-a.example .com und cluster-2-a.example.com?

Nein, das stimmt nicht. Kerberos kümmert sich im geringsten nicht um Subnetze - es hängt nur von der Standard-Unicast-TCP / UDP-Kommunikation ab. (Zum Beispiel hat mein Homelab Server und KDCs in drei verschiedenen Ländern, die über das öffentliche Internet kommunizieren ...)

Die Server kommunizieren überhaupt nicht mit dem KDC . Nur Kunden tun dies. Der Server verwendet seine lokale Schlüsseltabelle, um Ihr Ticket zu überprüfen.

(Natürlich kommuniziert der Server mit Ihren FreeIPA-Verzeichnisdiensten, um Kontodetails über LDAP abzurufen ... aber das ist keine Kerberos-Sache mehr.)

Ich werde dies wahrscheinlich als Antwort akzeptieren, wenn ich genug gelernt habe, um das zu tun, was Sie FreeIPA-konform vorgeschlagen haben. Ich bin immer noch auf der Kerberos / FreeIPA-Lernkurve. Gibt es Sicherheitsauswirkungen auf den vorgeschlagenen Vorschlag? Dave vor 5 Jahren 0
Sollte keine sein, zumindest solange das keytab nur alternative Principals für den gleichen Dienst hat. (Dies ist bei Active Directory-Systemen standardmäßig der Fall, wobei für alle Prinzipale des Hosts derselbe Schlüssel verwendet wird. Ich vermute, dass die "Aliase" -Funktion von FreeIPA dasselbe tut.) Überprüfen Sie jedoch die oben verlinkten MIT-Kerberos-Dokumente. grawity vor 5 Jahren 0
Schreitet langsam voran. Bitte beachten Sie das Update vom 31.07.2014 zu meinem ursprünglichen Beitrag. Vielen Dank! Dave vor 5 Jahren 0
Dies sollte wahrscheinlich eine eigenständige Frage sein, aber kurz gesagt, Subnetze sind völlig irrelevant. grawity vor 5 Jahren 0