<?Pub UDT _bookmark _target?><?Pub EntList bull rArr sect?><?Pub Inc?><?Pub CX solbook(book(title()bookinfo()part(5)part(title()partintro()?><chapter id="intro-1"><?Pub Tag atict:info tracking="off" ref="0"?><?Pub Tag atict:user
user="sharonr" fullname="Sharon Veach"?><title>Introduction to the Kerberos
Service</title><highlights><para>This chapter introduces the Kerberos Service. The following is a list
of the overview information in this chapter.</para><itemizedlist><listitem><para><olink targetptr="intro-5" remap="internal">What Is the Kerberos Service?</olink></para>
</listitem><listitem><para><olink targetptr="intro-25" remap="internal">How the Kerberos Service Works</olink></para>
</listitem><listitem><para><olink targetptr="intro-38" remap="internal">Kerberos Security Services</olink></para>
</listitem><listitem><para><olink targetptr="intro-27" remap="internal">The Components of Various Kerberos
Releases</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="intro-5"><title>What Is the Kerberos Service?</title><para><indexterm><primary>Kerberos</primary><secondary>realms</secondary><see>realms (Kerberos)</see></indexterm><indexterm><primary>authentication</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary>integrity</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary>encryption</primary><secondary>privacy service</secondary></indexterm><indexterm><primary>privacy</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary>authorizations</primary><secondary>Kerberos and</secondary></indexterm>The <emphasis>Kerberos
service</emphasis> is a client-server architecture that provides secure transactions
over networks. The service offers strong user authentication, as well as integrity
and privacy. <emphasis>Authentication</emphasis> guarantees that the identities
of both the sender and the recipient of a network transaction are true. The
service can also verify the validity of data being passed back and forth (<emphasis>integrity</emphasis>) and encrypt the data during transmission  (<emphasis>privacy</emphasis>).  Using the Kerberos service, you can log in to other machines,
execute commands, exchange data, and transfer files securely. Additionally,
the service provides <emphasis>authorization</emphasis> services, which allows
administrators to restrict access to services and machines. Moreover, as a
Kerberos user, you can regulate other people's access to your account. </para><para><indexterm><primary>single-sign-on system</primary><secondary>Kerberos and</secondary></indexterm>The Kerberos service is a <emphasis>single-sign-on</emphasis> system,
which means that you only need to authenticate yourself to the service once
per session, and all subsequent transactions during the session are automatically
secured. After the service has authenticated you, you do not need to authenticate
yourself every time you use a Kerberos-based command  such as <command>ftp</command> or <command>rsh</command>, or to access data on an NFS file system. Thus, you do not have
to send your password over the network, where it can be intercepted, each
time you use these services.</para><para><indexterm><primary>Kerberos</primary><secondary>Kerberos V5 protocol</secondary></indexterm>The Solaris Kerberos service is based on the Kerberos V5 network
authentication protocol that was developed at the Massachusetts Institute
of Technology (MIT). People who have used Kerberos V5 product should therefore
find the Solaris version very familiar. Because the Kerberos V5 protocol is
a <emphasis>de facto</emphasis> industry standard for network security, the
Solaris version promotes interoperability with other systems. In other words,
because the Solaris Kerberos service works with systems that use the Kerberos
V5 protocol, the service allows for secure transactions even over heterogeneous
networks. Moreover, the service provides authentication and security both
between domains and within a single domain. </para><para>The Kerberos service allows for flexibility in running Solaris applications.
You can configure the service to allow both Kerberos-based and non-Kerberos-based
requests for network services such as the NFS service, <command>telnet</command>,
and <command>ftp</command>. As a result, current Solaris applications still
work even if they are running on systems on which the Kerberos service is
not enabled. Of course, you can also configure the Kerberos service to allow
only Kerberos-based network requests.</para><para><indexterm><primary>GSS-API</primary><secondary>Kerberos and</secondary></indexterm>The Kerberos service provides a security mechanism which allows
the use of Kerberos for authentication, integrity, and privacy when using
applications that use the Generic Security Service Application Programming
Interface (GSS-API). However, applications do not have to remain committed
to the Kerberos service if other security mechanisms are developed. Because
the service is designed to integrate modularly into the GSS-API, applications
that use the GSS-API can utilize whichever security mechanism best suits their
needs.</para>
</sect1><sect1 id="intro-25"><title>How the Kerberos Service Works</title><indexterm><primary>Kerberos</primary><secondary>overview</secondary><tertiary>authentication system</tertiary>
</indexterm><para>The following is an overview of the Kerberos authentication system.
For a more detailed description, see <olink targetptr="refer-14" remap="internal">How the Kerberos
Authentication System Works</olink>.</para><para>From the user's standpoint, the Kerberos service is mostly invisible
after the Kerberos session has been started. Commands such as <command>rsh</command> or <command>ftp</command> work about the same. Initializing a Kerberos session often involves
no more than logging in and providing a Kerberos password.</para><para><indexterm><primary>tickets</primary><secondary>definition</secondary></indexterm><indexterm><primary>Key Distribution Center</primary><see>KDC</see></indexterm><indexterm><primary>transparency</primary><secondary>definition in Kerberos</secondary></indexterm>The Kerberos system revolves around the
concept of a <emphasis>ticket</emphasis>. A ticket is a set of electronic
information that identifies a user or a service such as the NFS service. Just
as your driver's license identifies you and indicates what driving privileges
you have, so a ticket identifies you and your network access privileges. When
you perform a Kerberos-based transaction (for example, if you remote log in
to another machine), you transparently send a request for a ticket to a <emphasis>Key Distribution Center</emphasis>, or KDC. The KDC accesses a database to
authenticate your identity and returns a ticket that grants you permission
to access the other machine. &ldquo;Transparently&rdquo; means that you do
not need to explicitly request a ticket. The request happens as part of the <command>rlogin</command> command. Because only an authenticated client can get a ticket
for a specific service, another client cannot use <command>rlogin</command> under
an assumed identity.</para><para><indexterm><primary>forwardable tickets</primary><secondary>description</secondary></indexterm><indexterm><primary>tickets</primary><secondary>forwardable</secondary></indexterm><indexterm><primary>postdated ticket</primary><secondary>description</secondary></indexterm><indexterm><primary>tickets</primary><secondary>postdated</secondary></indexterm>Tickets have certain attributes associated with them. For example,
a ticket can be <emphasis>forwardable</emphasis>, which means that it can
be used on another machine without a new authentication process. A ticket
can also be <emphasis>postdated</emphasis>, which means that it is not valid
until a specified time. How tickets can be used, for example, to specify which
users are allowed to obtain which types of ticket, is set by <emphasis>policies</emphasis>.
Policies are determined when the Kerberos service is installed or administered.</para><note><para><indexterm><primary>tickets</primary><secondary>or credentials</secondary></indexterm><indexterm><primary>credential</primary><secondary>or tickets</secondary></indexterm>You will frequently see the terms <emphasis>credential</emphasis> and <emphasis>ticket</emphasis>. In the greater Kerberos world, they are often used interchangeably.
Technically, however, a credential is a ticket plus the <emphasis>session
key</emphasis> for that session. This difference is explained in more detail
in <olink targetptr="refer-15" remap="internal">Gaining Access to a Service Using Kerberos</olink>.</para>
</note><para>The following sections further explain the Kerberos authentication process.</para><sect2 id="intro-55"><title>Initial Authentication: the Ticket-Granting Ticket</title><indexterm><primary>ticket-granting ticket</primary><see>TGT</see>
</indexterm><indexterm><primary>TGT</primary><secondary>in Kerberos</secondary>
</indexterm><para>Kerberos authentication has two phases: an initial authentication that
allows for all subsequent authentications, and the subsequent authentications
themselves.</para><para>The following figure shows how the initial authentication takes place.</para><figure id="intro-fig-39"><title>Initial Authentication for a Kerberos Session</title><mediaobject><imageobject><imagedata entityref="SEAM-Exchange-Simple1"/>
</imageobject><textobject><simpara>Flow diagram shows a client requesting a TGT from the
KDC, and then decrypting the TGT that the KDC returns to the client.</simpara>
</textobject>
</mediaobject>
</figure><orderedlist><listitem><para>A client (a user, or a service such as NFS) begins a Kerberos
session by requesting a <emphasis>ticket-granting ticket</emphasis> (TGT)
from the Key Distribution Center (KDC). This request is often done automatically
at login. </para><para>A ticket-granting ticket is needed to obtain other
tickets for specific services. Think of the ticket-granting ticket as similar
to a passport. Like a passport, the ticket-granting ticket identifies you
and allows you to obtain numerous &ldquo;visas,&rdquo; where the &ldquo;visas&rdquo;
(tickets) are not for foreign countries but for remote machines or network
services. Like passports and visas, the ticket-granting ticket and the other
various tickets have limited lifetimes. The difference is that &ldquo;Kerberized&rdquo;
commands notice that you have a passport and obtain the visas for you. You
don't have to perform the transactions yourself. </para><para>Another analogy for the ticket-granting ticket is that of a three-day
ski pass that is good at four different ski resorts. You show the pass at
whichever resort you decide to go to and you receive a lift ticket for that
resort, as long as the pass has not expired. Once you have the lift ticket,
you can ski all you want at that resort. If you go to another resort the next
day, you once again show your pass, and you get an additional lift ticket
for the new resort. The difference is that the Kerberos-based commands notice
that you have the weekend ski pass, and they get the lift ticket for you.
So you don't have to perform the transactions yourself.</para>
</listitem><listitem><para>The KDC creates a ticket&ndash;granting ticket and sends it
back, in encrypted form, to the client. The client decrypts the ticket-granting
ticket by using the client's password. </para>
</listitem><listitem><para>Now in possession of a valid ticket-granting ticket, the client
can request tickets for all sorts of network operations, such as <command>rlogin</command> or <command>telnet</command>, for as long as the ticket-granting ticket lasts. This ticket
usually lasts for a few hours. Each time the client performs a unique network
operation, it requests a ticket for that operation from the KDC. </para>
</listitem>
</orderedlist>
</sect2><sect2 id="intro-54"><title>Subsequent Kerberos Authentications</title><para>After the client has received the initial authentication, each subsequent
authentication follows the pattern that is shown in the following figure.</para><figure id="intro-fig-41"><title>Obtaining Access to a Service Using Kerberos
Authentication</title><mediaobject><imageobject><imagedata entityref="SEAM-Exchange-Simple2"/>
</imageobject><textobject><simpara>Flow diagram shows the client using a TGT to request
a ticket from the KDC, and then using the returned ticket for access to the
server.</simpara>
</textobject>
</mediaobject>
</figure><orderedlist><listitem><para>The client requests a ticket for a particular service, for
example, to remote log in to another machine, from the KDC by sending the
KDC its ticket-granting ticket as proof of identity.</para>
</listitem><listitem><para>The KDC sends the ticket for the specific service to the client.</para><para>For example, suppose user <literal>joe</literal> wants to access an
NFS file system that has been shared with <literal>krb5</literal> authentication
required.  Because he is already authenticated (that is, he already has a
ticket-granting ticket), as he attempts to access the files, the NFS client
system automatically and transparently obtains a ticket from the KDC for the
NFS service.</para><para>For example, suppose the user <literal>joe</literal> uses <command>rlogin</command> on
the server <literal>boston</literal>. Because he is already authenticated,
that is, he already has a ticket-granting ticket, he automatically and transparently
obtains a ticket as part of the <command>rlogin</command> command. This ticket
allows him to remote log in to <literal>boston</literal> as often as he wants
until the ticket expires. If <literal>joe</literal> wants to remote log in to the machine <literal>denver</literal>, he obtains another ticket, as in Step 1.</para>
</listitem><listitem><para>The client sends the ticket to the server.</para><para>When
using the NFS service, the NFS client automatically and transparently sends
the ticket for the NFS service to the NFS server.</para>
</listitem><listitem><para>The server allows the client access.</para>
</listitem>
</orderedlist><para>These steps make it appear that the server doesn't ever communicate
with the KDC. The server does, though; it registers itself with the KDC, just
as the first client does. For simplicity's sake, that part has been left out.</para>
</sect2><sect2 id="intro-53"><title>The Kerberos Remote Applications</title><indexterm><primary>Kerberos</primary><secondary>remote applications</secondary>
</indexterm><itemizedlist><para>The Kerberos-based (or &ldquo;Kerberized&rdquo;) commands that a user
such as <literal>joe</literal> can use are the following:</para><listitem><para><command>ftp</command></para>
</listitem><listitem><para><command>rcp</command></para>
</listitem><listitem><para><command>rdist</command></para>
</listitem><listitem><para><command>rlogin</command></para>
</listitem><listitem><para><command>rsh</command></para>
</listitem><listitem><para><command>ssh</command></para>
</listitem><listitem><para><command>telnet</command></para>
</listitem>
</itemizedlist><para>These applications are the same as the Solaris applications of the same
name. However, they have been extended to use Kerberos principals to authenticate
transactions, thereby providing Kerberos-based security. See <olink targetptr="intro-26" remap="internal">Kerberos Principals</olink> for information on principals.</para><para>These commands are discussed further in <olink targetptr="userseamsapp1" remap="internal">Kerberos
User Commands</olink>.</para>
</sect2><sect2 id="intro-26"><title>Kerberos Principals</title><indexterm><primary>principal</primary><secondary>Kerberos</secondary>
</indexterm><indexterm><primary>primary</primary><secondary>in principal names</secondary>
</indexterm><indexterm><primary>instance</primary><secondary>in principal names</secondary>
</indexterm><indexterm><primary>realms (Kerberos)</primary><secondary>in principal names</secondary>
</indexterm><indexterm><primary>principal</primary><secondary>principal name</secondary>
</indexterm><para>A client in the Kerberos service is identified by its <emphasis>principal</emphasis>.
A principal is a unique identity to which the KDC can assign tickets. A principal
can be a user, such as <literal>joe</literal>, or a service, such as <literal>nfs</literal> or <literal>telnet</literal>.</para><itemizedlist><para>By convention, a principal name is divided into three components: the <emphasis>primary</emphasis>, the <emphasis>instance</emphasis>, and the <emphasis>realm</emphasis>.
A typical Kerberos principal would be, for example, <literal>joe/admin@ENG.EXAMPLE.COM</literal>. In this example:</para><listitem><para><literal>joe</literal> is the primary. The primary can be
a user name, as shown here, or a service, such as <literal>nfs</literal>.
The primary can also be the word <literal>host</literal>, which signifies
that this principal is a service principal that is set up to provide various
network services, <literal>ftp</literal>, <literal>rcp</literal>, <literal>rlogin</literal>, and so on.</para>
</listitem><listitem><para><indexterm><primary>service principal</primary><secondary>description</secondary></indexterm><indexterm><primary>principal</primary><secondary>service principal</secondary></indexterm><indexterm><primary>user principal</primary><secondary>description</secondary></indexterm><indexterm><primary>principal</primary><secondary>user principal</secondary></indexterm><literal>admin</literal> is
the instance. An instance is optional in the case of user principals, but
it is required for service principals. For example, if the user <literal>joe</literal> sometimes
acts as a system administrator, he can use <literal>joe/admin</literal> to
distinguish himself from his usual user identity. Likewise, if <literal>joe</literal> has
accounts on two different hosts, he can use two  principal names with different
instances, for example, <literal>joe/denver.example.com</literal> and <literal>joe/boston.example.com</literal>. Notice that the Kerberos service treats <literal>joe</literal> and <literal>joe/admin</literal> as two completely different principals.</para><para>In
the case of a service principal, the instance is the fully qualified host
name. <literal>bigmachine.eng.example.com</literal> is an example of such
an instance. The primary/instance for this example might be <literal>ftp/bigmachine.eng.example.com</literal> or <literal>host/bigmachine.eng.example.com</literal>.</para>
</listitem><listitem><para><literal>ENG.EXAMPLE.COM</literal> is the Kerberos realm.
Realms are discussed in <olink targetptr="intro-56" remap="internal">Kerberos Realms</olink>.</para>
</listitem>
</itemizedlist><itemizedlist><para>The following are all valid principal names:</para><listitem><para><literal>joe</literal></para>
</listitem><listitem><para><literal>joe/admin</literal></para>
</listitem><listitem><para><literal>joe/admin@ENG.EXAMPLE.COM</literal></para>
</listitem><listitem><para><literal>nfs/host.eng.example.com@ENG.EXAMPLE.COM</literal></para>
</listitem><listitem><para><literal>host/eng.example.com@ENG.EXAMPLE.COM</literal></para>
</listitem>
</itemizedlist>
</sect2><sect2 id="intro-56"><title>Kerberos Realms</title><indexterm><primary>hierarchical realms</primary><secondary>in Kerberos</secondary>
</indexterm><indexterm><primary>nonhierarchical realms</primary><secondary>in Kerberos</secondary>
</indexterm><indexterm><primary>realms (Kerberos)</primary><secondary>hierarchical or nonhierarchical</secondary>
</indexterm><para>A <emphasis>realm</emphasis> is a logical network, similar to a domain,
that defines a group of systems under the same <emphasis>master KDC</emphasis>. <olink targetptr="intro-fig-43" remap="internal">Figure&nbsp;21&ndash;3</olink> shows how realms can
relate to one another. Some realms are hierarchical, where one realm is a
superset of the other realm. Otherwise, the realms are nonhierarchical (or &ldquo;direct&rdquo;)
and the mapping between the two realms must be defined. A feature of the Kerberos
service is that it permits authentication across realms. Each realm only needs
to have a principal entry for the other realm in its KDC. This Kerberos feature
is called <emphasis>cross-realm authentication</emphasis>.</para><figure id="intro-fig-43"><title>Kerberos Realms</title><mediaobject><imageobject><imagedata entityref="SEAM-Realms1"/>
</imageobject><textobject><simpara>Diagram shows the ENG.EXAMPLE.COM realm in a non-hierarchical
relationship with SEAMCO.COM, and in a hierarchical relationship with EXAMPLE.COM.</simpara>
</textobject>
</mediaobject>
</figure>
</sect2><sect2 id="intro-57"><title>Kerberos Servers</title><indexterm><primary>realms (Kerberos)</primary><secondary>servers and</secondary>
</indexterm><indexterm><primary>servers</primary><secondary>realms and</secondary>
</indexterm><indexterm><primary>KDC</primary><secondary>slave or master</secondary>
</indexterm><indexterm><primary>slave KDCs</primary><secondary>master KDC and</secondary>
</indexterm><indexterm><primary>master KDC</primary><secondary>slave KDCs and</secondary>
</indexterm><para>Each realm must include a server that maintains the master copy of the
principal database. This server is called the <emphasis>master KDC server</emphasis>.
Additionally, each realm should contain at least one <emphasis>slave KDC server</emphasis>,
which contains duplicate copies of the principal database. Both the master
KDC server and the slave KDC server create tickets that are used to establish
authentication. </para><para>The realm can also include  a Kerberos <emphasis>application server</emphasis>.
This server  provides access to Kerberized services (such as <command>ftp</command>, <command>telnet</command>, <command>rsh</command> and NFS).  If you have installed
SEAM 1.0 or 1.0.1, the realm might include a Kerberos network application
server, but this software was not included with these releases.</para><para><indexterm><primary>realms (Kerberos)</primary><secondary>contents of</secondary></indexterm>The following figure shows what a hypothetical realm might contain.</para><figure id="intro-fig-45"><title>A Typical Kerberos Realm</title><mediaobject><imageobject><imagedata entityref="SEAM-Realms2"/>
</imageobject><textobject><simpara>Diagram shows a typical Kerberos realm, EXAMPLE.COM,
which contains a master KDC, three clients, two slave KDCs, and two application
servers.</simpara>
</textobject>
</mediaobject>
</figure>
</sect2>
</sect1><sect1 id="intro-38"><title>Kerberos Security Services</title><indexterm><primary>security service</primary><secondary>Kerberos and</secondary>
</indexterm><indexterm><primary>privacy</primary><secondary>security service</secondary>
</indexterm><indexterm><primary>integrity</primary><secondary>security service</secondary>
</indexterm><itemizedlist><para>In addition to providing secure authentication of users, the Kerberos
service provides two security services:</para><listitem><para><emphasis role="strong">Integrity &ndash;</emphasis> Just
as authentication ensures that clients on a network are who they claim to
be, integrity ensures that the data they send is valid and has not been tampered
with during transit. Integrity is done through cryptographic checksumming
of the data. Integrity also includes user authentication.</para>
</listitem><listitem><para><emphasis role="strong">Privacy &ndash;</emphasis> Privacy
takes security a step further. Privacy not only includes verifying the integrity
of transmitted data, but it encrypts the data before transmission, protecting
it from eavesdroppers. Privacy authenticates users, as well.</para>
</listitem>
</itemizedlist><para>Developers can design their RPC-based applications to choose a security
service by using the RPCSEC_GSS programming interface.</para>
</sect1><sect1 id="intro-27"><title>The Components of Various Kerberos Releases</title><para>Components of the Kerberos service have been included in many releases.
Originally, the Kerberos service and changes to the base operating system
to support the Kerberos service were released using the product name &ldquo;Sun
Enterprise Authentication Mechanism&rdquo; which was shortened to SEAM. As
more parts of the SEAM product were included in the Solaris software, the
contents of the SEAM release decreased. For the Solaris 10 release, all parts
of the SEAM product are included, so there is no longer a need for the SEAM
product. The SEAM product name exists in the documentation for historical
reasons. </para><para>The following table describes which components are included in each
release. Each product release is listed in chronological order. All components
are described in the following sections.</para><table frame="topbot" id="seamov-tbl-3"><title>Kerberos Release Contents</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colwidth="50*"/><colspec colwidth="50*"/><thead><row rowsep="1"><entry><para>Release Name</para>
</entry><entry><para>Contents</para>
</entry>
</row>
</thead><tbody><row><entry><para>SEAM 1.0 in Solaris Easy Access Server 3.0</para>
</entry><entry><para>Full release of the Kerberos service for the Solaris 2.6 and 7 releases</para>
</entry>
</row><row><entry><para>The Kerberos service in the Solaris 8 release</para>
</entry><entry><para>Kerberos client software only</para>
</entry>
</row><row><entry><para>SEAM 1.0.1 in the Solaris 8 Admin Pack</para>
</entry><entry><para>Kerberos KDC and remote applications for the Solaris 8 release</para>
</entry>
</row><row><entry><para>The Kerberos service in the Solaris 9 release</para>
</entry><entry><para>Kerberos KDC and client software only</para>
</entry>
</row><row><entry><para>SEAM 1.0.2</para>
</entry><entry><para>Kerberos remote applications for the Solaris 9 release</para>
</entry>
</row><row><entry><para>The Kerberos service in the Solaris 10 release</para>
</entry><entry><para>Full release of the Kerberos service with enhancements</para>
</entry>
</row>
</tbody>
</tgroup>
</table><sect2 id="intro-58"><title>Kerberos Components</title><indexterm><primary>Kerberos</primary><secondary>components of</secondary>
</indexterm><itemizedlist><para>Similar to the MIT distribution of the Kerberos V5 product, the Solaris
Kerberos service includes the following:</para><listitem><para>Key Distribution Center (KDC):</para><itemizedlist><listitem><para>Kerberos database administration daemon &ndash; <command>kadmind</command>.</para>
</listitem><listitem><para>Kerberos ticket processing daemon &ndash; <command>krb5kdc</command>.</para>
</listitem><listitem><para>Database administration programs &ndash; <command>kadmin</command> (master
only), <command>kadmin.local</command> and <command>kdb5_util</command>.</para>
</listitem><listitem><para>Database propagation software &ndash; <command>kprop</command> (slave
only) and <command>kpropd</command>.</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>User programs for managing credentials &ndash; <command>kinit</command>, <command>klist</command>, and <command>kdestroy</command>.</para>
</listitem><listitem><para>User program for changing your Kerberos password &ndash; <command>kpasswd</command>.</para>
</listitem><listitem><para>Remote applications &ndash; <command>ftp</command>, <command>rcp</command>, <command>rdist</command>, <command>rlogin</command>, <command>rsh</command>, <command>ssh</command>,
and <command>telnet</command>.</para>
</listitem><listitem><para>Remote application daemons  &ndash; <command>ftpd</command>, <command>rlogind</command>, <command>rshd</command>, <command>sshd</command>, and <command>telnetd</command>.</para>
</listitem><listitem><para>Keytab administration utility &ndash; <command>ktutil</command>.</para>
</listitem><listitem><para>The Generic Security Service Application Programming Interface
(GSS-API) &ndash; Enables applications to use multiple security mechanisms
without requiring you to recompile the application every time a new mechanism
is added. The GSS-API uses standard interfaces that allow applications to
be portable to many operating systems. GSS-API provides applications with
the ability to include the integrity and privacy security services, as well
as authentication. Both <command>ftp</command> and <command>ssh</command> use
the GSS-API.</para>
</listitem><listitem><para>The RPCSEC_GSS Application Programming Interface (API) &ndash;
Enables NFS services to use Kerberos authentication. RPCSEC_GSS is a  security
flavor that provides security services that are independent of the mechanisms
being used. RPCSEC_GSS sits on top of the GSS-API layer. Any pluggable GSS_API-based
security mechanism can be used by applications that use RPCSEC_GSS.</para>
</listitem>
</itemizedlist><itemizedlist><para>In addition, the Solaris Kerberos service includes the following:</para><listitem><para><indexterm><primary>PAM</primary><secondary>Kerberos and</secondary></indexterm>Graphical Kerberos Administration Tool (<command>gkadmin</command>) &ndash;
Enables you to administer the principals and principal policies. This <trademark>Java</trademark> technology-based GUI is an alternative to the <command>kadmin</command> command.</para>
</listitem><listitem><para>A Kerberos V5 service module for PAM &ndash; Provides authentication,
account management, session management and password management for the Kerberos
service. The module can be used to make Kerberos authentication transparent
to the user.</para>
</listitem><listitem><para>Kernel modules &ndash; Provides kernel-based implementations
of the kerberos service for use by the NFS service, which greatly improves
performance.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="ggudv"><title>Kerberos Additions for the Solaris Express Community Edition Release</title><para>In build 90, the <command>kclient</command> script was enhanced. The
script includes the feature of joining Microsoft Active  Directory servers.
See <olink targetptr="seamtask-443" remap="internal">How to Interactively Configure a Kerberos
Client</olink> and <olink targetptr="ggtwg" remap="internal">How to Configure a Kerberos Client for an Active Directory Server</olink> for instructions. In addition, the script includes a <option>T</option> option
that may be used to identify the KDC server type for the client. All of the
options for this script are covered in the <olink targetdoc="group-refman" targetptr="kclient-1m" remap="external"><citerefentry><refentrytitle>kclient</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</sect2><sect2 id="gfvmg"><title>Kerberos Additions for the Solaris Express Developer Edition 1/08 Release</title><itemizedlist><para>These enhancements are available starting in the Solaris Express Developer Edition 1/08 release:</para><listitem><para>The Solaris Kerberos software has been synchronized with the
MIT 1.4 version. In particular, the software for the KDC, the <command>kinit</command> command
and the Kerberos mechanism have been updated. </para>
</listitem><listitem><para>Support for accessing Kerberos principal and policy records
using LDAP from a directory server has been added. This change simplifies
administration and can provide greater availability, depending on the deployment
of the KDCs and the DSs. See <olink targetptr="ggklp" remap="internal">Managing a KDC on an
LDAP Directory Server</olink> for a list of LDAP-related procedures.</para>
</listitem><listitem><para>The new <command>kdcmgr</command> command which can be used
to automatically or interactively setup any KDC. This command works to create
both master and slave KDC servers. Also, used with the <option role="nodash">status</option> option, the <command>kdcmgr</command> command shows information
about any KDC installed on the localhost. Look for the pointers to the automatic
or interactive procedures in <olink targetptr="ggdxl" remap="internal">Table&nbsp;23&ndash;1</olink>.</para>
</listitem><listitem><para>Support for Solaris clients that require no additional setup
has been added to this release. Changes were made to the Kerberos service
and to some default settings. Solaris Kerberos clients work with no client-side
configuration in environments that are appropriately configured. See <olink targetptr="seamplan-41" remap="internal">Client Configuration Options</olink> for more information.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="gevhy"><title>Kerberos Additions for the Solaris 10 8/07 Release</title><para>The MIT Kerberos V5 application programming interface (krb5-api) is
supported in the Solaris 10 8/07 release.  See the <citerefentry><refentrytitle>libkrb5</refentrytitle><manvolnum>3LIB</manvolnum></citerefentry> and <citerefentry><refentrytitle>krb5-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> man pages for more information.  Also, see the MIT Kerberos
V5 project web pages at mit.edu for more detailed documentation as it becomes
available.</para><para>Although the krb5-api is now available, Sun strongly encourages the
use of the GSS-API for network authentication and integrity and privacy as
the GSS-API is security-mechanism independent and an IETF standard. See the <olink targetdoc="group-refman" targetptr="libgss-3lib" remap="external"><citerefentry><refentrytitle>libgss</refentrytitle><manvolnum>3LIB</manvolnum></citerefentry></olink> man page
for more information.</para>
</sect2><sect2 id="gcfeq"><title>Kerberos Additions for the Solaris 10 6/06 Release</title><para>In the Solaris 10 6/06 release, the <command>ktkt_warnd</command> daemon
can automatically renew credentials, rather than just warn the user when the
credential is about to expire. The user must be logged in for the credential
to be renewed automatically. </para>
</sect2><sect2 id="seamov-62"><title>Kerberos Enhancements in the Solaris 10 3/05
Release</title><indexterm><primary>new features</primary><secondary>Kerberos enhancements</secondary>
</indexterm><para>These Kerberos enhancements are included in the Solaris 10 Release.
Several of the enhancements were introduced in prior Software Express releases
and updated in the Solaris 10 Beta releases.</para><itemizedlist><listitem><para>Kerberos protocol support is provided in remote applications,
such as <command>ftp</command>, <command>rcp</command>, <command>rdist</command>, <command>rlogin</command>, <command>rsh</command>, <command>ssh</command>, and <command>telnet</command>. See the man pages for each command or daemon and the <olink targetdoc="group-refman" targetptr="krb5-auth-rules-5" remap="external"><citerefentry><refentrytitle>krb5_auth_rules</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> man page for more information.</para>
</listitem><listitem><para><indexterm><primary>new features</primary><secondary>commands</secondary><tertiary><command>kpropd</command></tertiary></indexterm>The Kerberos principal
database can now be transferred by incremental update instead of by transferring
the entire database each time. Incremental propagation provides these advantages:</para><itemizedlist><listitem><para>Increased database consistencies across servers</para>
</listitem><listitem><para>The need for fewer resources (network, CPU, and so forth)</para>
</listitem><listitem><para>Much more timely propagation of updates</para>
</listitem><listitem><para>An automated method of propagation</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>A new script to help automatically configure a Kerberos client
is now available. The script helps an administrator quickly and easily set
up a Kerberos client. For procedures using the new script, see <olink targetptr="setup-148" remap="internal">Configuring Kerberos Clients</olink>. Also, see the <olink targetdoc="group-refman" targetptr="kclient-1m" remap="external"><citerefentry><refentrytitle>kclient</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page
for more information.<indexterm><primary>new features</primary><secondary>commands</secondary><tertiary><command>kclient</command></tertiary></indexterm></para>
</listitem><listitem><para>Several new encryption types have been added to the Kerberos
service. These new encryption types increase security and enhance compatibility
with other Kerberos implementations that support these encryption types. See <olink targetptr="egric" remap="internal">Using Kerberos Encryption Types</olink> for more information.
The encryption types include:</para><itemizedlist><listitem><para>The AES encryption type can be used for high speed, high security
encryption of Kerberos sessions. </para>
</listitem><listitem><para>ARCFOUR-HMAC provides better compatibility with other Kerberos
implementations.</para>
</listitem><listitem><para>Triple DES (3DES) with SHA1 increases security. This encryption
type also enhances interoperability with other Kerberos implementations that
support this encryption type.</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>The encryption types are enabled through the Cryptographic
Framework. The framework can provide for hardware accelerated cryptography
for the Kerberos service.</para>
</listitem><listitem><para>The KDC software, the user commands, and user applications
now support the use of the TCP network protocol. This enhancement provides
more robust operation and better interoperability with other Kerberos implementations,
including Microsoft's Active Directory. The KDC now listens on both the traditional
UDP ports as well as TCP ports so it can respond to requests using either
protocol. The user commands and applications first try UDP when sending a
request to the KDC, and if that fails, then try TCP.</para>
</listitem><listitem><para>Support for IPv6 was added to the KDC software, which includes
the <command>kinit</command>, <command>klist</command> and <command>kprop</command> commands.
 Support for IPv6 addresses is provided by default. There are no configuration
parameters to change to enable IPv6 support. No IPv6 support is available
for the <command>kadmin</command> and <command>kadmind</command> commands.</para>
</listitem><listitem><para>A new <option>e</option> option has been included to several
subcommands of the <command>kadmin</command> command. This new option allows
for the selection of the encryption type during the creation of principals.
See the <olink targetdoc="group-refman" targetptr="kadmin-1m" remap="external"><citerefentry><refentrytitle>kadmin</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page for more information.</para>
</listitem><listitem><para>Additions to the <literal>pam_krb5</literal> module to manage
the Kerberos credentials cache by using the PAM framework. See the <olink targetdoc="group-refman" targetptr="pam-krb5-5" remap="external"><citerefentry><refentrytitle>pam_krb5</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> man page for
more information.</para>
</listitem><listitem><para>Support is provided for auto-discovery of the Kerberos KDC,
admin server, kpasswd server, and host or domain name-to-realm mappings by
using DNS lookups. This enhancement reduces some of the steps needed to install
a Kerberos client. The client is able to locate a KDC server by using DNS
instead of by reading a configuration file. See the <olink targetdoc="group-refman" targetptr="krb5.conf-4" remap="external"><citerefentry><refentrytitle>krb5.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man page for
more information.</para>
</listitem><listitem><para>A new PAM module called <filename>pam_krb5_migrate</filename> has
been introduced. The new module helps in the automatic migration of users
to the local Kerberos  realm, if they do not already have Kerberos accounts.
See the <olink targetdoc="group-refman" targetptr="pam-krb5-migrate-5" remap="external"><citerefentry><refentrytitle>pam_krb5_migrate</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> man page for more information.</para>
</listitem><listitem><para>The <filename>~/.k5login</filename> file can now be used with
the GSS applications <command>ftp</command> and <command>ssh</command>. For
more information, see the <olink targetdoc="group-refman" targetptr="gss-auth-rules-5" remap="external"><citerefentry><refentrytitle>gss_auth_rules</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink>  man page.</para>
</listitem><listitem><para>The <command>kproplog</command> utility has been updated 
to output all attribute names per log entry. For more information, see the <olink targetdoc="group-refman" targetptr="kproplog-1m" remap="external"><citerefentry><refentrytitle>kproplog</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page.</para>
</listitem><listitem><para>Strict TGT verification can now be disabled using a configuration
option in the <filename>krb5.conf</filename> file. See the <olink targetdoc="group-refman" targetptr="krb5.conf-4" remap="external"><citerefentry><refentrytitle>krb5.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man page for
more information. </para>
</listitem><listitem><para>Extensions to the password-changing utilities enable the Solaris
Kerberos V5 administration server to accept password change requests from
clients that do not run Solaris software. See the <olink targetdoc="group-refman" targetptr="kadmind-1m" remap="external"><citerefentry><refentrytitle>kadmind</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page for more information.</para>
</listitem><listitem><para>The default location of the replay cache has been moved from
RAM-based file systems to persistent storage in <filename>/var/krb5/rcache/</filename>.
The new location protects against replays if a system is rebooted. Performance
enhancements were made to the rcache code. However, overall replay cache performance
might be slower due to the use of persistent storage.</para>
</listitem><listitem><para>The replay cache can now be configured to use file or memory
only storage.  Refer to the <olink targetdoc="group-refman" targetptr="krb5envvar-5" remap="external"><citerefentry><refentrytitle>krb5envvar</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> man page for more information
about environment variables that can be configured for key table and credential
cache types or locations.</para>
</listitem><listitem><para>The GSS credential table is no longer necessary for the Kerberos
GSS mechanism. For more information, see <olink targetptr="ezlsz" remap="internal">Mapping
GSS Credentials to UNIX Credentials</olink> or the <olink targetdoc="group-refman" targetptr="gsscred-1m" remap="external"><citerefentry><refentrytitle>gsscred</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>, <olink targetdoc="group-refman" targetptr="gssd-1m" remap="external"><citerefentry><refentrytitle>gssd</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>, and <olink targetdoc="group-refman" targetptr="gsscred.conf-4" remap="external"><citerefentry><refentrytitle>gsscred.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man pages.</para>
</listitem><listitem><para>The Kerberos utilities, <command>kinit</command> and <command>ktutil</command>, are now based on MIT Kerberos version 1.2.1. This change added
new options to the <command>kinit</command> command and new subcommands to
the <command>ktutil</command> command. For more information, see the <olink targetdoc="group-refman" targetptr="kinit-1" remap="external"><citerefentry><refentrytitle>kinit</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> and <olink targetdoc="group-refman" targetptr="ktutil-1" remap="external"><citerefentry><refentrytitle>ktutil</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> man pages.</para>
</listitem><listitem><para>The Solaris Kerberos Key Distribution Center (KDC) and <command>kadmind</command> is now based on MIT Kerberos version 1.2.1. The KDC now defaults
to a btree-based database, which is more reliable than the current hash-based
database. See the <olink targetdoc="group-refman" targetptr="kdb5-util-1m" remap="external"><citerefentry><refentrytitle>kdb5_util</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page for more information.</para>
</listitem><listitem><para>The <command>kpropd</command>, <command>kadmind</command>, <command>krb5kdc</command> and <command>ktkt_warnd</command> daemons are managed by
the Service Management Facility.  Administrative actions on this service,
such as enabling, disabling, or restarting, can be performed using the <command>svcadm</command> command.  The service's status for all daemons can be queried using
the <command>svcs</command> command. For an overview of 	the Service Management
Facility refer to <olink targetdoc="group-sa" targetptr="hbrunlevels-25516" remap="external">Chapter 15, <citetitle remap="chapter">Managing Services (Overview),</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="seamov-2"><title>Kerberos Components in the Solaris 9 Release</title><para>The Solaris 9 release includes all components included in <olink targetptr="intro-58" remap="internal">Kerberos Components</olink>, except for the remote applications.</para>
</sect2><sect2 id="seamov-61"><title>SEAM 1.0.2 Components</title><itemizedlist><para>The SEAM 1.0.2 release includes the remote applications. These applications
are the only part of SEAM 1.0 that have not been incorporated into the Solaris
9 release. The components for the remote applications are as follows:</para><listitem><para>Client applications &ndash; <command>ftp</command>, <command>rcp</command>, <command>rlogin</command>, <command>rsh</command>, and <command>telnet</command></para>
</listitem><listitem><para>Server daemons &ndash; <command>ftpd</command>, <command>rlogind</command>, <command>rshd</command>, and <command>telnetd</command></para>
</listitem>
</itemizedlist>
</sect2><sect2 id="intro-59"><title>Kerberos Components in the Solaris 8 Release</title><itemizedlist><para>The Solaris 8 release includes only the client-side portions of the
Kerberos service, so many components are not included. This product enables
systems that run the Solaris 8 release to become Kerberos clients without
requiring you to install SEAM 1.0.1 separately. To use these capabilities,
you must install a KDC that uses either Solaris Easy Access Server 3.0 or
the Solaris 8 Admin Pack, the MIT distribution, or Windows 2000. The client-side
components are not useful without a configured KDC to distribute tickets.
The following components are included in this release:</para><listitem><para>User programs for obtaining, viewing, and destroying tickets &ndash; <command>kinit</command>, <command>klist</command>, and <command>kdestroy</command>.</para>
</listitem><listitem><para>User program for changing your Kerberos password &ndash; <command>kpasswd</command>.</para>
</listitem><listitem><para>Key table administration utility &ndash; <command>ktutil</command>.</para>
</listitem><listitem><para><indexterm><primary>PAM</primary><secondary>Kerberos and</secondary></indexterm>Additions to the Pluggable Authentication Module (PAM) &ndash;
Enables applications to use various authentication mechanisms. PAM can be
used to make logins and logouts transparent to the user.</para>
</listitem><listitem><para>GSS_API plug&ndash;ins &ndash; Provides Kerberos protocol
and cryptographic support.</para>
</listitem><listitem><para>NFS client and server support.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="intro-60"><title>SEAM 1.0.1 Components</title><itemizedlist><para>The SEAM 1.0.1 release includes all components of the SEAM 1.0 release
that are not already included in the Solaris 8 release. The components are
as follows:</para><listitem><para>Key Distribution Center (KDC) (master):</para><itemizedlist><listitem><para>Kerberos database administration daemon &ndash; <command>kadmind</command></para>
</listitem><listitem><para>Kerberos ticket processing daemon &ndash; <command>krb5kdc</command></para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Slave KDCs.</para>
</listitem><listitem><para>Database administration programs &ndash; <command>kadmin</command> and <command>kadmin.local</command>.</para>
</listitem><listitem><para>Database propagation software &ndash; <command>kprop</command>.</para>
</listitem><listitem><para>Remote applications &ndash; <command>ftp</command>, <command>rcp</command>, <command>rlogin</command>, <command>rsh</command>, and <command>telnet</command>.</para>
</listitem><listitem><para>Remote application daemons &ndash; <command>ftpd</command>, <command>rlogind</command>, <command>rshd</command>, and <command>telnetd</command>.</para>
</listitem><listitem><para>Administration utility &ndash; <command>kdb5_util</command>.</para>
</listitem><listitem><para>Graphical Kerberos Administration Tool (<command>gkadmin</command>) &ndash;
Enables you to administer principals and principal policies. This Java technology-based
GUI is an alternative to the <command>kadmin</command> command.</para>
</listitem><listitem><para>A preconfiguration procedure &ndash; Enables you to set the
parameters for installing and configuring SEAM 1.0.1, which makes SEAM installation
automatic. This procedure is especially useful for multiple installations.</para>
</listitem><listitem><para>Several libraries.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="eqqld"><title>SEAM 1.0 Components</title><itemizedlist><para>The SEAM 1.0 release includes all of the items included in <olink targetptr="intro-58" remap="internal">Kerberos Components</olink> as well as the following:</para><listitem><para><indexterm><primary>GSS-API</primary><secondary>Kerberos and</secondary></indexterm><indexterm><primary>Generic Security Service API</primary><see>GSS-API</see></indexterm>A utility (<command>gsscred</command>) and a daemon (<literal>gssd</literal>) &ndash; These programs help map UNIX user IDs (UIDs) to principal
names. These programs are needed because  NFS servers use UNIX UIDs to identify
users and not principal names, which are stored in a different format.</para>
</listitem><listitem><para><indexterm><primary>RPCSEC_GSS API</primary><secondary>Kerberos and</secondary></indexterm>The Generic Security Service Application Programming
Interface (GSS-API) &ndash; Enables applications to use multiple security
mechanisms without requiring you to recompile the application every time a
new mechanism is added. Because GSS-API is machine-independent, it is appropriate
for applications on the Internet. GSS-API provides applications with the ability
to include the integrity and privacy security services, as well as authentication.</para>
</listitem><listitem><para>The RPCSEC_GSS Application Programming Interface (API) &ndash;
Enables NFS services to use Kerberos authentication. RPCSEC_GSS is a security
flavor that provides security services that are independent of the mechanisms
being used. RPCSEC_GSS sits on top of the GSS-API layer. Any pluggable GSS_API-based
security mechanism can be used by applications that use RPCSEC_GSS.</para>
</listitem><listitem><para>A preconfiguration procedure &ndash; Enables you to set the
parameters for installing and configuring SEAM 1.0, which makes installation
automatic. This procedure is especially useful for multiple installations.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter><?Pub *0000053720 0?>