<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.xinux.net/index.php?action=history&amp;feed=atom&amp;title=Kerberos_f%C3%BCr_Dienste</id>
	<title>Kerberos für Dienste - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.xinux.net/index.php?action=history&amp;feed=atom&amp;title=Kerberos_f%C3%BCr_Dienste"/>
	<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Kerberos_f%C3%BCr_Dienste&amp;action=history"/>
	<updated>2026-10-21T14:41:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://www.xinux.net/index.php?title=Kerberos_f%C3%BCr_Dienste&amp;diff=73801&amp;oldid=prev</id>
		<title>Thomas.will: Neue Seite (Kurs Linux - Samba)</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Kerberos_f%C3%BCr_Dienste&amp;diff=73801&amp;oldid=prev"/>
		<updated>2026-10-18T16:46:21Z</updated>

		<summary type="html">&lt;p&gt;Neue Seite (Kurs Linux - Samba)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategorie:Samba]]&lt;br /&gt;
&amp;lt;!-- Ablauf: Block &amp;quot;Dienste mit Kerberos&amp;quot;, Rechner fs und lx --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kurs !! Lab !! Rechner !! Domäne&lt;br /&gt;
|-&lt;br /&gt;
| [[Linux - Samba]] || [[Linux - Samba Lab]] || fs (Server), lx (Client) || ad.it2XX.int&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Einfach erklärt=&lt;br /&gt;
*Mit Kerberos meldet man sich '''einmal''' an und kommt danach ohne Passwort zu allen Diensten der Domäne: Single Sign-on.&lt;br /&gt;
*Jeder Dienst hat einen Namen in der Domäne, den '''Service Principal Name''' (SPN), z.B. '''host/fs.ad.it2XX.int''' für ssh oder '''HTTP/www.ad.it2XX.int''' für einen Webserver.&lt;br /&gt;
*Der Dienst braucht den passenden Schlüssel, um Tickets zu prüfen. Der liegt in einer '''Keytab''', einer Datei auf dem Server.&lt;br /&gt;
*Auf dieser Seite: die Grundlagen und '''ssh'''. Weiter geht es mit [[Squid mit Kerberos]] und [[Apache mit Kerberos]].&lt;br /&gt;
&lt;br /&gt;
=Das Wichtigste=&lt;br /&gt;
*Ein SPN gehört zu '''genau einem''' Konto in der Domäne. Doppelte SPNs führen zu Fehlern, die schwer zu finden sind.&lt;br /&gt;
*Der Name im SPN muss der Name sein, den der Client benutzt. Wer per IP-Adresse zugreift, bekommt kein Kerberos.&lt;br /&gt;
*Die Keytab passt zur '''Schlüsselversion''' (kvno) im AD. Ändert sich das Passwort des Kontos, muss die Keytab neu erzeugt werden.&lt;br /&gt;
*Seit Samba 4.21 erledigt winbind das automatisch über '''sync machine password to keytab'''.&lt;br /&gt;
&lt;br /&gt;
=Wie ein Dienst mit Kerberos funktioniert=&lt;br /&gt;
#max meldet sich an und hat ein TGT: '''klist'''&lt;br /&gt;
#Er ruft ssh fs.ad.it2XX.int auf. Der Client fragt den DC nach einem Ticket für '''host/fs.ad.it2XX.int'''.&lt;br /&gt;
#Der DC sucht das Konto mit diesem SPN, hier das Maschinenkonto FS$, und verschlüsselt das Ticket mit dessen Schlüssel.&lt;br /&gt;
#fs entschlüsselt das Ticket mit dem Schlüssel aus '''/etc/krb5.keytab''' und weiß: Das ist max.&lt;br /&gt;
&lt;br /&gt;
=Werkzeuge=&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Befehl !! Wirkung&lt;br /&gt;
|-&lt;br /&gt;
| klist || eigene Tickets&lt;br /&gt;
|-&lt;br /&gt;
| klist -k /etc/krb5.keytab || Einträge einer Keytab, mit kvno&lt;br /&gt;
|-&lt;br /&gt;
| klist -ke || dasselbe mit Verschlüsselungsarten&lt;br /&gt;
|-&lt;br /&gt;
| kvno host/fs.ad.it201.int || ein Service-Ticket holen und die kvno anzeigen&lt;br /&gt;
|-&lt;br /&gt;
| net ads setspn list || SPNs des eigenen Maschinenkontos&lt;br /&gt;
|-&lt;br /&gt;
| net ads setspn add HTTP/www.ad.it201.int -U administrator || SPN beim eigenen Konto eintragen&lt;br /&gt;
|-&lt;br /&gt;
| net ads keytab create || Keytabs nach sync machine password to keytab neu schreiben&lt;br /&gt;
|-&lt;br /&gt;
| setspn -L fs || SPNs eines Kontos, auf Windows&lt;br /&gt;
|-&lt;br /&gt;
| setspn -X || doppelte SPNs in der Domäne suchen, auf Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=ssh mit Kerberos=&lt;br /&gt;
==Server fs==&lt;br /&gt;
*fs ist der Domäne beigetreten, siehe [[Samba Mitgliedsserver]]. Die Keytab mit host/fs entsteht über diese Zeile in der smb.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sync machine password to keytab = /etc/krb5.keytab:spn_prefixes=host:account_name:sync_spns:sync_kvno:machine_password&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net ads keytab create&lt;br /&gt;
klist -k /etc/krb5.keytab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Keytab name: FILE:/etc/krb5.keytab&lt;br /&gt;
KVNO Principal&lt;br /&gt;
---- ------------------------------------------&lt;br /&gt;
   2 host/fs@AD.IT201.INT&lt;br /&gt;
   2 host/fs.ad.it201.int@AD.IT201.INT&lt;br /&gt;
   2 FS$@AD.IT201.INT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*/etc/ssh/sshd_config.d/kerberos.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*systemctl restart ssh&lt;br /&gt;
