<?Pub UDT _bookmark _target?><?Pub EntList bull rArr sect?><?Pub CX solbook(book(title()bookinfo()part(5)part(title()partintro()chapter()?><chapter id="refer-1"><?Pub Tag atict:info tracking="off" ref="0"?><?Pub Tag atict:user
user="sharonr" fullname="Sharon Veach"?><title>The Kerberos Service (Reference)</title><indexterm><primary>Kerberos</primary><secondary>reference</secondary>
</indexterm><highlights><para>This chapter lists many of the files, commands, and daemons that are
part of the Kerberos product. In addition, this chapter provides detailed
information about how Kerberos authentication works.</para><para>This is a list of the reference information in this chapter.</para><itemizedlist><listitem><para><olink targetptr="refer-2" remap="internal">Kerberos Files</olink></para>
</listitem><listitem><para><olink targetptr="refer-5" remap="internal">Kerberos Commands</olink></para>
</listitem><listitem><para><olink targetptr="refer-9" remap="internal">Kerberos Daemons</olink></para>
</listitem><listitem><para><olink targetptr="refer-11" remap="internal">Kerberos Terminology</olink></para>
</listitem><listitem><para><olink targetptr="refer-14" remap="internal">How the Kerberos Authentication
System Works</olink></para>
</listitem><listitem><para><olink targetptr="refer-15" remap="internal">Gaining Access to a Service Using
Kerberos</olink></para>
</listitem><listitem><para><olink targetptr="egric" remap="internal">Using Kerberos Encryption Types</olink></para>
</listitem><listitem><para><olink targetptr="refer-19" remap="internal">Using the gsscred Table</olink></para>
</listitem><listitem><para><olink targetptr="works-11" remap="internal">Notable Differences Between Solaris
Kerberos and MIT Kerberos</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="refer-2"><title>Kerberos Files</title><indexterm><primary>Kerberos</primary><secondary>files</secondary>
</indexterm><indexterm><primary>files</primary><secondary>Kerberos</secondary>
</indexterm><table frame="topbot" id="refer-tbl-3"><title>Kerberos Files</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="197*"/><colspec colname="column2" colwidth="199*"/><thead><row rowsep="1"><entry><para>File Name</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><filename>~/.gkadmin</filename> </para>
</entry><entry><para><indexterm><primary><filename>.gkadmin</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>~/.gkadmin</filename> file</primary><secondary>description</secondary></indexterm>Default
values for creating new principals in the SEAM Administration Tool</para>
</entry>
</row><row><entry><para><filename>~/.k5login</filename> </para>
</entry><entry><para><indexterm><primary><filename>.k5login</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>~/.k5login</filename> file</primary><secondary>description</secondary></indexterm>List
of principals that grant access to a Kerberos account</para>
</entry>
</row><row><entry><para><filename>/etc/krb5/kadm5.acl</filename> </para>
</entry><entry><para><indexterm><primary><filename>kadm5.acl</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/kadm5.acl</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
access control list file, which includes principal names of KDC administrators
and their Kerberos administration privileges</para>
</entry>
</row><row><entry><para><filename>/etc/krb5/kadm5.keytab</filename> </para>
</entry><entry><para><indexterm><primary><filename>kadm5.keytab</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/kadm5.keytab</filename> file</primary><secondary>description</secondary></indexterm></para>
</entry>
</row><row><entry><para><filename>/etc/krb5/kdc.conf</filename> </para>
</entry><entry><para><indexterm><primary><filename>kdc.conf</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/kdc.conf</filename> file</primary><secondary>description</secondary></indexterm>KDC
configuration file</para>
</entry>
</row><row><entry><para><filename>/etc/krb5/kpropd.acl</filename> </para>
</entry><entry><para><indexterm><primary><filename>kpropd.acl</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/kpropd.acl</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
database propagation configuration file</para>
</entry>
</row><row><entry><para><filename>/etc/krb5/krb5.conf</filename> </para>
</entry><entry><para><indexterm><primary><filename>krb5.conf</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/krb5.conf</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
realm configuration file</para>
</entry>
</row><row><entry><para><filename>/etc/krb5/krb5.keytab</filename> </para>
</entry><entry><para><indexterm><primary><filename>krb5.keytab</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/krb5.keytab</filename> file</primary><secondary>description</secondary></indexterm>Keytab
file for network application servers</para>
</entry>
</row><row><entry><para><filename>/etc/krb5/warn.conf</filename> </para>
</entry><entry><para><indexterm><primary><filename>warn.conf</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/etc/krb5/warn.conf</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
ticket expiration warning and automatic renewal configuration file</para>
</entry>
</row><row><entry><para><filename>/etc/pam.conf</filename> </para>
</entry><entry><para><indexterm><primary><filename>pam.conf</filename> file</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><filename>/etc/pam.conf</filename> file</primary><secondary>Kerberos and</secondary></indexterm>PAM
configuration file</para>
</entry>
</row><row><entry><para><filename>/tmp/krb5cc_<replaceable>uid</replaceable></filename> </para>
</entry><entry><para><indexterm><primary><filename>krb5cc_</filename><emphasis>uid</emphasis> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/tmp/krb5cc_</filename><emphasis>uid</emphasis> file</primary><secondary>description</secondary></indexterm>Default credentials cache, where <replaceable>uid</replaceable> is
the decimal UID of the user</para>
</entry>
</row><row><entry><para><filename>/tmp/ovsec_adm.<replaceable>xxxxxx</replaceable></filename> </para>
</entry><entry><para><indexterm><primary><filename>ovsec_adm.</filename><emphasis>xxxxx</emphasis> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/tmp/ovsec_adm.</filename><emphasis>xxxxx</emphasis> file</primary><secondary>description</secondary></indexterm>Temporary credentials cache for the lifetime of the
password changing operation, where <replaceable>xxxxxx</replaceable> is a
random string</para>
</entry>
</row><row><entry><para><filename>/var/krb5/.k5.<replaceable>REALM</replaceable></filename> </para>
</entry><entry><para><indexterm><primary><filename>.k5.</filename><emphasis>REALM</emphasis> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/.k5.</filename><emphasis>REALM</emphasis> file</primary><secondary>description</secondary></indexterm>KDC stash file, which contains a copy of the KDC master
key</para>
</entry>
</row><row><entry><para><filename>/var/krb5/kadmin.log</filename> </para>
</entry><entry><para><indexterm><primary><filename>kadmin.log</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/kadmin.log</filename> file</primary><secondary>description</secondary></indexterm>Log
file for <command>kadmind</command></para>
</entry>
</row><row><entry><para><filename>/var/krb5/kdc.log</filename> </para>
</entry><entry><para><indexterm><primary><filename>kdc.log</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/kdc.log</filename> file</primary><secondary>description</secondary></indexterm>Log file for the KDC</para>
</entry>
</row><row><entry><para><filename>/var/krb5/principal</filename> </para>
</entry><entry><para><indexterm><primary><filename>principal</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/principal</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
principal database</para>
</entry>
</row><row><entry><para><filename>/var/krb5/principal.kadm5</filename></para>
</entry><entry><para><indexterm><primary><filename>principal.kadm5</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/principal.kadm5</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
administrative database, which contains policy information</para>
</entry>
</row><row><entry><para><filename>/var/krb5/principal.kadm5.lock</filename> </para>
</entry><entry><para><indexterm><primary><filename>principal.kadm5.lock</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/principal.kadm5.lock</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
administrative database lock file</para>
</entry>
</row><row><entry><para><filename>/var/krb5/principal.ok</filename> </para>
</entry><entry><para><indexterm><primary><filename>principal.ok</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/principal.ok</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
principal database initialization file that is created when the Kerberos database
is initialized successfully</para>
</entry>
</row><row><entry><para><filename>/var/krb5/principal.ulog</filename> </para>
</entry><entry><para><indexterm><primary><filename>principal.ulog</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/principal.ulog</filename> file</primary><secondary>description</secondary></indexterm>Kerberos
update log, which contains updates for incremental propagation</para>
</entry>
</row><row><entry><para><filename>/var/krb5/slave_datatrans</filename> </para>
</entry><entry><para><indexterm><primary><filename>slave_datatrans</filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/slave_datatrans</filename> file</primary><secondary>description</secondary></indexterm>Backup
file of the KDC that the <command>kprop_script</command> script uses for propagation</para>
</entry>
</row><row><entry><para><filename>/var/krb5/slave_datatrans_<replaceable>slave</replaceable></filename> </para>
</entry><entry><para><indexterm><primary><filename>slave_datatrans_<replaceable>slave</replaceable></filename> file</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>/var/krb5/slave_datatrans_<replaceable>slave</replaceable></filename> file</primary><secondary>description</secondary></indexterm>Temporary dump file that is
created when full updates are made to the specified <replaceable>slave</replaceable></para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="refer-5"><title>Kerberos Commands</title><indexterm><primary>Kerberos</primary><secondary>commands</secondary>
</indexterm><indexterm><primary>commands</primary><secondary>Kerberos</secondary>
</indexterm><para>This section lists some commands that are included in the Kerberos product.</para><table frame="topbot" id="refer-tbl-6"><title>Kerberos Commands</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="156.80*"/><colspec colname="column2" colwidth="239.20*"/><thead><row rowsep="1"><entry><para>Command</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><filename>/usr/bin/ftp</filename> </para>
</entry><entry><para><indexterm><primary><command>ftp</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/ftp</command> command</primary><secondary>Kerberos and</secondary></indexterm> File Transfer Protocol
program</para>
</entry>
</row><row><entry><para><filename>/usr/bin/kdestroy</filename> </para>
</entry><entry><para><indexterm><primary><command>kdestroy</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/kdestroy</command> command</primary><secondary>Kerberos and</secondary></indexterm>Destroys
Kerberos tickets</para>
</entry>
</row><row><entry><para><filename>/usr/bin/kinit</filename> </para>
</entry><entry><para><indexterm><primary><command>kinit</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/kinit</command> command</primary><secondary>Kerberos and</secondary></indexterm> Obtains and caches
Kerberos ticket-granting tickets</para>
</entry>
</row><row><entry><para><filename>/usr/bin/klist</filename> </para>
</entry><entry><para><indexterm><primary><command>klist</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/klist</command> command</primary><secondary>Kerberos and</secondary></indexterm> Displays current
Kerberos tickets</para>
</entry>
</row><row><entry><para><filename>/usr/bin/kpasswd</filename> </para>
</entry><entry><para><indexterm><primary><command>kpasswd</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/kpasswd</command> command</primary><secondary>Kerberos and</secondary></indexterm> Changes
a Kerberos password</para>
</entry>
</row><row><entry><para><filename>/usr/bin/ktutil</filename> </para>
</entry><entry><para><indexterm><primary><command>ktutil</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/ktutil</command> command</primary><secondary>Kerberos and</secondary></indexterm> Manages Kerberos
keytab files</para>
</entry>
</row><row><entry><para><filename>/usr/bin/rcp</filename> </para>
</entry><entry><para><indexterm><primary><command>rcp</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/rcp</command> command</primary><secondary>Kerberos and</secondary></indexterm>Remote file copy
program</para>
</entry>
</row><row><entry><para><filename>/usr/bin/rdist</filename> </para>
</entry><entry><para><indexterm><primary><command>rdist</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/rdist</command> command</primary><secondary>Kerberos and</secondary></indexterm>Remote file distribution
program</para>
</entry>
</row><row><entry><para><filename>/usr/bin/rlogin</filename> </para>
</entry><entry><para><indexterm><primary><command>rlogin</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/rlogin</command> command</primary><secondary>Kerberos and</secondary></indexterm>Remote login program</para>
</entry>
</row><row><entry><para><filename>/usr/bin/rsh</filename> </para>
</entry><entry><para><indexterm><primary><command>rsh</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/rsh</command> command</primary><secondary>Kerberos and</secondary></indexterm>Remote shell program</para>
</entry>
</row><row><entry><para><filename>/usr/bin/telnet</filename> </para>
</entry><entry><para><indexterm><primary><command>telnet</command> command</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/bin/telnet</command> command</primary><secondary>Kerberos and</secondary></indexterm>Kerberized <command>telnet</command> program</para>
</entry>
</row><row><entry><para><filename>/usr/lib/krb5/kprop</filename> </para>
</entry><entry><para><indexterm><primary><command>kprop</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>/usr/lib/kprop</command> command</primary><secondary>description</secondary></indexterm>Kerberos database
propagation program</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/gkadmin</filename> </para>
</entry><entry><para><indexterm><primary><command>gkadmin</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>/usr/sbin/gkadmin</command> command</primary><secondary>description</secondary></indexterm>Kerberos
database administration GUI program, which is used to manage principals and
policies</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/gsscred</filename> </para>
</entry><entry><para><indexterm><primary><command>gsscred</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>/usr/sbin/gsscred</command> command</primary><secondary>description</secondary></indexterm>Manage
gsscred table entries</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kadmin</filename> </para>
</entry><entry><para><indexterm><primary><command>kadmin</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>/usr/sbin/kadmin</command> command</primary><secondary>description</secondary></indexterm>Remote Kerberos database
administration program (run with Kerberos authentication), which is used to
manage principals, policies, and keytab files</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kadmin.local</filename> </para>
</entry><entry><para><indexterm><primary><command>kadmin.local</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>/usr/sbin/kadmin.local</command> command</primary><secondary>description</secondary></indexterm>Local
Kerberos database administration program (run without Kerberos authentication
and must be run on master KDC), which is used to manage principals, policies,
and keytab files</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kclient</filename> </para>
</entry><entry><para><indexterm><primary><command>kclient</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>/usr/sbin/kclient</command> command</primary><secondary>description</secondary></indexterm>Kerberos
client installation script which is used with or without a installation profile</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kdb5_ldap_util</filename> </para>
</entry><entry><para><indexterm><primary><command>/usr/sbin/kdb5_ldap_util</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>kdb5_ldap_util</command> command</primary><secondary>description</secondary></indexterm>Creates
LDAP containers for Kerberos databases</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kdb5_util</filename> </para>
</entry><entry><para><indexterm><primary><command>/usr/sbin/kdb5_util</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>kdb5_util</command> command</primary><secondary>description</secondary></indexterm>Creates
Kerberos databases and stash files</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kgcmgr</filename> </para>
</entry><entry><para><indexterm><primary><command>/usr/sbin/kgcmgr</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>kgcmgr</command> command</primary><secondary>description</secondary></indexterm>Configures
Kerberos master and slave KDCs</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/kproplog</filename> </para>
</entry><entry><para><indexterm><primary><command>/usr/sbin/kproplog</command> command</primary><secondary>description</secondary></indexterm><indexterm><primary><command>kproplog</command> command</primary><secondary>description</secondary></indexterm>Lists
a summary of update entries in the update log</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="refer-9"><title>Kerberos Daemons</title><indexterm><primary>Kerberos</primary><secondary>daemons</secondary>
</indexterm><indexterm><primary>daemons</primary><secondary>table of Kerberos</secondary>
</indexterm><indexterm><primary><command>gssd</command> daemon</primary><secondary>Kerberos and</secondary>
</indexterm><para>The following table lists the daemons that the Kerberos product uses.</para><table frame="topbot" id="refer-tbl-10"><title>Kerberos Daemons</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="156.79*"/><colspec colname="column2" colwidth="239.21*"/><thead><row rowsep="1"><entry><para>Daemon</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><filename>/usr/sbin/in.ftpd</filename> </para>
</entry><entry><para><indexterm><primary><command>ftpd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>in.ftpd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/sbin/in.ftpd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>File
Transfer Protocol daemon</para>
</entry>
</row><row><entry><para><filename>/usr/lib/krb5/kadmind</filename></para>
</entry><entry><para><indexterm><primary><command>kadmind</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/lib/krb5/kadmind</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>Kerberos database
administration daemon</para>
</entry>
</row><row><entry><para><filename>/usr/lib/krb5/kpropd</filename></para>
</entry><entry><para><indexterm><primary><command>kpropd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/lib/krb5/kpropd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>Kerberos database
propagation daemon</para>
</entry>
</row><row><entry><para><filename>/usr/lib/krb5/krb5kdc</filename></para>
</entry><entry><para><indexterm><primary><command>krb5kdc</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/lib/krb5/krb5kdc</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>Kerberos ticket processing
daemon</para>
</entry>
</row><row><entry><para><filename>/usr/lib/krb5/ktkt_warnd</filename></para>
</entry><entry><para><indexterm><primary><command>ktkt_warnd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/lib/krb5/ktkt_warnd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>Kerberos
ticket expiration warning and automatic renewal daemon</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/in.rlogind</filename> </para>
</entry><entry><para><indexterm><primary><command>rlogind</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>in.rlogind</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/sbin/in.rlogind</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>Remote login daemon</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/in.rshd</filename> </para>
</entry><entry><para><indexterm><primary><command>rshd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>in.rshd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/sbin/in.rshd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm>Remote
shell daemon</para>
</entry>
</row><row><entry><para><filename>/usr/sbin/in.telnetd</filename> </para>
</entry><entry><para><indexterm><primary><command>telnetd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>in.telnetd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary><command>/usr/sbin/in.telnetd</command> daemon</primary><secondary>Kerberos and</secondary></indexterm><command>telnet</command> daemon</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect1><sect1 id="refer-11"><title>Kerberos Terminology</title><indexterm><primary>terminology</primary><secondary>Kerberos</secondary>
</indexterm><indexterm><primary>Kerberos</primary><secondary>terminology</secondary>
</indexterm><para>The following section presents Kerberos terms and their definitions.
These terms are used throughout the Kerberos documentation. To grasp Kerberos
concepts, an understanding of these terms is essential.</para><sect2 id="refer-12"><title>Kerberos-Specific Terminology</title><indexterm><primary>terminology</primary><secondary>Kerberos-specific</secondary>
</indexterm><indexterm><primary>Kerberos</primary><secondary>terminology</secondary>
</indexterm><para>You need to understand the terms in this section in order to administer
KDCs.</para><para><indexterm><primary>KDC</primary><secondary>master</secondary><tertiary>definition</tertiary></indexterm><indexterm><primary>KDC</primary><secondary>slave</secondary><tertiary>definition</tertiary></indexterm><indexterm><primary>master KDC</primary><secondary>definition</secondary></indexterm><indexterm><primary>slave KDCs</primary><secondary>definition</secondary></indexterm>The <emphasis>Key Distribution
Center</emphasis> or <emphasis>KDC</emphasis> is the component of Kerberos
that is responsible for issuing credentials. These credentials are created
by using information that is stored in the KDC database. Each realm needs
at least two KDCs, a master and at least one slave. All KDCs generate credentials,
but only the master KDC handles any changes to the KDC database.</para><para><indexterm><primary>stash file</primary><secondary>definition</secondary></indexterm><indexterm><primary><command>kadmind</command> daemon</primary><secondary>master KDC and</secondary></indexterm><indexterm><primary><command>krb5kdc</command> daemon</primary><secondary>master KDC and</secondary></indexterm>A <emphasis>stash file</emphasis> contains the master key for the KDC. This key is used
when a server is rebooted to automatically authenticate the KDC before starting
the <command>kadmind</command> and <command>krb5kdc</command> commands. Because
this file includes the master key, the file and any backups of the file should
be kept secure. The file is created with read-only permissions for <literal>root</literal>.
To keep the file secure, do not change the permissions. If the file is compromised,
then the key could be used to access or modify the KDC database.</para>
</sect2><sect2 id="refer-13"><title>Authentication-Specific Terminology</title><indexterm><primary>authentication</primary><secondary>terminology</secondary>
</indexterm><indexterm><primary>terminology</primary><secondary>authentication-specific</secondary>
</indexterm><para>You need to know the terms in this section to understand the authentication
process. Programmers and system administrators should be familiar with these
terms.</para><para><indexterm><primary>clients</primary><secondary>definition in Kerberos</secondary></indexterm>A <emphasis>client</emphasis> is the software that runs on a user's
workstation. The Kerberos software that runs on the client makes many requests
during this process. So, differentiating the actions of this software from
the user is important.</para><para><indexterm><primary>service</primary><secondary>definition in Kerberos</secondary></indexterm><indexterm><primary>servers</primary><secondary>definition in Kerberos</secondary></indexterm>The terms <replaceable>server</replaceable> and <replaceable>service</replaceable> are often used interchangeably. To clarify, the term <emphasis>server</emphasis> is used to define the physical system that Kerberos software
is running on. The term <emphasis>service</emphasis> corresponds to a particular
function that is being supported on a server (for example, <literal>ftp</literal> or <literal>nfs</literal>). Documentation often mentions servers as part of a service,
but this definition clouds the meaning of the terms. Therefore, the term <replaceable>server</replaceable> refers to the physical system. The term <replaceable>service</replaceable> refers to the software.</para><para><indexterm><primary>keys</primary><secondary>definition in Kerberos</secondary></indexterm><indexterm><primary>private keys</primary><secondary>definition in Kerberos</secondary></indexterm><indexterm><primary>service keys</primary><secondary>definition in Kerberos</secondary></indexterm><indexterm><primary>session keys</primary><secondary>definition in Kerberos</secondary></indexterm>The
Kerberos product uses two types of keys.  One type of key is a password derived
key.  The password derived key is given to each user principal and is known
only to the user and to the KDC.  The other type of key used by the Kerberos
product is a random key that is not associated with a password and so is not
suitable for use by user principals.  Random keys are typically used for service
principals that have entries in a keytab and session keys generated by the
KDC.  Service principals can use random keys since the service can access
the key in the keytab which allows it to run non-interactively.  Session keys
are generated by the KDC (and shared between the client and service) to provide
secure transactions between a client and a service.</para><itemizedlist><para><indexterm><primary>tickets</primary><secondary>definition in Kerberos</secondary></indexterm>A <emphasis>ticket</emphasis> is an information packet that is
used to securely pass the identity of a user to a server or service. A ticket
is valid for only a single client and a particular service on a specific server.
A ticket contains:</para><listitem><para>Principal name of the service</para>
</listitem><listitem><para>Principal name of the user</para>
</listitem><listitem><para>IP address of the user's host</para>
</listitem><listitem><para>Timestamp</para>
</listitem><listitem><para>Value which defines the lifetime of the ticket</para>
</listitem><listitem><para>Copy of the session key</para>
</listitem>
</itemizedlist><para>All of this data is encrypted in the server's service key.  Note, the
KDC issues the ticket embedded in a credential described below.  After a ticket
has been issued, it can be reused until the ticket expires.</para><para><indexterm><primary>credential</primary><secondary>description</secondary></indexterm>A <emphasis>credential</emphasis> is a packet of information that
includes a ticket and a matching session key. The credential is encrypted
with the requesting principal's key. Typically, the KDC generates a credential
in response to a ticket request from a client.</para><para><indexterm><primary>authenticator</primary><secondary>in Kerberos</secondary></indexterm>An <emphasis>authenticator</emphasis> is information used by the
server to authenticate the client user principal.  An authenticator includes
the principal name of the user, a timestamp, and other data.  Unlike a ticket,
an authenticator can be used once only, usually when access to a service is
requested.  An authenticator is encrypted by using the session key shared
by the client and server.  Typically, the client creates the authenticator
and sends it with the server's or service's ticket in order to authenticate
to the server or service.</para>
</sect2><sect2 id="refer-123456"><title>Types of Tickets</title><indexterm><primary>tickets</primary><secondary>types of</secondary>
</indexterm><indexterm><primary>types of tickets</primary>
</indexterm><para>Tickets have properties that govern how they can be used. These properties
are assigned to the ticket when it is created, although you can modify a ticket's
properties later. For example, a ticket can change from being <literal>forwardable</literal> to being <literal>forwarded</literal>. You can view ticket properties
with the <command>klist</command> command. See <olink targetptr="user-1" remap="internal">Viewing
Kerberos Tickets</olink>.</para><para>Tickets can be described by one or more of the following terms:</para><variablelist><varlistentry><term>Forwardable/forwarded</term><listitem><para><indexterm><primary>forwardable tickets</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>forwardable</secondary></indexterm>A forwardable ticket can be sent from one host to
another host, obviating the need for a client to reauthenticate itself. For
example, if the user <literal>david</literal> obtains a forwardable ticket
while on user <literal>jennifer</literal>'s machine, he can log in to his
own machine without having to get a new ticket (and thus authenticate himself
again). See <olink targetptr="user-21" remap="internal">Example&nbsp;26&ndash;1</olink> for
an example of a forwardable ticket.</para>
</listitem>
</varlistentry><varlistentry><term>Initial</term><listitem><para><indexterm><primary>initial ticket</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>initial</secondary></indexterm>An initial ticket is a ticket that is issued directly, not based
on a ticket-granting ticket. Some services, such as applications that change
passwords, can require tickets to be marked initial in order to assure themselves
that the client can demonstrate a knowledge of its secret key. An initial
ticket indicates that the client has recently authenticated itself, instead
of relying on a ticket-granting ticket, which might have been around for a
long time.</para>
</listitem>
</varlistentry><varlistentry><term>Invalid</term><listitem><para><indexterm><primary>invalid ticket</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>invalid</secondary></indexterm>An invalid ticket is a postdated ticket that has not yet become
usable. An invalid ticket will be rejected by an application server until
it becomes validated. To be validated, a ticket must be presented to the KDC
by the client in a ticket&ndash;granting service request, with the <option role="nodash">VALIDATE</option> flag set, after its start time has passed.</para>
</listitem>
</varlistentry><varlistentry><term>Postdatable/postdated</term><listitem><para><indexterm><primary>postdated ticket</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>postdatable</secondary></indexterm>A postdated ticket is a ticket that does not become
valid until some specified time after its creation. Such a ticket is useful,
for example, for batch jobs that are intended to be run late at night, because
the ticket, if stolen, cannot be used until the batch job is to be run. When
a postdated ticket is issued, it is issued as invalid and remains that way
until its start time has passed, and the client requests validation by the
KDC. A postdated ticket is normally valid until the expiration time of the
ticket-granting ticket. However, if the ticket is marked renewable, its lifetime
is normally set to be equal to the duration of the full life of the ticket-granting
ticket.</para>
</listitem>
</varlistentry><varlistentry><term>Proxiable/proxy</term><listitem><para>At times, it is necessary for a principal to allow a service
to perform an operation on its behalf. The principal name of the proxy must
be specified when the ticket is created. The Solaris release does not support
proxiable or proxy tickets.</para><para><indexterm><primary>proxiable ticket</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>proxiable</secondary></indexterm><indexterm><primary>proxy ticket</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>proxy</secondary></indexterm>A proxiable ticket is similar to a forwardable ticket, except
that it is valid only for a single service, whereas a forwardable ticket grants
the service the complete use of the client's identity. A forwardable ticket
can therefore be thought of as a sort of super-proxy.</para>
</listitem>
</varlistentry><varlistentry><term>Renewable</term><listitem><para><indexterm><primary>renewable ticket</primary><secondary>definition</secondary></indexterm><indexterm><primary>tickets</primary><secondary>renewable</secondary></indexterm>Because it is a security risk to have tickets with
very long lives, tickets can be designated as renewable. A renewable ticket
has two expiration times: the time at which the current instance of the ticket
expires, and the maximum lifetime for any ticket, which is one week. If a
client wants to continue to use a ticket, the client renews it before the
first expiration occurs. For example, a ticket can be valid for one hour,
with all tickets having a maximum lifetime of 10 hours. If the client that
is holding the ticket wants to keep it for more than an hour, the client must
renew it within that hour. When a ticket reaches the maximum ticket lifetime
(10 hours), it automatically expires and cannot be renewed.</para>
</listitem>
</varlistentry>
</variablelist><para>For information on how to view the attributes of tickets, see <olink targetptr="user-1" remap="internal">Viewing Kerberos Tickets</olink>.</para><sect3 id="refer-502"><title>Ticket Lifetimes</title><indexterm><primary>tickets</primary><secondary>lifetime</secondary>
</indexterm><indexterm><primary>lifetime of ticket</primary><secondary>in Kerberos</secondary>
</indexterm><itemizedlist><para>Any time a principal obtains a ticket, including a ticket&ndash;granting
ticket (TGT), the ticket's lifetime is set as the smallest of the following
lifetime values:</para><listitem><para><indexterm><primary><command>kinit</command> command</primary><secondary>ticket lifetime</secondary></indexterm>The lifetime value that
is specified by the <option>l</option> option of <command>kinit</command>,
if <command>kinit</command> is used to get the ticket. By default, <command>kinit</command> used the maximum lifetime value.</para>
</listitem><listitem><para><indexterm><primary><literal>max_life</literal> value</primary><secondary>description</secondary></indexterm><indexterm><primary><filename>kdc.conf</filename> file</primary><secondary>ticket lifetime and</secondary></indexterm><indexterm><primary>files</primary><secondary><filename>kdc.conf</filename></secondary></indexterm>The maximum lifetime value (<literal>max_life</literal>) that
is specified in the <filename>kdc.conf</filename> file.</para>
</listitem><listitem><para>The maximum lifetime value that is specified in the Kerberos
database for the service principal that provides the ticket. In the case of <command>kinit</command>, the service principal is <literal>krbtgt/</literal><replaceable>realm</replaceable><literal></literal>.</para>
</listitem><listitem><para>The maximum lifetime value that is specified in the Kerberos
database for the user principal that requests the ticket.</para>
</listitem>
</itemizedlist><para><olink targetptr="refer-fig-501" remap="internal">Figure&nbsp;27&ndash;1</olink> shows
how a TGT's lifetime is determined and where the four lifetime values come
from. Even though this figure shows how a TGT's lifetime is determined, basically
the same thing happens when any principal obtains a ticket. The only differences
are that <command>kinit</command> doesn't provide a lifetime value, and the
service principal that provides the ticket provides a maximum lifetime value
(instead of the <literal>krbtgt/</literal><replaceable>realm</replaceable><literal></literal> principal).</para><figure id="refer-fig-501"><title>How a TGT's Lifetime is Determined</title><mediaobject><imageobject><imagedata entityref="lifetime"/>
</imageobject><textobject><simpara>Diagram shows that a ticket lifetime is the smallest
value allowed by the kinit command, the user principal, the site default,
and the ticket granter.</simpara>
</textobject>
</mediaobject>
</figure><itemizedlist><para>The renewable ticket lifetime is also determined from the minimum of
four values, but renewable lifetime values are used instead, as follows:</para><listitem><para>The renewable lifetime value that is specified by the <option>r</option> option
of <command>kinit</command>, if <command>kinit</command> is used to obtain
or renew the ticket.</para>
</listitem><listitem><para><indexterm><primary><literal>max_renewable_life</literal> value</primary><secondary>description</secondary></indexterm><indexterm><primary>tickets</primary><secondary>maximum renewable lifetime</secondary></indexterm>The maximum renewable
lifetime value (<literal>max_renewable_life</literal>) that is specified in
the <filename>kdc.conf</filename> file.</para>
</listitem><listitem><para>The maximum lifetime renewable value that is specified in
the Kerberos database for the service principal that provides the ticket.
In the case of <command>kinit</command>, the service principal is <literal>krbtgt/</literal><replaceable>realm</replaceable><literal></literal>.</para>
</listitem><listitem><para>The maximum lifetime renewable value that is specified in
the Kerberos database for the user principal that requests the ticket.</para>
</listitem>
</itemizedlist>
</sect3><sect3 id="refer-31"><title>Kerberos Principal Names</title><para>Each ticket is identified by a principal name. The principal name can
identify a user or a service. Here are examples of several principal names.</para><table frame="topbot" pgwide="1" id="seamref-tbl-33"><title>Examples of Kerberos
Principal Names</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="199*"/><colspec colname="column2" colwidth="197*"/><thead><row rowsep="1"><entry><para>Principal Name</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>changepw/kdc1.example.com@EXAMPLE.COM</literal> </para>
</entry><entry><para>A principal for the master KDC server that allows access to the KDC
when you are changing passwords.</para>
</entry>
</row><row><entry><para><literal>clntconfig/admin@EXAMPLE.COM</literal> </para>
</entry><entry><para>A principal that is used by the <command>kclient</command> installation
utility.</para>
</entry>
</row><row><entry><para><literal>ftp/boston.example.com@EXAMPLE.COM</literal></para>
</entry><entry><para>A principal used by the <command>ftp</command> service. This principal
can be used instead of a <literal>host</literal> principal.</para>
</entry>
</row><row><entry><para><literal>host/boston.example.com@EXAMPLE.COM</literal></para>
</entry><entry><para>A principal that is used by the Kerberized applications (<command>klist</command> and <command>kprop</command>, for example) and services (such as <command>ftp</command> and <command>telnet</command>). This principal is called a <literal>host</literal> or service
principal. The principal is used to authenticate NFS mounts.</para>
</entry>
</row><row><entry><para><literal>K/M@EXAMPLE.COM</literal> </para>
</entry><entry><para>The master key name principal. One master key name principal is associated
with each master KDC.</para>
</entry>
</row><row><entry><para><literal>kadmin/history@EXAMPLE.COM</literal></para>
</entry><entry><para>A principal that includes a key used to keep password histories for
other principals. Each master KDC has one of these principals.</para>
</entry>
</row><row><entry><para><literal>kadmin/kdc1.example.com@EXAMPLE.COM</literal> </para>
</entry><entry><para>A principal for the master KDC server that allows access to the KDC
by using <command>kadmind</command>.</para>
</entry>
</row><row><entry><para><literal>kadmin/changepw.example.com@EXAMPLE.COM</literal> </para>
</entry><entry><para>A principal that is used to accept password change requests from clients
that are not running a Solaris release.</para>
</entry>
</row><row><entry><para><literal>krbtgt/EXAMPLE.COM@EXAMPLE.COM</literal> </para>
</entry><entry><para>This principal is used when you generate a ticket-granting ticket.</para>
</entry>
</row><row><entry><para><literal>krbtgt/EAST.EXAMPLE.COM@WEST.EXAMPLE.COM</literal> </para>
</entry><entry><para>This principal is an example of a cross-realm ticket-granting ticket.</para>
</entry>
</row><row><entry><para><literal>nfs/boston.example.com@EXAMPLE.COM</literal></para>
</entry><entry><para>A principal that is used by the NFS service. This principal can be used
instead of a <literal>host</literal> principal.</para>
</entry>
</row><row><entry><para><literal>root/boston.example.com@EXAMPLE.COM</literal></para>
</entry><entry><para>A principal that is associated with the <literal>root</literal> account
on a client. This principal is called a <literal>root</literal> principal
and provides <literal>root</literal> access to NFS mounted file systems..</para>
</entry>
</row><row><entry><para><replaceable>username</replaceable><literal>@EXAMPLE.COM</literal></para>
</entry><entry><para>A principal for a user.</para>
</entry>
</row><row><entry><para><replaceable>username</replaceable><literal>/admin@EXAMPLE.COM</literal></para>
</entry><entry><para>An <literal>admin</literal> principal that can be used to administer
the KDC database.</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect3>
</sect2>
</sect1><sect1 id="refer-14"><title>How the Kerberos Authentication System Works</title><indexterm><primary>authentication</primary><secondary>overview of Kerberos</secondary>
</indexterm><indexterm><primary>Kerberos</primary><secondary>overview </secondary><tertiary>authentication system</tertiary>
</indexterm><indexterm><primary>session keys</primary><secondary>Kerberos authentication and</secondary>
</indexterm><indexterm><primary>keys</primary><secondary>session keys</secondary><tertiary>Kerberos authentication and</tertiary>
</indexterm><para>Applications allow you to log in to a remote system if you can provide
a ticket that proves your identity, and a matching session key. The session
key contains information that is specific to the user and the service that
is being accessed. A ticket and session key are created by the KDC for all
users when they first log in. The ticket and the matching session key form
a credential. While using multiple networking services, a user can gather
many credentials. The user needs to have a credential for each service that
runs on a particular server. For example, access to the <command>ftp</command> service
on a server named <literal>boston</literal> requires one credential. Access
to the <command>ftp</command> service on another server requires its own credential. </para><para><indexterm><primary>ticket file</primary><see>credential cache</see></indexterm><indexterm><primary>credential</primary><secondary>cache</secondary></indexterm><indexterm><primary>cache</primary><secondary>credential</secondary></indexterm><indexterm><primary>tickets</primary><secondary>file</secondary><see>credential cache</see></indexterm>The process of creating and storing
the credentials is transparent. Credentials are created by the KDC that sends
the credential to the requester. When received, the credential is stored in
a credential cache.</para>
</sect1><sect1 id="refer-15"><title>Gaining Access to a Service Using Kerberos</title><indexterm><primary>servers</primary><secondary>gaining access with Kerberos</secondary>
</indexterm><indexterm><primary>Kerberos</primary><secondary>gaining access to server</secondary>
</indexterm><indexterm><primary>access</primary><secondary>getting to server</secondary><tertiary>with Kerberos</tertiary>
</indexterm><para>To access a specific service on a specific server, the user must obtain
two credentials. The first credential is for the ticket-granting ticket (known
as the TGT). Once the ticket-granting service has decrypted this credential,
the service creates a second credential for the server that the user is requesting
access to. This second credential can then be used to request access to the
service on the server. After the server has successfully decrypted the second
credential, then the user is given access. The following sections describe
this process in more detail.</para><sect2 id="refer-16"><title>Obtaining a Credential for the Ticket-Granting
Service</title><indexterm><primary>credential</primary><secondary>obtaining for a TGS</secondary>
</indexterm><indexterm><primary>obtaining</primary><secondary>credential for a TGS</secondary>
</indexterm><indexterm><primary>getting</primary><secondary>credential for a TGS</secondary>
</indexterm><indexterm><primary>ticket-granting service</primary><see>TGS</see>
</indexterm><indexterm><primary>TGS</primary><secondary>getting credential for</secondary>
</indexterm><orderedlist><listitem><para>To start the authentication process, the client sends a request
to the authentication server for a specific user principal. This request is
sent without encryption. No secure information is included in the request,
so it is not necessary to use encryption.</para>
</listitem><listitem><para>When the request is received by the authentication service,
the principal name of the user is looked up in the KDC database. If a principal
matches the entry in the database, the authentication service obtains the
private key for that principal. The authentication service then generates
a session key to be used by the client and the ticket-granting service (call
it Session key 1) and a ticket for the ticket-granting service (Ticket 1).
This ticket is also known as the <emphasis>ticket-granting ticket</emphasis> (TGT).
Both the session key and the ticket are encrypted by using the user's private
key, and the information is sent back to the client.</para>
</listitem><listitem><para>The client uses this information to decrypt Session Key 1
and Ticket 1, by using the private key for the user principal. Because the
private key should only be known by the user and the KDC database, the information
in the packet should be safe. The client stores the information in the credentials
cache.</para>
</listitem>
</orderedlist><para>During this process, a user is normally prompted for a password. If
the password the user specifies is the same as the password that was used
to build the private key stored in the KDC database, then the client can successfully
decrypt the information that is sent by the authentication service. Now the
client has a credential to be used with the ticket-granting service. The client
is ready to request a credential for a server.</para><figure id="refer-fig-22"><title>Obtaining a Credential for the Ticket-Granting
Service</title><mediaobject><imageobject><imagedata entityref="ticket-granting"/>
</imageobject><textobject><simpara>Flow diagram shows a client requesting a credential for
server access from the KDC, and using a password to decrypt the returned credential.</simpara>
</textobject>
</mediaobject>
</figure>
</sect2><sect2 id="refer-17"><title>Obtaining a Credential for a Server</title><indexterm><primary>servers</primary><secondary>obtaining credential for</secondary>
</indexterm><indexterm><primary>obtaining</primary><secondary>credential for a server</secondary>
</indexterm><indexterm><primary>getting</primary><secondary>credential for a server</secondary>
</indexterm><indexterm><primary>credential</primary><secondary>obtaining for a server</secondary>
</indexterm><orderedlist><listitem><para>To request access to a specific server, a client must first
have obtained a credential for that server from the authentication service.
See <olink targetptr="refer-16" remap="internal">Obtaining a Credential for the Ticket-Granting
Service</olink>. The client then sends a request to the ticket-granting service,
which includes the service principal name, Ticket 1, and an authenticator
that was encrypted with Session Key 1. Ticket 1 was originally encrypted by
the authentication service by using the service key of the ticket-granting
service. </para>
</listitem><listitem><para><indexterm><primary>authenticator</primary><secondary>in Kerberos</secondary></indexterm>Because the service key of the ticket-granting service
is known to the ticket-granting service, Ticket 1 can be decrypted. The information
in Ticket 1 includes Session Key 1, so the ticket-granting service can decrypt
the authenticator. At this point, the user principal is authenticated with
the ticket-granting service.</para>
</listitem><listitem><para>Once the authentication is successful, the ticket-granting
service generates a session key for the user principal and the server (Session
Key 2), and a ticket for the server (Ticket 2). Session Key 2 and Ticket 2
are then encrypted by using Session Key 1. Because Session Key 1 is known
only to the client and the ticket-granting service, this information is secure
and can be safely sent over the network.</para>
</listitem><listitem><para>When the client receives this information packet, the client
decrypts the information by using Session Key 1, which it had stored in the
credential cache. The client has obtained a credential to be used with the
server. Now the client is ready to request access to a particular service
on that server.</para>
</listitem>
</orderedlist><figure id="refer-fig-24"><title>Obtaining a Credential for a Server</title><mediaobject><imageobject><imagedata entityref="server-cred"/>
</imageobject><textobject><simpara>Flow diagram shows a client sending a request encrypted
with Session Key 1 to the KDC, and then decrypting the returned credential
with the same key.</simpara>
</textobject>
</mediaobject>
</figure>
</sect2><sect2 id="refer-18"><title>Obtaining Access to a Specific Service</title><indexterm><primary>access</primary><secondary>obtaining for a specific service</secondary>
</indexterm><indexterm><primary>service</primary><secondary>obtaining access for specific service</secondary>
</indexterm><indexterm><primary>obtaining</primary><secondary>access to a specific service</secondary>
</indexterm><indexterm><primary>getting</primary><secondary>access to a specific service</secondary>
</indexterm><orderedlist><listitem><para>To request access to a specific service, the client must first
have obtained a credential for the ticket-granting service from the authentication
server, and a server credential from the ticket-granting service. See <olink targetptr="refer-16" remap="internal">Obtaining a Credential for the Ticket-Granting Service</olink> and <olink targetptr="refer-17" remap="internal">Obtaining a Credential for a Server</olink>. The client
can then send a request to the server including Ticket 2 and another authenticator.
The authenticator is encrypted by using Session Key 2.</para>
</listitem><listitem><para>Ticket 2 was encrypted by the ticket-granting service with
the service key for the service. Because the service key is known by the service
principal, the service can decrypt Ticket 2 and get Session Key 2. Session
Key 2 can then be used to decrypt the authenticator. If the authenticator
is successfully decrypted, the client is given access to the service.</para>
</listitem>
</orderedlist><figure id="refer-fig-26"><title>Obtaining Access to a Specific Service</title><mediaobject><imageobject><imagedata entityref="service-cred"/>
</imageobject><textobject><simpara>Flow diagram shows a client using Ticket 2 and an authenticator
encrypted with Session Key 2 to obtain access permission to the server.</simpara>
</textobject>
</mediaobject>
</figure>
</sect2>
</sect1><sect1 id="egric"><title>Using Kerberos Encryption Types</title><indexterm><primary>Kerberos</primary><secondary>encryption types</secondary><tertiary>using</tertiary>
</indexterm><indexterm><primary>encryption </primary><secondary>types</secondary><tertiary>Kerberos and</tertiary>
</indexterm><para>Encryption types identify which cryptographic algorithms and mode to
use when cryptographic operations are performed. The <literal>aes</literal>, <literal>des3-cbc-sha1</literal> and <literal>rc4&ndash;hmac</literal> encryption types
enable the creation of keys that can be used for higher strength cryptographic
operations. These higher strength operations enhance the overall security
of the Kerberos service.</para><note><para>In releases prior to Solaris 10 8/07 release, the <literal>aes256-cts-hmac-sha1-96</literal> encryption type can be used with the Kerberos service if the unbundled
Strong Cryptographic packages are  installed.</para>
</note><para>When a client requests a ticket from the KDC, the KDC must use keys
whose encryption type is compatible with both the client and the server. 
While the Kerberos protocol allows the client to request that the KDC use
particular encryption types for the client's part of the ticket reply, the
protocol does not allow the server to specify encryption types to the KDC.</para><note><para>If you have a master KDC installed that is not running the Solaris
10 release, the slave KDCs must be upgraded to the Solaris 10 release before
you upgrade the master KDC. A Solaris 10 master KDC will use the new encryption
types, which an older slave will not be able to handle.</para>
</note><para>The following lists some of the issues that must be considered before
you change the encryption types.</para><itemizedlist><listitem><para>The KDC assumes  that the first key/enctype associated with
the server principal entry in the principal database is supported by the server.</para>
</listitem><listitem><para>On the KDC, you should make sure  that the keys generated
for the principal are compatible with the systems on which the principal will
be authenticated.  By default, the <command>kadmin</command> command creates
keys for all supported encryption types.  If the systems that the principal
is used on do not support this default set of encryption types, then you should
restrict the encryption types when creating a principal. You can restrict
the encryption types through use of the <option>e</option> flag in <command>kadmin</command> <option role="nodash">addprinc</option> or by setting the <literal>supported_enctypes</literal> parameter in the <filename>kdc.conf</filename> file to this subset.
  The <literal>supported_enctypes</literal> parameter should be used when
most of the systems in a Kerberos realm support a subset of the default set
of encryption types. Setting <literal>supported_enctypes</literal> specifies
the default set of encryption types <command>kadmin</command> <option role="nodash">addprinc</option> uses when it creates a principal for a particular
realm.  As a general rule, it is best to control the encryption types used
by Kerberos using one of these two methods.</para>
</listitem><listitem><para>When determining the encryption types a system supports, consider
both the version of Kerberos running on the system as well as the cryptographic
algorithms supported by the server application for which a server principal
is being created.  For example, when creating an <literal>nfs/hostname</literal> service
principal, you should restrict the encryption types to the types supported
by the NFS server on that host.  Note that in the Solaris 10 release, all
supported Kerberos encryption types are also supported by the NFS server.</para>
</listitem><listitem><para>The <literal>master_key_enctype</literal> parameter in the <filename>kdc.conf</filename> file can be used to control the encryption type of the
master key that encrypts the entries in the principal database.  Do not use
this parameter if the KDC principal database has already been created. The <literal>master_key_enctype</literal> parameter can be used at database creation time
 to change the default master key encryption type from <literal>des-cbc-crc</literal> to
a stronger encryption type. Make sure that all slave KDCs support the chosen
encryption type and that they have an identical <literal>master_key_enctype</literal> entry
in their <filename>kdc.conf</filename> when configuring the slave KDCs.  Also,
make sure that the <literal>master_key_enctype</literal> is set to one of
the encryption types in <literal>supported_enctypes</literal>, if <literal>supported_enctypes</literal> is set in <filename>kdc.conf</filename>. If either of these issues
are not handled properly, then the master KDC might not be able to work with
the slave KDCs.</para>
</listitem><listitem><para>On the client, you can control which encryption types the
client requests when getting tickets from the KDC through a couple of parameters
in <filename>krb5.conf</filename>.  The <literal>default_tkt_enctypes</literal> parameter
specifies the encryption types the client is willing to use when the client
requests a ticket-granting ticket (TGT) from the KDC.  The TGT is used by
the client to acquire other server tickets in a more efficient manner.  The
effect of setting <literal>default_tkt_enctypes</literal> is to give the client
some control over the encryption types used to protect the communication between
the client and KDC when the client requests a server ticket using the TGT
(this is called a TGS request).  Note, that the encryption types specified
in <literal>default_tkt_enctypes</literal> must match at least one of the
principal key encryption types in the principal database stored on the KDC.
Otherwise, the TGT request will fail.  In most situations, it is best not
to set <literal>default_tkt_enctypes</literal> because this parameter can
be a source of interoperability problems.  By default, the client code requests
that all supported encryption types and the KDC choose the encryption types
based on the keys the KDC finds in the principal database.</para>
</listitem><listitem><para>The <literal>default_tgs_enctypes</literal> parameter restricts
the encryption types the client requests in its TGS requests, which are used
to acquire server tickets.  This parameter also restricts the encryption types
the KDC uses when creating the session key that the client and server share.
 For example, if a client wants to only use 3DES encryption when doing secure
NFS, you should set <literal>default_tgs_enctypes</literal> = <literal>des3-cbc-sha1</literal>. Make sure that the client and server principals have a <literal>des-3-cbc-sha1</literal> key in the principal database.  As with <literal>default_tkt_enctype</literal>,
it is probably best in most cases not to set this because it can cause interoperability
problems if the credentials are not setup properly both on the KDC and the
server.</para>
</listitem><listitem><para>On the server, you can control the encryption types accepted
by the server with the <literal>permitted_enctypes</literal> in <filename>kdc.conf</filename>.  In addition, you can specify the encryption types used when
creating <literal>keytab</literal> entries.  Again, it is generally best not
to use either of these methods to control encryption types and instead let
the KDC determine the encryption types to use because the KDC does not communicate
with the server application to determine which key or encryption type to use.</para>
</listitem>
</itemizedlist>
</sect1><sect1 id="refer-19"><title>Using the <filename>gsscred</filename> Table</title><indexterm><primary><filename>gsscred</filename> table</primary><secondary>using</secondary>
</indexterm><indexterm><primary>tables</primary><secondary><filename>gsscred</filename></secondary>
</indexterm><indexterm><primary>mapping</primary><secondary>UIDs to Kerberos principals</secondary>
</indexterm><indexterm><primary>IDs</primary><secondary>mapping UNIX to Kerberos principals</secondary>
</indexterm><para>The <filename>gsscred</filename> table is used by an NFS server when
the server is trying to identify a Kerberos user, if the default mappings
are not sufficient. The NFS service uses UNIX IDs to identify users. These
IDs are not part of a user principal or a credential. The <filename>gsscred</filename> table
provides additional mapping from GSS credentials to UNIX UIDs (from the password
file). The table must be created and administered after the KDC database is
populated. See <olink targetptr="ezlsz" remap="internal">Mapping GSS Credentials to UNIX Credentials</olink> for more information.</para><para>When a client request comes in, the NFS service tries to map the credential
name to a UNIX ID. If the mapping fails, the <filename>gsscred</filename> table
is checked. </para>
</sect1><sect1 id="works-11"><title>Notable Differences Between Solaris Kerberos and
MIT Kerberos</title><para>The Solaris 10 version of the Kerberos service is based on MIT Kerberos
version 1.2.1. The following lists the enhancements included in the Solaris
10 release that are not included in the MIT 1.2.1 version:</para><itemizedlist><listitem><para>Kerberos support of Solaris remote applications</para>
</listitem><listitem><para>Incremental propagation for the KDC database</para>
</listitem><listitem><para>Client configuration script</para>
</listitem><listitem><para>Localized error messages</para>
</listitem><listitem><para>BSM audit record support</para>
</listitem><listitem><para>Thread safe use of Kerberos using GSS-API</para>
</listitem><listitem><para>Use of the Encryption Framework for cryptography</para>
</listitem>
</itemizedlist><para>This version also includes some post MIT 1.2.1 bug fixes. In particular,
1.2.5 btree bug fixes and 1.3 TCP support have been added.</para>
</sect1>
</chapter><?Pub *0000067532 0?>