<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kb.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Kerberos</id>
	<title>Kerberos - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kb.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Kerberos"/>
	<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Kerberos&amp;action=history"/>
	<updated>2026-05-09T07:10:09Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Knowledgebase</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Kerberos&amp;diff=1814&amp;oldid=prev</id>
		<title>PoC: /* Grundinstallation unter Debian-Linux */ Aktualisierung</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Kerberos&amp;diff=1814&amp;oldid=prev"/>
		<updated>2016-08-26T19:45:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Grundinstallation unter Debian-Linux: &lt;/span&gt; Aktualisierung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dieser Artikel soll einen Überblick und Kurzeinstieg in &amp;#039;&amp;#039;&amp;#039;Kerberos&amp;#039;&amp;#039;&amp;#039;, sowie dessen Zusammenspiel mit verschiedenen Diensten und Plattformen für ein Single-Sign-on-System ermöglichen.&lt;br /&gt;
&lt;br /&gt;
== Was ist Kerberos ==&lt;br /&gt;
Kerberos ist als Single-Sign-On-Lösung entwickelt worden. Der Gedanke dahinter ist, dass der Benutzer sich einmal zu Tagesbeginn gegenüber einer zentralen Instanz authentisiert und diese im weiteren Tagesverlauf den Benutzer gegenüber den einzelnen Diensten authentisiert.&lt;br /&gt;
&lt;br /&gt;
Kerberos bietet &amp;#039;&amp;#039;keine&amp;#039;&amp;#039; verteilte Benutzerdatenbank. Auf den einzelnen beteiligten Maschinen müssen die lokal eingerichteten Benutzer gleich benannt sein oder über andere geeignete Maßnahmen gegenüber Kerberos gemappt werden. Eine Möglichkeit dazu ist &amp;#039;&amp;#039;~/.k5login&amp;#039;&amp;#039;, dort können zeilenweise alle Principals vermerkt werden, die Zugriff auf den jeweiligen Account haben dürfen.&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows verwendet im Hintergrund ebenfalls Kerberos und umgeht dieses Problem mit &amp;#039;&amp;#039;ActiveDirectory&amp;#039;&amp;#039; über den Weg &amp;#039;&amp;#039;LDAP&amp;#039;&amp;#039; als verteilte Benutzer&amp;amp;shy;daten&amp;amp;shy;bank. Unter Linux sind traditionelle Wege wie &amp;#039;&amp;#039;NIS&amp;#039;&amp;#039; oder lokale Benutzer völlig suffizient.&lt;br /&gt;
&lt;br /&gt;
Kerberos fasst alle Benutzer in einer administrativen Domain zusammen, diese wird &amp;#039;&amp;#039;Realm&amp;#039;&amp;#039; genannt. Der Realm wird in Grossbuchstaben konfiguriert und entspricht meist (aber nicht zwingend) der DNS-Domain. Ein Benutzer ist lediglich ein Objekt (&amp;#039;&amp;#039;Principal&amp;#039;&amp;#039;) in der zentralen Benutzerdatenbank auf dem &amp;#039;&amp;#039;Adminserver&amp;#039;&amp;#039;. Vom Adminserver losgelöst funktioniert der KDC (key distribution center). Dieser verteilt in Absprache mit dem Adminserver die Tickets.&lt;br /&gt;
&lt;br /&gt;
Dienste und Hosts werden ebenso in der Benutzerdatenbank gesichert. Diese Principals haben allerdings nicht die Möglichkeit, ein Passwort einzugeben. Daher werden diese Principals mit &amp;#039;&amp;#039;-randkey&amp;#039;&amp;#039; angelegt (Zufallspaßwort) und diese Information auf der Gegenseite in einer &amp;#039;&amp;#039;Keytab&amp;#039;&amp;#039; abgelegt. Diese Keytab (üblicherweise &amp;#039;&amp;#039;/etc/krb5.keytab&amp;#039;&amp;#039; für alle Dienste, die als &amp;#039;&amp;#039;root&amp;#039;&amp;#039; laufen) dient den Hosts und Services als Passwortdatei. Dienste, die unter eigenen Benutzern laufen, brauchen ihre eigene, (nur) für sie lesbare Keytab.&lt;br /&gt;
&lt;br /&gt;
Diese Abhängigkeit von Hostnamen bedingt einen saubere Konfiguration der beteiligten DNS. Lösungen wie Avahi für Zeroconf können nicht sinnvoll genutzt werden, da die DNS-Auflösung nicht konsistent mit den Hostnamen ist. Die jeweils verwendete &amp;#039;&amp;#039;.local&amp;#039;&amp;#039;-Domain mit in Kerberos zu integrieren würde die relative Sicherheit des Systems aushebeln.&lt;br /&gt;
&lt;br /&gt;
Immer wieder gerne übersehen wird die Tatsache, dass Kerberos eine saubere Zeitsynchronisation über alle beteiligten Maschinen hinweg voraussetzt. Am Sinnvollsten ist es daher, vor der Konfiguration von Kerberos erst einmal entsprechende Dienste wie ntp einzurichten.&lt;br /&gt;
&lt;br /&gt;
Grundlegend besteht im Rahmen der Redundanzbildung die Möglichkeit, mehrere KDCs parallel am Laufen zu haben, während der Adminserver nur einmal pro Ralm vorhanden sein kann. Mit einem gewissen Maß an Handarbeit kann die Benutzerdatenbank aber zu einem Standbysystem gesichert werden.&lt;br /&gt;
&lt;br /&gt;
Ein Benutzer beginnt den Tag mit einem &amp;#039;&amp;#039;kinit&amp;#039;&amp;#039;. Dies legt ein &amp;#039;&amp;#039;TGT&amp;#039;&amp;#039; (Ticket Granting Ticket) für den jeweiligen Benutzer an, was als Generalausweis für die Authentisierung des Benutzers gegenüber Kerberos sorgt. Üblicherweise verfällt dieses nach 10 Stunden. Den Status des TGT kann man mit &amp;#039;&amp;#039;klist&amp;#039;&amp;#039; einsehen. Über dieses TGT läuft der restliche Authentisierungsprozess. Zum Tagesende wird das Ticket mit &amp;#039;&amp;#039;kdestroy&amp;#039;&amp;#039; gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Principals ===&lt;br /&gt;
Ein Principal ist ein Benutzerobjekt in der Benutzerdatenbank.&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
 primary[/instance][@REALM]&lt;br /&gt;