&lt;br /&gt;
==Client lx==&lt;br /&gt;
*~/.ssh/config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host *.ad.it201.int&lt;br /&gt;
    GSSAPIAuthentication yes&lt;br /&gt;
    GSSAPIDelegateCredentials no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kinit max&lt;br /&gt;
ssh fs.ad.it201.int&lt;br /&gt;
klist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Nach der Anmeldung zeigt klist auf lx zusätzlich ein Ticket für '''host/fs.ad.it201.int@AD.IT201.INT'''.&lt;br /&gt;
*'''GSSAPIDelegateCredentials yes''' gibt das TGT an fs weiter. Dann geht von fs aus ssh zum nächsten Rechner ohne Passwort. Nur auf vertrauenswürdigen Servern.&lt;br /&gt;
*Von Windows aus kann '''PuTTY''' Kerberos: Verbindung, SSH, Auth, GSSAPI.&lt;br /&gt;
&lt;br /&gt;
==Fehler finden==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -v fs.ad.it201.int 2&amp;gt;&amp;amp;1 | grep -i gssapi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Auf dem Server: '''journalctl -u ssh -e'''&lt;br /&gt;
&lt;br /&gt;
=Stolperfallen=&lt;br /&gt;
*'''ssh 10.2XX.1.31 statt ssh fs.ad.it2XX.int''': Es gibt keinen SPN host/10.2XX.1.31. ssh fragt nach dem Passwort.&lt;br /&gt;
*'''Kurzer Name ohne Domäne''': ssh fs geht nur, wenn der Client den Namen richtig zum FQDN ergänzt. Im Zweifel den vollen Namen benutzen.&lt;br /&gt;
*'''Keytab veraltet''': Nach einem neuen Beitritt stimmt die kvno nicht mehr. klist -k mit kvno vergleichen, net ads keytab create.&lt;br /&gt;
*'''Rückwärtsauflösung''': Manche Clients bilden den SPN aus dem PTR-Eintrag. Fehlt er oder ist er falsch, passt der SPN nicht. Rückwärtszonen pflegen.&lt;br /&gt;
*'''Zeit''': mehr als 5 Minuten Abweichung, und nichts geht.&lt;br /&gt;
&lt;br /&gt;
=Übungen=&lt;br /&gt;
==Grundübungen==&lt;br /&gt;
#Schauen Sie sich auf fs die Keytab an. Welche Principals stehen darin, welche kvno haben sie?&lt;br /&gt;
#Schalten Sie auf fs GSSAPIAuthentication ein und melden Sie sich von lx als max ohne Passwort an.&lt;br /&gt;
#Welches neue Ticket hat max danach auf lx? Erklären Sie seinen Namen.&lt;br /&gt;
#Holen Sie mit kvno ein Ticket für host/fs.ad.it2XX.int und vergleichen Sie die kvno mit der Keytab.&lt;br /&gt;
#Lassen Sie sich auf win-dc mit setspn -L fs die SPNs anzeigen.&lt;br /&gt;
==Vertiefung==&lt;br /&gt;
#Melden Sie sich mit GSSAPIDelegateCredentials yes an fs an und von dort weiter an lx. Was zeigt klist auf fs?&lt;br /&gt;
#Lösen Sie auf fs einen Passwortwechsel des Maschinenkontos aus: net ads changetrustpw. Was passiert mit der kvno in der Keytab?&lt;br /&gt;
#Melden Sie sich von win11 mit PuTTY per Kerberos an fs an.&lt;br /&gt;
==Fehlersuche==&lt;br /&gt;
;1. ssh fragt trotz Ticket nach dem Passwort&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Möglich sind: Zugriff per IP statt Name, GSSAPIAuthentication auf Client oder Server aus, oder kein host/-Eintrag in der Keytab. ssh -v zeigt, welche Methode versucht wurde.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;2. ssh -v meldet: Server not found in Kerberos database&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Den SPN gibt es im AD nicht. Meist wird ein Name benutzt, der nicht zum Rechnerkonto passt, z.B. ein DNS-Alias. Entweder den echten Namen nehmen oder den Alias als SPN eintragen: net ads setspn add host/alias.ad.it2XX.int&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;3. Im Journal von ssh steht: Wrong principal in request oder Key version number for principal in key table is incorrect&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Die Keytab ist veraltet, z.B. nach einem neuen Beitritt. net ads keytab create und klist -k prüfen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Vertiefung=&lt;br /&gt;
*[[Kerberos SSH Login]] · [[Kerberos ssh samba]] · [[Kerberos Befehle]] · [[Kerberos-Befehle - Service]] · [[Kerberos Sicherheitsaspekte]]&lt;br /&gt;
&lt;br /&gt;
=Weiter=&lt;br /&gt;
*[[Squid mit Kerberos]] · [[Apache mit Kerberos]]&lt;br /&gt;
*[[Linux - Samba|Zurück zur Kursseite]]&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>