Update to r44442:

Editorial review of first 1/2 of Kerberos chapter.
This commit is contained in:
Bjoern Heidotting 2016-05-15 13:11:41 +00:00
parent fb4b145598
commit 62e3add0c4
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48815

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/security/chapter.xml,v 1.178 2012/04/30 17:07:41 bcr Exp $
basiert auf: r44403
basiert auf: r44442
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="security">
<info><title>Sicherheit</title>
@ -1196,7 +1196,7 @@ sendmail : PARANOID : deny</programlisting>
</sect1>
<sect1 xml:id="kerberos5">
<info><title><application>Kerberos5</application></title>
<info><title><application>Kerberos</application></title>
<authorgroup>
<author><personname><firstname>Tillman</firstname><surname>Hodgson</surname></personname><contrib>Beigetragen von </contrib></author>
</authorgroup>
@ -1205,14 +1205,18 @@ sendmail : PARANOID : deny</programlisting>
</authorgroup>
</info>
<para><application>Kerberos</application> ist ein Netzwerk-Protokoll,
das Benutzer mithilfe eines sicheren Servers authentifiziert.
Die Daten einer Kommunikation können verschlüsselt werden,
nachdem die Kommunikationspartner mit
<application>Kerberos</application> ihre Identität geprüft
haben.</para>
<para><application>Kerberos</application> ist ein
Netzwerk-Authentifizierungsprotokoll, das ursprünglich am
Massachusetts Institute of Technology (<acronym>MIT</acronym>)
entwickelt wurde. Es bietet die Möglichkeit zur sicheren
Authentifizierung über ein potentiell unsicheres Netzwerk. Das
<application>Kerberos</application>-Protokoll benutzt eine
starke Kryptographie, um die Identität von Clients und Servern
nachweisen zu können. Dabei werden keine unverschlüsselten
Daten über das Netzewrk gesendet.
<application>Kerberos</application> kann als eine Art Proxy zur
Identitätsprüfung, oder als vertrauenswürdiges
Authentifizierungssystem betrachtet werden.</para>
<para><application>Kerberos</application> hat nur eine Aufgabe:
Die sichere Prüfung der Identität eines Benutzers
@ -1224,10 +1228,29 @@ sendmail : PARANOID : deny</programlisting>
Sicherheits-Systemen eingesetzt werden, die diese Funktionen
bereitstellen.</para>
<para>Die aktuelle Version des Protokolls ist Version 5, die in
<acronym>RFC</acronym>&nbsp;4120 beschrieben ist. Es existieren
mehrere freie Implementierungen dieses Protokolls für eine Reihe
von Betriebssystemen. Das <acronym>MIT</acronym> entwickelt
auch weiterhin seine
<application>Kerberos</application>-Version weiter.
Es wird in den vereinigten Staaten als Kryptographie-Produkt
eingesetzt und unterlag in der Vergangenheit
<acronym>US</acronym>-Exportbeschränkungen. In &os; ist
<acronym>MIT</acronym>-<application>Kerberos</application> als
Port oder Paket <package>security/krb5</package>
verfügbar. Die
<application>Kerberos</application>-Implementation von Heimdal
wurde außerhalb der <acronym>USA</acronym> entwickelt und
unterliegt daher keinen Export-Beschränkungen.
Heimdal-<application>Kerberos</application> ist im Basissystem
von &os; enthalten. Mit <package>security/heimdal</package> aus
der Ports-Sammlung steht eine weitere Distribution, mit mehr
konfigurierbaren Optionen zur Verfügung.</para>
<para>Die folgenden Anweisungen beschreiben, wie Sie das mit
&os; gelieferte <application>Kerberos</application> einrichten.
Eine vollständige Beschreibung des Systems entnehmen Sie den
entsprechenden Hilfeseiten.</para>
&os; gelieferte Heimdal-<application>Kerberos</application>
einrichten.</para>
<para>Die Beschreibung der
<application>Kerberos</application>-Installation benutzt
@ -1254,54 +1277,9 @@ sendmail : PARANOID : deny</programlisting>
<application>Kerberos</application>-Realms sicher.</para>
</note>
<sect2>
<title>Geschichte</title>
<indexterm>
<primary>Kerberos5</primary>
<secondary>Geschichte</secondary>
</indexterm>
<para>Das <acronym>MIT</acronym> hat
<application>Kerberos</application> entwickelt, um
Sicherheitsprobleme auf dem Netzwerk zu lösen. Das
<application>Kerberos</application>-Protokoll verwendet
starke Kryptographie, sodass ein Server die Identität
eines Clients (der umgekehrte Vorgang ist auch möglich)
über ein unsicheres Netzwerk feststellen kann.</para>
<para>Der Begriff Kerberos wird sowohl für das Protokoll
als auch für Programme verwendet, die
<application>Kerberos</application> benutzen, wie
<application>Kerberos</application>-Telnet. Die aktuelle
Protokollversion ist 5 und wird in
<acronym>RFC</acronym>&nbsp;1510 beschrieben.</para>
<para>Mehrere Implementierungen des Protokolls stehen frei
zur Verfügung und decken viele Betriebssysteme ab.
Das Massachusetts Institute of Technology
(<acronym>MIT</acronym>), an dem <application>Kerberos</application>
ursprünglich entwickelt wurde, entwickelt seine
<application>Kerberos</application>-Version weiter. In den
<acronym>USA</acronym> wird diese Version häufig
eingesetzt, unterlag aber Export-Beschränkungen,
da sie in den <acronym>USA</acronym> entwickelt wurde.
Die <acronym>MIT</acronym>-Version von
<application>Kerberos</application> ist als Port oder Paket
<package>security/krb5</package> verfügbar.
Heimdal ist eine weitere Implementierung der Protokollversion 5.
Sie wurde außerhalb der <acronym>USA</acronym> entwickelt
und unterliegt daher keinen Export-Beschränkungen.
Heimdal-<application>Kerberos</application> befindet sich
im Port oder Paket <package>security/heimdal</package>
und das Basissystem von &os; enthält eine minimale
Installation von Heimdal.</para>
<para>Die folgenden Beispiele verwenden die in &os; enthaltene
Heimdal-Distribution.</para>
</sect2>
<sect2>
<title>Das Heimdal <acronym>KDC</acronym> einrichten</title>
<indexterm>
<primary>Kerberos5</primary>
<secondary>Key Distribution Center</secondary>
@ -1332,14 +1310,14 @@ kadmind5_server_enable="YES"</programlisting>
wie folgt bearbeitet:</para>
<programlisting>[libdefaults]
default_realm = EXAMPLE.ORG
default_realm = <replaceable>EXAMPLE.ORG</replaceable>
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
admin_server = kerberos.example.org
<replaceable>EXAMPLE.ORG</replaceable> = {
kdc = <replaceable>kerberos.example.org</replaceable>
admin_server = <replaceable>kerberos.example.org</replaceable>
}
[domain_realm]
.example.org = EXAMPLE.ORG</programlisting>
<replaceable>.example.org</replaceable> = <replaceable>EXAMPLE.ORG</replaceable></programlisting>
<para>Diese Einstellungen setzen voraus, dass der voll
qualifizierte Name des <acronym>KDC</acronym>s
@ -1347,36 +1325,34 @@ kadmind5_server_enable="YES"</programlisting>
class="fqdomainname">kerberos.example.org</systemitem> ist.
Wenn das <acronym>KDC</acronym> einen anderen Namen hat,
muss in der <acronym>DNS</acronym>-Zone ein Alias-Eintrag
(CNAME-Record) für das <acronym>KDC</acronym> hinzugefügt
werden.</para>
(<acronym>CNAME</acronym>-Record) für das
<acronym>KDC</acronym> hinzugefügt werden.</para>
<note>
<para>In großen Netzwerken mit einem ordentlich
konfigurierten <acronym>DNS</acronym>-Server kann die Datei
aus dem obigen Beispiel verkürzt werden:</para>
<programlisting>[libdefaults]
default_realm = EXAMPLE.ORG</programlisting>
default_realm = <replaceable>EXAMPLE.ORG</replaceable></programlisting>
<para>Die Zonendatei von <systemitem class="fqdomainname">example.org</systemitem>
muss dann die folgenden Zeilen enthalten:</para>
<programlisting>_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORG</programlisting>
</note>
<programlisting>_kerberos._udp IN SRV 01 00 88 <replaceable>kerberos.example.org</replaceable>.
_kerberos._tcp IN SRV 01 00 88 <replaceable>kerberos.example.org</replaceable>.
_kpasswd._udp IN SRV 01 00 464 <replaceable>kerberos.example.org</replaceable>.
_kerberos-adm._tcp IN SRV 01 00 749 <replaceable>kerberos.example.org</replaceable>.
_kerberos IN TXT <replaceable>EXAMPLE.ORG</replaceable></programlisting>
<note>
<para>Damit die Clients die
<application>Kerberos</application>-Dienste benutzen
können, muss <filename>/etc/krb5.conf</filename>
entweder die vollständige Konfiguration enthalten
oder eine minimale Konfiguration enthalten
<emphasis>und</emphasis> zusätzlich ein
<acronym>DNS</acronym>-Server richtig eingerichtet
sein.</para>
können, muss das <acronym>KDC</acronym> entweder eine
vollständig konfigurierte
<filename>/etc/krb5.conf</filename> enthalten, oder eine
minimale Konfiguration <emphasis>und</emphasis> zusätzlich
ein richtig konfigurierter
<acronym>DNS</acronym>-Server.</para>
</note>
<para>Im nächsten Schritt wird die
@ -1386,46 +1362,44 @@ _kerberos IN TXT EXAMPLE.ORG</programlisting>
brauchen Sie sich nicht merken, da ein davon abgeleiteter
Schlüssel in <filename>/var/heimdal/m-key</filename>
gespeichert wird. Um den Schlüssel zu erstellen, rufen Sie
&man.kstash.8; auf und geben Sie ein Passwort ein.</para>
<command>kstash</command> auf und geben Sie ein Passwort
ein:</para>
<para>Nachdem der Schlüssel erstellt wurde, sollte die
Datenbank initialisiert werden. Das
<application>Kerberos</application>-Werkzeug &man.kadmin.8;
kann mit <command>kadmin -l</command> im lokalen Modus benutzt
werden, ohne den Netzwerkdienst, welcher zu diesem Zeitpunkt
noch nicht läuft, zu verwenden. An der Eingabeaufforderung
von &man.kadmin.8; kann mit <command>init</command>
die Datenbank des Realms initialisiert werden.</para>
<screen>&prompt.root; <userinput>kstash</userinput>
Master key: <userinput><replaceable>xxxxxxxx</replaceable></userinput>
Verifying password - Master key: <userinput><replaceable>xxxxxxxx</replaceable></userinput></screen>
<para>Nachdem der Schlüssel erstellt wurde, intitialisieren Sie
die Datenbank mit <command>kadmin -l</command>. Die Option
weist <command>kadmin</command> an, die lokale Datenbank
direkt zu bearbeiten, anstatt den zu diesem Zeitpunkt noch
nicht laufenden Netzwerkdienst &man.kadmind.8; zu benutzen.
An der Eingabeaufforderung von <command>kadmin</command> kann
mit <command>init</command> die Datenbank des Realms
initialisiert werden:</para>
<screen>&prompt.root; <userinput>kadmin -l</userinput>
kadmin&gt; <userinput>init <replaceable>EXAMPLE.ORG</replaceable></userinput>
Realm max ticket life [unlimited]:</screen>
<para>Zuletzt wird mit <command>add</command> das erste
Prinzipal erstellt. Benutzen Sie die voreingestellten
Optionen. Die Einstellungen können später
Optionen. Die Einstellungen können später mit
<command>modify</command> verändert werden. An der
Eingabeaufforderung von &man.kadmin.8; zeigt
<command>?</command> Hilfetexte an.</para>
<command>?</command> die verfügbaren Optionen an.</para>
<para>Zusammengefasst wird die Datenbank wie folgt
eingerichtet:</para>
<screen>&prompt.root; <userinput>kstash</userinput>
Master key: <userinput>xxxxxxxx</userinput>
Verifying password - Master key: <userinput>xxxxxxxx</userinput>
&prompt.root; <userinput>kadmin -l</userinput>
kadmin&gt; <userinput>init EXAMPLE.ORG</userinput>
Realm max ticket life [unlimited]:
kadmin&gt; <userinput>add tillman</userinput>
<screen>kadmin&gt; <userinput>add <replaceable>tillman</replaceable></userinput>
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: <userinput>xxxxxxxx</userinput>
Verifying password - Password: <userinput>xxxxxxxx</userinput></screen>
Password: <userinput><replaceable>xxxxxxxx</replaceable></userinput>
Verifying password - Password: <userinput><replaceable>xxxxxxxx</replaceable></userinput></screen>
<para>Jetzt kann das <acronym>KDC</acronym> gestartet werden.
Führen Sie zum Start der Dienste
<para>Jetzt können die <acronym>KDC</acronym>-Dienste mit
<command>service kerberos start</command> und
<command>service kadmind start</command> aus. Obwohl
zu diesem Zeitpunkt noch keine kerberisierten Dienste
<command>service kadmind start</command> gestartet werden.
Obwohl zu diesem Zeitpunkt noch keine kerberisierten Dienste
laufen, kann die Funktion des <acronym>KDC</acronym>s
schon überprüft werden. Für den eben angelegten
Benutzer können Sie sich vom <acronym>KDC</acronym>
@ -1435,7 +1409,7 @@ Verifying password - Password: <userinput>xxxxxxxx</userinput></screen>
tillman@EXAMPLE.ORG's Password:
&prompt.user; <userinput>klist</userinput>
Credentials cache: FILE: <filename>/tmp/krb5cc_500</filename>
Credentials cache: FILE: /tmp/krb5cc_500
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
@ -1448,8 +1422,9 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG</screen>
</sect2>
<sect2>
<title>Heimdal <application>Kerberos</application>-Dienste
einrichten</title>
<title><application>Kerberos</application>-Dienste auf dem
Server einrichten</title>
<indexterm>
<primary>Kerberos5</primary>
<secondary>Dienste einrichten</secondary>
@ -1519,14 +1494,14 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG</screen>
in eine eigene keytab:</para>
<screen>&prompt.root; <userinput>kadmin</userinput>
kadmin&gt; <userinput>add --random-key host/myserver.example.org</userinput>
kadmin&gt; <userinput>add --random-key <replaceable>host/myserver.example.org</replaceable></userinput>
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin&gt; <userinput>ext host/myserver.example.org</userinput>
kadmin&gt; <userinput>ext_keytab <replaceable>host/myserver.example.org</replaceable></userinput>
kadmin&gt; <userinput>exit</userinput></screen>
<para>Beachten Sie, dass <command>ext</command> den
<para>Beachten Sie, dass <command>ext_keytab</command> den
extrahierten Schlüssel standardmäßig in
<filename>/etc/krb5.keytab</filename> speichert. Das ist
gut, wenn das Kommando auf dem kerberisierten Server
@ -1537,11 +1512,11 @@ kadmin&gt; <userinput>exit</userinput></screen>
extrahiert wird:</para>
<screen>&prompt.root; <userinput>kadmin</userinput>
kadmin&gt; <userinput>ext --keytab=/tmp/example.keytab <replaceable>host/myserver.example.org</replaceable></userinput>
kadmin&gt; <userinput>ext_keytab --keytab=/tmp/example.keytab <replaceable>host/myserver.example.org</replaceable></userinput>
kadmin&gt; <userinput>exit</userinput></screen>
<para>Anschließend kann die erzeugte keytab sicher mit
<command>scp</command> auf Server oder auf einen
&man.scp.1; auf Server oder auf einen
Wechseldatenträger kopiert werden. Geben Sie auf jeden Fall
einen anderen Namen für die keytab an, weil sonst die keytab
des <acronym>KDC</acronym>s überschrieben würde.</para>