&lt;br /&gt;
; poc@POCNET.NET&lt;br /&gt;
: Benutzer &amp;#039;&amp;#039;poc&amp;#039;&amp;#039; im Realm &amp;#039;&amp;#039;POCNET.NET&amp;#039;&amp;#039;.&lt;br /&gt;
; poc/admin@POCNET.NET&lt;br /&gt;
: Benutzer &amp;#039;&amp;#039;poc&amp;#039;&amp;#039; mit dem Zusatztag &amp;#039;&amp;#039;admin&amp;#039;&amp;#039; im Realm &amp;#039;&amp;#039;POCNET.NET&amp;#039;&amp;#039;.&lt;br /&gt;
; host/leela.pocnet.net@POCNET.NET&lt;br /&gt;
: Ein Host-Objekt für den Host &amp;#039;&amp;#039;leela.pocnet.net&amp;#039;&amp;#039; im Realm &amp;#039;&amp;#039;POCNET.NET&amp;#039;&amp;#039;.&lt;br /&gt;
; imap/leela.pocnet.net@POCNET.NET&lt;br /&gt;
: Ein Service-Objekt für den Service &amp;#039;&amp;#039;imap&amp;#039;&amp;#039; im Realm &amp;#039;&amp;#039;POCNET.NET&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Glossar ===&lt;br /&gt;
; Client&lt;br /&gt;
: Ein Objekt, welches Tickets anfordern kann. Das kann ein Benutzer sein, ein Host oder ein Service.&lt;br /&gt;
; Host&lt;br /&gt;
: Ein Server, welcher Dienste (Services) zu Verfügung stellt.&lt;br /&gt;
; Service&lt;br /&gt;
: Ein Prozess, der über Netzwerk seine Dienste anbietet, z.&amp;amp;nbsp;B. ein Telnet-Server.&lt;br /&gt;
; Principal&lt;br /&gt;
: Ein Benutzerobjekt auf dem Adminserver. z. B. poc/admin@POCNET.NET. Siehe oben.&lt;br /&gt;
; Adminserver&lt;br /&gt;
: Der Server, welcher die Benutzerdatenbank vorhält und für Änderungen des Kerberos-Paßwortes kontaktiert werden muss.&lt;br /&gt;
; KDC&lt;br /&gt;
: Key Distribution Center, ein Server, welcher Tickets ausstellt.&lt;br /&gt;
; Keytab&lt;br /&gt;
: Von &amp;#039;&amp;#039;&amp;#039;Key Tab&amp;#039;&amp;#039;&amp;#039;le, hier “merken” sich Hosts und Services ihre “Paßwörter”.&lt;br /&gt;
; Realm&lt;br /&gt;
: Eine administrative Domain, sie enthält mindestens einen Adminserver und einen KDC.&lt;br /&gt;
; TGT&lt;br /&gt;
: Das Ticket Granting Ticket, eine Art Masterticket. Basierend auf diesem können Clients weitere, spezifischere Tickets im gleichen Realm anfordern.&lt;br /&gt;
; Ticket&lt;br /&gt;
: Eine temporäre Zusammenstellung von kryptographischen Schlüsseln, welche die Identität eines Clients gegenüber einem Host oder Service bestätigen.&lt;br /&gt;
&lt;br /&gt;
== Grundinstallation unter Debian-Linux ==&lt;br /&gt;
Dieser Abschnitt ist unter Lenny (5) getestet worden. Die Installation unter Squeeze (6) unterscheidet sich nur minimal, ebenso unter Jessie (8).&lt;br /&gt;
&lt;br /&gt;
 apt-get install krb5-kdc krb5-admin-server&lt;br /&gt;
Bei der Installation werden grundlegende Fragen wie z.&amp;amp;thinsp;B. nach dem eigenen Realm gestellt. Kompatibilität zu Kerberos4 wird normalerweise nicht benötigt und ist wegen erheblicher Defizite der zugrundeliegenden kryptographischen Methode DES auch nicht anzuraten. Für Mac OS &amp;lt; 10 gibt es leider keine Kerberos5-Implementation, lediglich Kerberos4.&lt;br /&gt;
&lt;br /&gt;
Die Fehlermeldung, dass &amp;#039;&amp;#039;kadmind&amp;#039;&amp;#039; wegen einer fehlenden Datei nicht gestartet werden kann, kann ignoriert werden. In &amp;#039;&amp;#039;/etc/default/krb5-kdc&amp;#039;&amp;#039; kann &amp;lt;code&amp;gt;RUN_KRB524D&amp;lt;/code&amp;gt; auf &amp;#039;&amp;#039;false&amp;#039;&amp;#039; gesetzt werden. Wir benutzen wie gesagt keine Kerberos 4-Kompatibilität, daher ist der Daemon unnötig. In der mit Debian Jessie ausgelieferten Version gibt es diesen Daemon nicht mehr und die Dateien in &amp;#039;&amp;#039;/etc/default&amp;#039;&amp;#039; sind leer. Die automatisch erstellte Datei weist noch einige Konfigurationsparameter in Sachen Heimdal und Kerberos 4 auf. Diese können ersatzlos gelöscht werden, siehe Kommentare.&lt;br /&gt;
&lt;br /&gt;
Beispieldatei &amp;#039;&amp;#039;/etc/krb5.conf&amp;#039;&amp;#039;: &lt;br /&gt;
 [libdefaults]&lt;br /&gt;
        clockskew = 60&lt;br /&gt;
        default_realm = POCNET.NET&lt;br /&gt;
        default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 camellia256-cts-cmac camellia128-cts-cmac&lt;br /&gt;
        default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 camellia256-cts-cmac camellia128-cts-cmac&lt;br /&gt;
        dns_fallback = yes&lt;br /&gt;
        dns_lookup_kdc = true&lt;br /&gt;
        forwardable = true&lt;br /&gt;
        kdc_timesync = 1&lt;br /&gt;
        permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 camellia256-cts-cmac camellia128-cts-cmac&lt;br /&gt;
        proxiable = true&lt;br /&gt;
 &lt;br /&gt;
 [realms]&lt;br /&gt;
        POCNET.NET = {&lt;br /&gt;
                kdc = leela.pocnet.net&lt;br /&gt;
                admin_server = leela.pocnet.net&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
Beispieldatei &amp;#039;&amp;#039;/etc/krb5kdc/kadm5.acl&amp;#039;&amp;#039; dient zur Verteilung von Zugriffsrechten auf das &amp;#039;&amp;#039;kadmin&amp;#039;&amp;#039;-Kommando.&lt;br /&gt;
 root@POCNET.NET *&lt;br /&gt;
 */admin@POCNET.NET *&lt;br /&gt;
&lt;br /&gt;
Jetzt kann die Benutzerdatenbank initialisiert werden:&lt;br /&gt;
 kdb5_util create -s&lt;br /&gt;
&lt;br /&gt;
Im nächsten Schritt müssen die eigenen Host- und Serviceprincipals angelegt werden. Mit dem Kommando &amp;#039;&amp;#039;kadmin.local&amp;#039;&amp;#039; kann dies initial erreicht werden (interaktiv):&lt;br /&gt;
 add_principal -randkey host/leela.pocnet.net&lt;br /&gt;
 ktadd host/leela.pocnet.net&lt;br /&gt;
&lt;br /&gt;
Damit ist die Grundkonfiguration von Kerberos abgeschlossen. Als wichtiger, zu beachtender Punkt wäre die Uhrzeit zu nennen. Kerberos fällt auf die Nase, wenn die Uhrzeit der beteiligten Hosts über einen gewissen Schwellwert abweicht. Dieser ist im obigen Beispiel von (default) 300 auf 60 Sekunden reduziert.&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
* &amp;#039;&amp;#039;kadmin&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;kadmin.local&amp;#039;&amp;#039;: Benutzerpflege. Ersteres für die Principalpflege übers Netz, letzteres läuft nur auf dem Adminserver.&lt;br /&gt;
** &amp;lt;code&amp;gt;add_principal &amp;#039;&amp;#039;principal&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; — Erstellt normalen Benutzer.&lt;br /&gt;
** &amp;lt;code&amp;gt;add_principal -randkey &amp;#039;&amp;#039;host/&amp;lt;nowiki&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; — Erstellt Hostprincipal.&lt;br /&gt;
** &amp;lt;code&amp;gt;add_principal -randkey &amp;#039;&amp;#039;imap/&amp;lt;nowiki&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; — Erstellt Serviceprincipal für z.&amp;amp;nbsp;B. IMAP.&lt;br /&gt;
** &amp;lt;code&amp;gt;ktadd &amp;#039;&amp;#039;host/&amp;lt;nowiki&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; — Übernahme in lokale Keytab, auf dem Rechner machen, der trusted sein soll!&lt;br /&gt;
** &amp;lt;code&amp;gt;ktremove &amp;#039;&amp;#039;host/&amp;lt;nowiki&amp;gt;&amp;lt;hostname&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; — Löschen aus lokaler Keytab.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;ktutil&amp;#039;&amp;#039; für die Pflege von z. B. &amp;#039;&amp;#039;/etc/krb5.keytab&amp;#039;&amp;#039;  — Management (evtl. eher über &amp;#039;&amp;#039;kadmin&amp;#039;&amp;#039; machen!)&lt;br /&gt;
** &amp;lt;code&amp;gt;read_kt /etc/krb5.keytab&amp;lt;/code&amp;gt; — liest die Keytab ein.&lt;br /&gt;
** &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; — Inhalt listen.&lt;br /&gt;
** &amp;lt;code&amp;gt;delent &amp;#039;&amp;#039;num&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; — Key löschen. Achtung, Rest rückt auf!&lt;br /&gt;
** &amp;lt;code&amp;gt;write_kt /etc/krb5.keytab2&amp;lt;/code&amp;gt; — schreibt die Keytab, das muss zwingend unter anderem Namen passieren, überschreiben funktioniert nicht!&lt;br /&gt;
&lt;br /&gt;
* Benutzerseitig:&lt;br /&gt;
** &amp;lt;code&amp;gt;kinit&amp;lt;/code&amp;gt; — TGT ausstellen.&lt;br /&gt;
** &amp;lt;code&amp;gt;klist&amp;lt;/code&amp;gt; — TGT-Status prüfen.&lt;br /&gt;
** &amp;lt;code&amp;gt;kdestroy&amp;lt;/code&amp;gt; — Tagesende, TGT löschen.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Clientrechner ===&lt;br /&gt;
Die Erweiterung des Realms ist unter Linux recht einfach:&lt;br /&gt;
* Installation der Clientprogramme und beantworten der entsprechenden Fragen nach Realm, kdc und Adminserver:&lt;br /&gt;
 apt-get install krb5-user&lt;br /&gt;
* Erzeugen eines Hostprincipals für den Host auf dem Adminserver über &amp;#039;&amp;#039;kadmin.local&amp;#039;&amp;#039;:&lt;br /&gt;
 add_principal -randkey host/ci.pocnet.net&lt;br /&gt;
* Übertragen des Hostprincipals auf den Client, dazu auf dem Client aufrufen:&lt;br /&gt;
 kadmin -p … (hier einen berechtigten Benutzerprincipal mitgeben)&lt;br /&gt;
 ktadd host/ci.pocnet.net&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
Für einen Client unter Mac OS X genügt es die &amp;#039;&amp;#039;/etc/krb5.conf&amp;#039;&amp;#039; wie im Beispiel weiter oben anzupassen, sowie die Erweiterung der lokalen Keytab wie beschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Cisco IOS vs. Kerberos ====&lt;br /&gt;
Prinzipiell kann z. B. ein Cisco-Router auch als Kerberos-Client mit eingebunden werden. Die Vorgehensweise ist analog zu anderen Clients.&lt;br /&gt;
&lt;br /&gt;
Konfigurationsausschnitt:&lt;br /&gt;
 aaa authentication login default krb5 local&lt;br /&gt;
 !&lt;br /&gt;
 kerberos local-realm POCNET.NET&lt;br /&gt;
 kerberos realm pocnet.net POCNET.NET&lt;br /&gt;
 kerberos realm .pocnet.net POCNET.NET&lt;br /&gt;
 kerberos server POCNET.NET 192.168.59.10&lt;br /&gt;
 kerberos credentials forward&lt;br /&gt;
&lt;br /&gt;
Da es auf dem Router keine lokale Keytab gibt, muss der zugehörige Hostprincipal isoliert werden. Das kann innerhalb &amp;#039;&amp;#039;kadmin(.local)&amp;#039;&amp;#039; mit &amp;#039;&amp;#039;ktadd -k /tmp/routerkeytab&amp;#039;&amp;#039; sehr leicht erreicht werden. Diese kann dann mittels des IOS-Befehls &amp;lt;code&amp;gt;kerberos srvtab remote&amp;lt;/code&amp;gt; herüberkopiert werden. IOS konvertiert den Key dann zu einer (ähnlichen) Zeile wie folgt:&lt;br /&gt;
 kerberos srvtab entry host/router.pocnet.net@POCNET.NET 1 1276208580 3 1 8 0076&amp;gt;7658=?0=;0?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das scheint aber nicht wirklich allzugut zu funktionieren, im Syslog erscheint die Meldung:&lt;br /&gt;
 KDC has no support for encryption type&lt;br /&gt;
&lt;br /&gt;
Lt. [http://www.h5l.org/manual/HEAD/info/heimdal.html#Things-in-search-for-a-better-place Heimdal-Doku] hat IOS nur Unterstützung für die inzwischen als nicht wirklich sichere DES-Verschlüsselung eingebaut.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [http://www.cisco.com/en/US/docs/ios/sec_user_services/configuration/guide/sec_cfg_kerberos.html Configuring Kerberos] auf &amp;#039;&amp;#039;cisco.com&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Der Artikel [http://technet.microsoft.com/en-us/library/bb742433.aspx Step by Step Guide to Kerberos 5], zeigt exemplarisch, wie Windows 2000 an MIT-Kerberos angedockt werden kann und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc753771(d=printer,v=ws.10).aspx Anleitung zu &amp;#039;&amp;#039;ktpass&amp;#039;&amp;#039;], einem Hilfsprogramm u.&amp;amp;thinsp;A. zum Erzeugen von Kerberos-Keytabs im MS-Technet&lt;br /&gt;
* [https://cwiki.apache.org/DIRxINTEROP/exporting-keytabs-from-active-directory.html Beachtenswertes zu &amp;#039;&amp;#039;ktpass&amp;#039;&amp;#039;] bei Apache.org&lt;br /&gt;
* Anleitungen zu SetSPN im MS-Technet, einem Hilfsprogramm zum Pflegen von Kerberos-Principals innerhalb ADS-Benutzerobjekten.&lt;br /&gt;
** [http://technet.microsoft.com/en-us/library/cc773257(v=ws.10).aspx Setspn Overview]&lt;br /&gt;
** [http://technet.microsoft.com/en-us/library/cc731241(v=ws.10).aspx Setspn]&lt;br /&gt;
** [http://technet.microsoft.com/de-de/library/cc755442(v=ws.10).aspx Setspn Syntax]&lt;br /&gt;
** [http://technet.microsoft.com/de-de/library/cc755413(v=ws.10).aspx Setspn Examples]&lt;br /&gt;
** [http://technet.microsoft.com/en-us/library/ms191153.aspx Registering a Service Principal Name]&lt;br /&gt;
&lt;br /&gt;
Unsortierte Links:&lt;br /&gt;
* http://www.mail-archive.com/kerberos@mit.edu/msg10373.html&lt;br /&gt;
* http://blog.scottlowe.org/2007/07/09/linux-ad-integration-with-windows-server-2008/&lt;br /&gt;
* http://blog.scottlowe.org/2006/08/10/kerberos-based-sso-with-apache/&lt;br /&gt;
* http://social.technet.microsoft.com/wiki/contents/articles/kerberos-interoperability-step-by-step-guide-for-windows-server-2003.aspx&lt;br /&gt;
* http://thejavamonkey.blogspot.com/2008/03/active-directory-and-kerberos-service.html&lt;br /&gt;
* https://blog.godatadriven.com/cross-realm-trust-kerberos.html&lt;br /&gt;
&lt;br /&gt;
===== Linux als Client an AD =====&lt;br /&gt;
Voraussetzungen: AD-Member mit Samba, aktuelle Samba-Version aus Debian Squeeze.&lt;br /&gt;
&lt;br /&gt;
Auf dem AD-Server muss mit &amp;#039;&amp;#039;setspn&amp;#039;&amp;#039; das Mapping von AD-Computerkonto zu Kerberosinstanz kontrolliert/nachgebessert werden.&lt;br /&gt;
&lt;br /&gt;
Die für den Linuxclient notwendige Keytab erhält man mit&lt;br /&gt;
 net ads keytab create [-U domainadminuser_in_ad ]&lt;br /&gt;
&lt;br /&gt;
Voraussetzung hierfür: In &amp;#039;&amp;#039;/etc/samba/smb.conf&amp;#039;&amp;#039;:&lt;br /&gt;
 kerberos method = secrets and keytab&lt;br /&gt;
&lt;br /&gt;
Die passenden Principalkeys werden automatisch in die &amp;#039;&amp;#039;/etc/krb5.keytab&amp;#039;&amp;#039; eingepflegt. Das ist ein Vorgang, der mit &amp;#039;&amp;#039;ktpass&amp;#039;&amp;#039; leider nicht auf Anhieb zum Funktionieren zu bringen war.&lt;br /&gt;
&lt;br /&gt;
== Dienste ==&lt;br /&gt;
Dienste als auch Clientprogramme, die über Kerberos authentisieren sollen, müssen diese Methode auch beherrschen. Im aktuellen Kerberos5 wird das über GSSAPI (Generic Security Services API) geregelt. Als Alternative besteht noch SASL (Simple Authentication and Security Layer), was wiederum über ein GSSAPI-Plugin auf Kerberos5-Authentisierung zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
=== Ssh ===&lt;br /&gt;
* Benutzt host-Auth (Principal &amp;#039;&amp;#039;host/…&amp;#039;&amp;#039;).&lt;br /&gt;
* In &amp;#039;&amp;#039;ssh_config&amp;#039;&amp;#039;:&lt;br /&gt;
 GSSAPIAuthentication yes&lt;br /&gt;
 GSSAPIDelegateCredentials yes&lt;br /&gt;
 GSSAPITrustDns yes&lt;br /&gt;
&amp;#039;&amp;#039;GSSAPIDelegateCredentials&amp;#039;&amp;#039; sorgt dafür, dass das bereits ausgestellte TGT auf den jeweiligen Zielhost weitergeleitet wird (sofern das TGT &amp;#039;&amp;#039;forwardable&amp;#039;&amp;#039; ist). Das hat den Vorteil, dass man sich dann von dort aus ebenfalls mit Kerberos-Auth weiterhangeln kann.&lt;br /&gt;
&lt;br /&gt;
* In &amp;#039;&amp;#039;sshd_config&amp;#039;&amp;#039;:&lt;br /&gt;
 GSSAPIAuthentication yes&lt;br /&gt;
 GSSAPIKeyExchange yes&lt;br /&gt;
 GSSAPICleanupCredentials yes&lt;br /&gt;
 GSSAPIStrictAcceptorCheck yes&lt;br /&gt;
&amp;#039;&amp;#039;GSSAPICleanupCredentials&amp;#039;&amp;#039; ist dringend empfohlen, wenn &amp;#039;&amp;#039;GSSAPIDelegateCredentials&amp;#039;&amp;#039; benutzt wird: Es ruft nach dem Logout des Users ein &amp;#039;&amp;#039;kdestroy&amp;#039;&amp;#039; auf, damit das TGT wieder vom Host verschwindet.&lt;br /&gt;
&lt;br /&gt;
=== Su ===&lt;br /&gt;
* Benutzt host-Auth (Principal &amp;#039;&amp;#039;host/…&amp;#039;&amp;#039;).&lt;br /&gt;
Im Home des Zielbenutzers muss die Datei &amp;#039;&amp;#039;.k5login&amp;#039;&amp;#039; angelegt werden. Hierin können zeilenweise alle Principals vermerkt werden, die über &amp;#039;&amp;#039;ksu&amp;#039;&amp;#039; den Benutzer wechseln dürfen.&lt;br /&gt;
&lt;br /&gt;
Wenn kein genereller Zugriff erlaubt sein soll, sondern nur bestimmte Kommandos, so kann dies über die Datei &amp;#039;&amp;#039;.k5users&amp;#039;&amp;#039; geschehen.&lt;br /&gt;
 poc@POCNET.NET /bin/ls&lt;br /&gt;
 poc/admin@POCNET.NET *&lt;br /&gt;
So darf &amp;#039;&amp;#039;poc&amp;#039;&amp;#039; ein &amp;lt;code&amp;gt;ksu -e /bin/ls&amp;lt;/code&amp;gt; ausführen, die Adminvariante &amp;#039;&amp;#039;poc/admin&amp;#039;&amp;#039; dagegen alle Kommandos.&lt;br /&gt;
&lt;br /&gt;
=== Dovecot ===&lt;br /&gt;
* Benutzt service-Auth (Principals &amp;#039;&amp;#039;imap/…, pop/…, smtp/…&amp;#039;&amp;#039;).&lt;br /&gt;
* In &amp;#039;&amp;#039;/etc/dovecot/dovecot.conf&amp;#039;&amp;#039;:&lt;br /&gt;
 auth_krb5_keytab = /etc/krb5.keytab&lt;br /&gt;
 auth default {&lt;br /&gt;
   mechanisms = plain login gssapi&lt;br /&gt;
   passdb pam {&lt;br /&gt;
   }&lt;br /&gt;
   userdb passwd {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Siehe auch das Dovecot-Wiki zum Thema [http://wiki.dovecot.org/Authentication/Kerberos Kerberos] zum Thema.&lt;br /&gt;
&lt;br /&gt;
=== Sendmail ===&lt;br /&gt;
* Benutzt service-Auth (Principal &amp;#039;&amp;#039;smtp/…&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Beschreibung gilt für das aktuelle sendmail-Paket von PoC.&lt;br /&gt;
&lt;br /&gt;
 apt-get install libsasl2-modules-gssapi-mit&lt;br /&gt;
* In &amp;#039;&amp;#039;/etc/mail/sendmail.mc&amp;#039;&amp;#039;:&lt;br /&gt;
 TRUST_AUTH_MECH(`GSSAPI PLAIN LOGIN&amp;#039;)dnl&lt;br /&gt;
 define(`confAUTH_MECHANISMS&amp;#039;, `GSSAPI PLAIN LOGIN&amp;#039;)dnl&lt;br /&gt;
&lt;br /&gt;
Danach sendmail neu starten (erzeugt automatisch die &amp;#039;&amp;#039;sendmail.cf&amp;#039;&amp;#039; neu).&lt;br /&gt;
&lt;br /&gt;
* Konfig siehe auch [http://www.upenn.edu/computing/pennkey/sysadmin/d_install_unix/smtp.html hier]&lt;br /&gt;
&lt;br /&gt;
=== Netatalk ===&lt;br /&gt;
* Benutzt service-Auth (Principal &amp;#039;&amp;#039;afpserver/…&amp;#039;&amp;#039;).&lt;br /&gt;
* In &amp;#039;&amp;#039;/etc/netatalk/afpd.conf&amp;#039;&amp;#039;:&lt;br /&gt;
 … -uamlist uams_clrtxt.so,uams_gss.so -k5service afpserver&lt;br /&gt;
        -k5realm POCNET.NET -k5keytab /etc/krb5.keytab -fqdn leela.pocnet.net …&lt;br /&gt;
(muss in eine Zeile)&lt;br /&gt;
&lt;br /&gt;
=== Samba ===&lt;br /&gt;
* Benutzt service-Auth (Principal &amp;#039;&amp;#039;cifs/…&amp;#039;&amp;#039;).&lt;br /&gt;
* In &amp;#039;&amp;#039;/etc/samba/smb.conf&amp;#039;&amp;#039;:&lt;br /&gt;
 [global]&lt;br /&gt;
 client use spnego = yes&lt;br /&gt;
 realm = POCNET.NET&lt;br /&gt;
 use kerberos keytab = true&lt;br /&gt;
&lt;br /&gt;
Zugriff von OS X aus ist nun ohne Passwort möglich. Nachteil: Man muss zwingend den passenden Sharenamen im Server-Verbinden-Dialog mit angeben oder über die Freigaben-Liste in der Seitenleiste eines Finder-Fensters zugreifen.&lt;br /&gt;
&lt;br /&gt;
=== Telnet und Konsorten ===&lt;br /&gt;
* Benutzt host-Auth (Principal &amp;#039;&amp;#039;host/…&amp;#039;&amp;#039;).&lt;br /&gt;
 apt-get install krb5-telnetd krb5-rsh-server krb5-clients&lt;br /&gt;
Installiert u. A. einen kerberisierten Telnet-Server. Ebenfalls werden einige r-Dienste mit ihren Kerberospendants installiert (klogind/eklogind, kshelld).&lt;br /&gt;
&lt;br /&gt;
Ggfs. muss in der &amp;#039;&amp;#039;/etc/inetd.conf&amp;#039;&amp;#039; nachgebessert werden, falls hier schon vorher Dienste mit scheinbar doppelten Einträgen vorhanden waren (IPv6).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;telnet -f&amp;lt;/code&amp;gt; leitet ein als &amp;#039;&amp;#039;forwardable&amp;#039;&amp;#039; angelegtes TGT auf den Zielhost weiter. &amp;lt;code&amp;gt;telnet -x&amp;lt;/code&amp;gt; verschlüsselt die Verbindung.&lt;br /&gt;
&lt;br /&gt;
=== Apple Calendarserver ===&lt;br /&gt;
* Benutzt service-Auth (Principal &amp;#039;&amp;#039;http/…&amp;#039;&amp;#039;).&lt;br /&gt;
* In &amp;#039;&amp;#039;/etc/caldavd/caldavd.plist&amp;#039;&amp;#039; Serviceprincipal ergänzen:&lt;br /&gt;
 &amp;lt;!-- Kerberos/SPNEGO --&amp;gt;&lt;br /&gt;
 &amp;lt;key&amp;gt;Kerberos&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;dict&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;Enabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;true/&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;ServicePrincipal&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;http/leela.pocnet.net@POCNET.NET&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In Apple iCal:&lt;br /&gt;
** Account auf Kerberos umstellen (Servereinstellungen),&lt;br /&gt;
** Account-Informationen: Passwort löschen, Benutzername muss stehen bleiben!&lt;br /&gt;
&lt;br /&gt;
Nachteile: Wenn als Benutzername in iCal nicht die eigene Mailadresse verwendet wird, funktioniert das Einladen von Kontakten nicht. Hier beisst sich Kerberos mit Mail, was beides das @-Zeichen für eine Trennung zwischen Domain und Benutzernamen verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Webbasierte Dienste ===&lt;br /&gt;
==== Apache ====&lt;br /&gt;
* Benutzt service-Auth (Principal &amp;#039;&amp;#039;HTTP/…&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Unter Debian ist die Installation von &amp;#039;&amp;#039;libapache2-mod-auth-kerb&amp;#039;&amp;#039; notwendig. Kerberos benutzt DNS für die Verifizierung von Hostnamen, daher muss zwingend &amp;#039;&amp;#039;HostnameLookups&amp;#039;&amp;#039; auf on gesetzt werden und der URL-Zugriff auch auf diesen Hostnamen erfolgen. Zu diesem Hostnamen muss ein passender Principal angelegt werden und in die in der &amp;#039;&amp;#039;htaccess&amp;#039;&amp;#039; referenzierte Keytab exportiert werden. In dieser Keytab können im Falle der Verwendung von VHosts auch mehrere Serviceprincipals für HTTP hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzung einer separaten Keytab empfiehlt sich, da der Apache nicht als &amp;#039;&amp;#039;root&amp;#039;&amp;#039; läuft. Über eine Anpassung der globalen Keytab erkauft man sich das Risiko, dass auch andere Keys ausgelesen und damit kompromittiert werden könnten.&lt;br /&gt;
&lt;br /&gt;
Eine Beispiel-htaccess sieht so aus:&lt;br /&gt;
 AuthName Krb-Test&lt;br /&gt;
 AuthType Kerberos&lt;br /&gt;
 Krb5Keytab /etc/apache2/krb5.keytab&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;Limit GET PUT&amp;gt;&lt;br /&gt;
         require valid-user&lt;br /&gt;
 &amp;lt;/Limit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Kerberos-Modul verwendet HTTP als Serviceprincipal, also in Großbuchstaben. Das muss beim Anlegen des Principals berücksichtigt werden! Alternativ kann auch mit dem Parameter &amp;#039;&amp;#039;KrbServiceName&amp;#039;&amp;#039; ein eigener Wert vorgegeben werden.&lt;br /&gt;
&lt;br /&gt;
==== Firefox ====&lt;br /&gt;
* In der URL-Zeile about:config eingeben und Return drücken. &lt;br /&gt;
* Bei Filter network.nego eingeben, &lt;br /&gt;
* In die Felder &amp;#039;&amp;#039;network.negotiate-auth.delegation-uris&amp;#039;&amp;#039; und &amp;#039;&amp;#039;network.negotiate-auth.trusted-uris&amp;#039;&amp;#039; jeweils den Realm in Kleinbuchstaben eingeben.&lt;br /&gt;
&lt;br /&gt;
Siehe auch [https://developer.mozilla.org/En/Integrated_Authentication Mozilla Developer: Integrated Authentication].&lt;br /&gt;
&lt;br /&gt;
==== Safari ====&lt;br /&gt;
Keine Anpassungen notwendig.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://web.mit.edu/Kerberos/krb5-1.7/krb5-1.7.1/doc/krb5-admin.html MIT-Kerberos Admin-Guide] (engl.)&lt;br /&gt;
* [http://web.mit.edu/Kerberos/krb5-1.7/krb5-1.7.1/doc/krb5-user.html MIT-Kerberos User-Guide] (engl.)&lt;br /&gt;
* [http://leela.pocnet.net/heise/ix/07/03/123/art.htm Heise-Artikelserie zu Kerberos ab iX 03/2007]&lt;br /&gt;
* [http://forums.macosxhints.com/showthread.php?t=80265 Besonderheiten zu Kerberos unter OS X] (engl.)&lt;br /&gt;
* [http://chrisp.de/en/rsrc/kerberos.html Kurzeinstieg in Kerberos] (engl.)&lt;br /&gt;
* [http://www.ncsu.edu/mac/sma/sma.html Kerberos für alte Mac-OS-Versionen bis System 7] (engl.)&lt;br /&gt;
* [http://www.faqs.org/faqs/kerberos-faq/general/preamble.html Kerberos FAQ] (engl.)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
[[Kategorie:UNIX]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
</feed>