Updated versions and feature list; fixed some typos
[krb5.git] / doc / install.texinfo
index 9aa6654bc04583ce3d375ba1c25a3629825b50b2..37fd1a4317a8cb1329efcc831e313faf9445e9f2 100644 (file)
@@ -8,13 +8,22 @@
 @setchapternewpage odd                  @c chapter begins on next odd page
 @c @setchapternewpage on                   @c chapter begins on next page
 @c @smallbook                              @c Format for 7" X 9.25" paper
+@documentencoding UTF-8
 @c %**end of header
+@copying
+Copyright @copyright{} 1985-2010 by the Massachusetts Institute of Technology.
+@end copying
 
 @paragraphindent 0
 @iftex
 @parskip 6pt plus 6pt
 @end iftex
 
+@dircategory Kerberos
+@direntry
+* krb5-install: (krb5-install).         Kerberos V5 Installation Guide
+@end direntry
+
 @include definitions.texinfo
 @set EDITION 1.1
 
 
 @page
 @vskip 0pt plus 1filll
-
-@iftex
-@include copyright.texinfo
-@end iftex
+@insertcopying
 @end titlepage
 
-@node Top, Copyright, (dir), (dir)
+@node Top, Introduction, (dir), (dir)
 @comment  node-name,  next,  previous,  up
 
 @ifinfo
 This file documents how to install the @value{RELEASE} release of
 @value{PRODUCT}.
 
+@insertcopying
 @end ifinfo
 
 @c The master menu is updated using emacs19's M-x texinfo-all-menus-update
@@ -61,20 +68,16 @@ This file documents how to install the @value{RELEASE} release of
 @c ---------------------------------------------------------------------
 
 @menu
-* Copyright::                   
 * Introduction::                
 * Realm Configuration Decisions::  
 * Building Kerberos V5::        
 * Installing Kerberos V5::      
 * Upgrading Existing Kerberos V5 Installations::  
 * Bug Reports for Kerberos V5::  
+* Copyright::                   
 @end menu
 
-@node Copyright, Introduction, Top, Top
-@unnumbered Copyright
-@include copyright.texinfo
-
-@node Introduction, Realm Configuration Decisions, Copyright, Top
+@node Introduction, Realm Configuration Decisions, Top, Top
 @chapter Introduction
 
 @menu
@@ -112,8 +115,6 @@ security breaches in industry happen from @i{inside} firewalls,
 @value{PRODUCT} from @value{COMPANY} will play a vital role in the
 security of your network.
 
-@include document-list.texinfo
-
 @node Please Read the Documentation, Overview of This Guide, Why Should I use Kerberos?, Introduction
 @section Please Read the Documentation
 
@@ -134,12 +135,19 @@ believes that it is important.  Please read and follow these
 instructions carefully.
 @end ifset
 
+@include document-list.texinfo
+
 @node Overview of This Guide,  , Please Read the Documentation, Introduction
 @section Overview of This Guide
 
+@noindent
 The next chapter describes the decisions you need to make before
 installing @value{PRODUCT}.
 
+@noindent
+Chapter three provided instructions for building the Kerberos sources.
+
+@noindent
 Chapter four describes installation procedures for each class of
 Kerberos machines:
 
@@ -166,13 +174,13 @@ UNIX application server machines
 Note that a machine can be both a client machine and an application
 server.
 
+@noindent
 Chapter five describes procedure for updating previous installations of
 @value{PRODUCT}.
 
+@noindent
 Chapter six describes our problem reporting system.
 
-The appendices give sample configuration files.
-
 @node Realm Configuration Decisions, Building Kerberos V5, Introduction, Top
 @chapter Realm Configuration Decisions
 
@@ -199,9 +207,6 @@ The hostnames of your master and slave KDCs.
 @item
 How frequently you will propagate the database from the master KDC to
 the slave KDCs.
-
-@item
-Whether you need backward compatibility with Kerberos V4.
 @end itemize
 
 @menu
@@ -233,15 +238,16 @@ BOSTON.@value{SECONDREALM} and HOUSTON.@value{SECONDREALM}.
 @node Ports for the KDC and Admin Services, Slave KDCs, Mapping Hostnames onto Kerberos Realms, Realm Configuration Decisions
 @section Ports for the KDC and Admin Services
 
-The default ports used by Kerberos are port 88 for the
-KDC@footnote{Kerberos V4 used port 750.  If necessary, you can run on
-both ports for backward compatibility.}  and port 749 for the admin
-server.  You can, however, choose to run on other ports, as long as they
-are specified in each host's @code{/etc/services} and @code{krb5.conf}
-files, and the @code{kdc.conf} file on each KDC.  For a more thorough
-treatment of port numbers used by the @value{PRODUCT} programs, refer to
-the ``Configuring Your Firewall to Work With @value{PRODUCT}'' section
-of the @cite{@value{PRODUCT} System Administrator's Guide}.
+The default ports used by Kerberos are port @value{DefaultPort} for the
+KDC@footnote{Kerberos V4 used port @value{DefaultSecondPort}.  If
+necessary, you can run on both ports for backward compatibility.}  and
+port @value{DefaultKadmindPort} for the admin server.  You can, however,
+choose to run on other ports, as long as they are specified in each
+host's @code{/etc/services} and @code{krb5.conf} files, and the
+@code{kdc.conf} file on each KDC.  For a more thorough treatment of
+port numbers used by the @value{PRODUCT} programs, refer to the
+``Configuring Your Firewall to Work With @value{PRODUCT}'' section of
+the @cite{@value{PRODUCT} System Administrator's Guide}.
 
 @node Slave KDCs, Hostnames for the Master and Slave KDCs, Ports for the KDC and Admin Services, Realm Configuration Decisions
 @section Slave KDCs
@@ -355,6 +361,7 @@ procedure is based on that recommendation.
 * Add Kerberos Principals to the Database::  
 * Limit Access to the KDCs::    
 * Switching Master and Slave KDCs::  
+* Incremental Database Propagation::  
 @end menu
 
 @node Install the Master KDC, Install the Slave KDCs, Installing KDCs, Installing KDCs
@@ -371,7 +378,7 @@ first few steps must be done on the master KDC.
 * Create the Database::         
 * Add Administrators to the Acl File::  
 * Add Administrators to the Kerberos Database::  
-* Create a kadmind Keytab::     
+* Create a kadmind Keytab (optional)::  
 * Start the Kerberos Daemons::  
 @end menu
 
@@ -415,10 +422,12 @@ An example @code{krb5.conf} file:
     default_realm = @value{PRIMARYREALM}
 
 [realms]
-    kdc = @value{KDCSERVER}.@value{PRIMARYDOMAIN}
-    kdc = @value{KDCSLAVE1}.@value{PRIMARYDOMAIN}
-    kdc = @value{KDCSLAVE2}.@value{PRIMARYDOMAIN}
-    admin_server = @value{KDCSERVER}.@value{PRIMARYDOMAIN}
+    @value{PRIMARYREALM} = @{
+       kdc = @value{KDCSERVER}.@value{PRIMARYDOMAIN}
+       kdc = @value{KDCSLAVE1}.@value{PRIMARYDOMAIN}
+       kdc = @value{KDCSLAVE2}.@value{PRIMARYDOMAIN}
+       admin_server = @value{KDCSERVER}.@value{PRIMARYDOMAIN}
+    @{
 
 [logging]
     kdc = FILE:/var/log/krb5kdc.log
@@ -451,6 +460,10 @@ should not be part of any backup of the machine, unless access to the
 backup data is secured as tightly as access to the master password
 itself.
 
+If you choose not to install a stash file, the KDC will prompt you for
+the master key each time it starts up.  This means that the KDC will
+not be able to start automatically, such as after a system reboot.
+
 Note that @code{kdb5_util} will prompt you for the master key for the
 Kerberos database.  This key can be any string.  A good key is one you
 can remember, but that no one else can guess.  Examples of bad keys are
@@ -484,6 +497,10 @@ It is important that you NOT FORGET this password.}
 @b{Enter KDC database master key:}  @i{<= Type the master password.}
 @b{Re-enter KDC database master key to verify:}  @i{<= Type it again.}
 @end ifinfo
+@ifhtml
+@b{Enter KDC database master key:}  @i{<= Type the master password.}
+@b{Re-enter KDC database master key to verify:}  @i{<= Type it again.}
+@end ifhtml
 @b{shell%}
 @end group
 @end smallexample
@@ -500,83 +517,16 @@ want a stash file, run the above command without the @code{-s} option.
 @subsubsection Add Administrators to the Acl File
 
 Next, you need create an Access Control List (acl) file, and put the
-Kerberos principal of at least one of the administrators into it.  The
-filename should match the value you have set for ``acl_file'' in your
-@code{kdc.conf} file.  The default file name is @samp{kadm5.acl}.  The
-format of the file is:
-
-@smallexample
-Kerberos principal      permissions     optional target principal
-@end smallexample
-
-The Kerberos principal (and optional target principal) can include the
-``@b{*}'' wildcard, so if you want any principal with the instance
-``admin'' to have full permissions on the database, you could use the
-principal ``@code{*/admin@@REALM}'' where ``REALM'' is your Kerberos
-realm.
-
-Note:  a common use of an @i{admin} instance is so you can grant
-separate permissions (such as administrator access to the Kerberos
-database) to a separate Kerberos principal.  For example, the user
-@code{@value{ADMINUSER}} might have a principal for his administrative
-use, called @code{@value{ADMINUSER}/admin}.  This way,
-@code{@value{ADMINUSER}} would obtain @code{@value{ADMINUSER}/admin}
-tickets only when he actually needs to use those permissions.  Refer to
-the @value{PRODUCT} Administrator's Guide or the @value{PRODUCT} User's
-Guide for more detailed explanations of @dfn{principals} and
-@dfn{instances}.
-
-The permissions (acls) recognized in the acl file 
-are the following:
-
-@table @b
-@itemx a
-allows the addition of principals or policies in the database.
-@itemx A
-prohibits the addition of principals or policies in the database.
-@itemx d
-allows the deletion of principals or policies in the database.
-@itemx D
-prohibits the deletion of principals or policies in the database.
-@itemx m    
-allows the modification of principals or policies in the database.
-@itemx M
-prohibits the modification of principals or policies in the database.
-@itemx c
-allows the changing of passwords for principals in the database.
-@itemx C
-prohibits the changing of passwords for principals in the database.
-@itemx i
-allows inquiries to the database.
-@itemx I
-prohibits inquiries to the database.
-@itemx l
-allows the listing of principals or policies in the database.
-@itemx L
-prohibits the listing of principals or policies in the database.
-@itemx *
-Short for all privileges (admcil).
-@itemx x
-Short for all privileges (admcil); identical to ``*''.
-@end table
-
-To give the principal @code{*/admin@@@value{PRIMARYREALM}} permission to
-change all of the database permissions on any principal permissions, you
-would place the following line in the file:
-
-@smallexample
-*/admin@@@value{PRIMARYREALM}  *
-@end smallexample
-
-To give the principal @code{@value{ADMINUSER}@@@value{PRIMARYREALM}}
-permission to add, list, and inquire about any principal that has the
-instance ``root'', you would add the following line to the acl file:
+Kerberos principal of at least one of the administrators into it.  This
+file is used by the @code{kadmind} daemon to control which principals
+may view and make privileged modifications to the Kerberos database
+files.  The filename should match the value you have set for
+``acl_file'' in your @code{kdc.conf} file.  The default file name is
+@samp{@value{DefaultAclFile}}.
 
-@smallexample
-@value{ADMINUSER}@@@value{PRIMARYREALM}  ali  */root@@@value{PRIMARYREALM}
-@end smallexample
+@include kadm5acl.texinfo
 
-@node Add Administrators to the Kerberos Database, Create a kadmind Keytab, Add Administrators to the Acl File, Install the Master KDC
+@node Add Administrators to the Kerberos Database, Create a kadmind Keytab (optional), Add Administrators to the Acl File, Install the Master KDC
 @subsubsection Add Administrators to the Kerberos Database
 
 Next you need to add administrative principals to the Kerberos database.
@@ -590,8 +540,8 @@ administration principal @code{admin/admin} is created:
 @group
 @b{shell%} @value{ROOTDIR}/sbin/kadmin.local
 @b{kadmin.local:} addprinc admin/admin@@@value{PRIMARYREALM}
-@b{WARNING: no policy specified for "admin/admin@@@value{PRIMARYREALM}";
-defaulting to no policy.}
+@b{NOTICE: no policy specified for "admin/admin@@@value{PRIMARYREALM}";
+assigning "default".}
 @iftex
 @b{Enter password for principal admin/admin@@@value{PRIMARYREALM}:}  @i{@doubleleftarrow{} Enter a password.}
 Re-enter password for principal admin/admin@@@value{PRIMARYREALM}:  @i{@doubleleftarrow{} Type it again.}
@@ -600,6 +550,10 @@ Re-enter password for principal admin/admin@@@value{PRIMARYREALM}:  @i{@doublele
 @b{Enter password for principal admin/admin@@@value{PRIMARYREALM}:}  @i{<= Enter a password.}
 Re-enter password for principal admin/admin@@@value{PRIMARYREALM}:  @i{<= Type it again.}
 @end ifinfo
+@ifhtml
+@b{Enter password for principal admin/admin@@@value{PRIMARYREALM}:}  @i{<= Enter a password.}
+Re-enter password for principal admin/admin@@@value{PRIMARYREALM}:  @i{<= Type it again.}
+@end ifhtml
 @b{Principal "admin/admin@@@value{PRIMARYREALM}" created.
 kadmin.local:}
 @end group
@@ -607,17 +561,18 @@ kadmin.local:}
 
 
 
-@node Create a kadmind Keytab, Start the Kerberos Daemons, Add Administrators to the Kerberos Database, Install the Master KDC
-@subsubsection Create a kadmind Keytab
+@node Create a kadmind Keytab (optional), Start the Kerberos Daemons, Add Administrators to the Kerberos Database, Install the Master KDC
+@subsubsection Create a kadmind Keytab (optional)
 
-The kadmind keytab is the key that kadmind will use to decrypt
-administrators' Kerberos tickets to determine whether or not it should
-give them access to the database.  You need to create the kadmin keytab
-with entries for the principals @code{kadmin/admin} and
+The kadmind keytab is the key that the legacy admininstration daemons
+@code{kadmind4} and @code{v5passwdd} will use to decrypt
+administrators' or clients' Kerberos tickets to determine whether or
+not they should have access to the database.  You need to create the
+kadmin keytab with entries for the principals @code{kadmin/admin} and
 @code{kadmin/changepw}.  (These principals are placed in the Kerberos
 database automatically when you create it.)  To create the kadmin
-keytab, run @code{kadmin.local} and use the @code{ktadd} command, as in
-the following example.  (The line beginning with @result{} is a
+keytab, run @code{kadmin.local} and use the @code{ktadd} command, as
+in the following example.  (The line beginning with @result{} is a
 continuation of the previous line.):
 
 @smallexample
@@ -625,12 +580,18 @@ continuation of the previous line.):
 @b{shell%} @value{ROOTDIR}/sbin/kadmin.local
 @b{kadmin.local:} ktadd -k @value{ROOTDIR}/var/krb5kdc/kadm5.keytab
 @result{} kadmin/admin kadmin/changepw 
-@b{Entry for principal kadmin/admin@@@value{PRIMARYREALM} with
-     kvno 3, encryption type DES-CBC-CRC added to keytab
-     WRFILE:@value{ROOTDIR}/var/krb5kdc/kadm5.keytab.
-Entry for principal kadmin/changepw@@@value{PRIMARYREALM} with
-     kvno 3, encryption type DES-CBC-CRC added to keytab
-     WRFILE:@value{ROOTDIR}/var/krb5kdc/kadm5.keytab.
+@b{ Entry for principal kadmin/admin with kvno 5, encryption
+       type Triple DES cbc mode with HMAC/sha1 added to keytab
+       WRFILE:/usr/local/var/krb5kdc/kadm5.keytab.
+Entry for principal kadmin/admin with kvno 5, encryption type DES cbc mode
+       with CRC-32 added to keytab
+       WRFILE:/usr/local/var/krb5kdc/kadm5.keytab.
+Entry for principal kadmin/changepw with kvno 5, encryption
+       type Triple DES cbc mode with HMAC/sha1 added to keytab
+       WRFILE:/usr/local/var/krb5kdc/kadm5.keytab.
+Entry for principal kadmin/changepw with kvno 5,
+       encryption type DES cbc mode with CRC-32 added to keytab
+       WRFILE:/usr/local/var/krb5kdc/kadm5.keytab.
 kadmin.local:} quit
 @b{shell%}
 @end group
@@ -643,7 +604,7 @@ The filename you use must be the one specified in your @code{kdc.conf}
 file.
 
 @need 2000
-@node Start the Kerberos Daemons,  , Create a kadmind Keytab, Install the Master KDC
+@node Start the Kerberos Daemons,  , Create a kadmind Keytab (optional), Install the Master KDC
 @subsubsection Start the Kerberos Daemons on the Master KDC
 
 At this point, you are ready to start the Kerberos daemons on the Master
@@ -705,16 +666,16 @@ named @value{KDCSLAVE1}.@value{PRIMARYDOMAIN} and
 @group
 @b{shell%} @value{ROOTDIR}/sbin/kadmin
 @b{kadmin:} addprinc -randkey host/@value{KDCSERVER}.@value{PRIMARYDOMAIN}
-@b{WARNING: no policy specified for "host/@value{KDCSERVER}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}";
-defaulting to no policy.
+@b{NOTICE: no policy specified for "host/@value{KDCSERVER}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}";
+assigning "default"
 Principal "host/@value{KDCSERVER}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}" created.
 kadmin:} addprinc -randkey host/@value{KDCSLAVE1}.@value{PRIMARYDOMAIN}
-@b{WARNING: no policy specified for "host/@value{KDCSLAVE1}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}";
-defaulting to no policy.
+@b{NOTICE: no policy specified for "host/@value{KDCSLAVE1}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}";
+assigning "default"
 Principal "host/@value{KDCSLAVE1}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}" created.}
 @b{kadmin:} addprinc -randkey host/@value{KDCSLAVE2}.@value{PRIMARYDOMAIN}
-@b{WARNING: no policy specified for "host/@value{KDCSLAVE2}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}";
-defaulting to no policy.
+@b{NOTICE: no policy specified for "host/@value{KDCSLAVE2}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}";
+assigning "default"
 Principal "host/@value{KDCSLAVE2}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}" created.
 kadmin:}
 @end group
@@ -780,23 +741,15 @@ host/@value{KDCSLAVE2}.@value{PRIMARYDOMAIN}@@@value{PRIMARYREALM}
 @end smallexample
  
 @need 1000
-Then, add the following lines to @code{/etc/inetd.conf} file on each KDC
-(the line beginnng with @result{} is a continuation of the previous
-line):
+Then, add the following line to @code{/etc/inetd.conf} file on each KDC:
 
 @smallexample
 @group
 krb5_prop stream tcp nowait root @value{ROOTDIR}/sbin/kpropd kpropd
-eklogin   stream tcp nowait root @value{ROOTDIR}/sbin/klogind 
-@result{} klogind -k -c -e
 @end group
 @end smallexample
 
 @noindent
-The first line sets up the @code{kpropd} database propagation daemon.
-The second line sets up the @code{eklogin} daemon, allowing
-Kerberos-authenticated, encrypted rlogin to the KDC.
-
 You also need to add the following lines to @code{/etc/services} on each
 KDC:
 
@@ -807,7 +760,6 @@ kerberos        88/tcp      kdc       # Kerberos authentication (tcp)
 krb5_prop       754/tcp               # Kerberos slave propagation
 kerberos-adm    749/tcp               # Kerberos 5 admin/changepw (tcp)
 kerberos-adm    749/udp               # Kerberos 5 admin/changepw (udp)
-eklogin         2105/tcp              # Kerberos encrypted rlogin
 @end group
 @end smallexample
 
@@ -858,7 +810,7 @@ the name of the directory in which you installed @value{PRODUCT}.)
 
 kdclist = "@value{KDCSLAVE1}.@value{PRIMARYDOMAIN} @value{KDCSLAVE2}.@value{PRIMARYDOMAIN}"
 
-@value{ROOTDIR}/sbin/kdb5_util -R "dump
+@value{ROOTDIR}/sbin/kdb5_util "dump
 @result{} @value{ROOTDIR}/var/krb5kdc/slave_datatrans"
 
 for kdc in $kdclist
@@ -899,6 +851,9 @@ kdb5_util: Warning: proceeding without master key}
 @ifinfo
 @b{Enter KDC database master key:}  @i{<= Enter the database master key.}
 @end ifinfo
+@ifhtml
+@b{Enter KDC database master key:}  @i{<= Enter the database master key.}
+@end ifhtml
 @b{shell%}
 @end group
 @end smallexample
@@ -945,47 +900,7 @@ server, Web server, or even just a client machine, someone who obtained
 root access through a security hole in any of those areas could gain
 access to the Kerberos database.
 
-@need 4700
-@value{COMPANY} recommends that your KDCs use the following
-@code{/etc/inetd.conf} file.  (Note:  each line beginning with @result{}
-is a continuation of the previous line.):
-
-@smallexample
-@group
-#
-# Configuration file for inetd(1M).  See inetd.conf(4).
-#
-# To re-configure the running inetd process, edit this file, then
-# send the inetd process a SIGHUP.
-#
-# Syntax for socket-based Internet services:
-#  <service_name> <socket_type> <proto> <flags> <user> 
-@result{} <server_pathname> <args>
-#
-# Syntax for TLI-based Internet services:
-#
-#  <service_name> tli <proto> <flags> <user> <server_pathname> <args>
-#
-# Ftp and telnet are standard Internet services.
-#
-# This machine is a secure Kerberos Key Distribution Center (KDC).  
-# Services are limited.
-#
-#
-# Time service is used for clock synchronization.
-#
-time    stream  tcp     nowait  root    internal
-time    dgram   udp     wait    root    internal
-#
-# Limited Kerberos services
-#
-krb5_prop stream tcp nowait root @value{ROOTDIR}/sbin/kpropd  kpropd
-eklogin   stream tcp nowait root @value{ROOTDIR}/sbin/klogind 
-@result{} klogind -5 -c -e
-@end group
-@end smallexample
-
-@node Switching Master and Slave KDCs,  , Limit Access to the KDCs, Installing KDCs
+@node Switching Master and Slave KDCs, Incremental Database Propagation, Limit Access to the KDCs, Installing KDCs
 @subsection Switching Master and Slave KDCs
 
 You may occasionally want to use one of your slave KDCs as the master.
@@ -1020,7 +935,7 @@ On the @emph{new} master KDC:
 
 @enumerate
 @item
-Create a database keytab.  (@xref{Create a kadmind Keytab}.)
+Create a database keytab.  (@xref{Create a kadmind Keytab (optional)}.)
 
 @item
 Start the @code{kadmind} daemon.  (@xref{Start the Kerberos Daemons}.)
@@ -1036,6 +951,136 @@ machine in your Kerberos realm.)
 
 @end enumerate
 
+@node Incremental Database Propagation,  , Switching Master and Slave KDCs, Installing KDCs
+@subsection Incremental Database Propagation
+
+At some very large sites, dumping and transmitting the database can
+take more time than is desirable for changes to propagate from the
+master KDC to the slave KDCs.  The incremental propagation support
+added in the 1.7 release is intended to address this.
+
+With incremental propagation enabled, all programs on the master KDC
+that change the database also write information about the changes to
+an ``update log'' file, maintained as a circular buffer of a certain
+size.  A process on each slave KDC connects to a service on the master
+KDC (currently implemented in the @code{kadmind} server) and
+periodically requests the changes that have been made since the last
+check.  By default, this check is done every two minutes.  If the
+database has just been modified in the previous several seconds
+(currently the threshold is hard-coded at 10 seconds), the slave will
+not retrieve updates, but instead will pause and try again soon after.
+This reduces the likelihood that incremental update queries will cause
+delays for an administrator trying to make a bunch of changes to the
+database at the same time.
+
+Incremental propagation uses the following entries in the per-realm
+data in the KDC config file:
+
+@table @asis
+@item @code{iprop_enable} (boolean)
+If this is set to @code{true}, then incremental propagation is
+enabled, and (as noted below) normal @code{kprop} propagation is
+disabled.  The default is @code{false}.
+
+@item @code{iprop_master_ulogsize} (integer)
+This indicates the number of entries that should be retained in the
+update log.  The default is 1000; the maximum number is 2500.
+
+@item @code{iprop_slave_poll} (time interval)
+This indicates how often the slave should poll the master KDC for
+changes to the database.  The default is two minutes.
+
+@item @code{iprop_port} (integer)
+This specifies the port number to be used for incremental
+propagation.  This is required in both master and slave configuration
+files.
+
+@item @code{iprop_logfile} (file name)
+This specifies where the update log file for the realm database is to
+be stored.  The default is to use the @code{database_name} entry from
+the @code{realms} section of the config file, with @file{.ulog} appended.
+(NOTE: If @code{database_name} isn't specified in the @code{realms}
+section, perhaps because the LDAP database back end is being used, or
+the file name is specified in the @code{dbmodules} section, then the
+hard-coded default for @code{database_name} is used.  Determination of
+the @code{iprop_logfile} default value will not use values from the
+@code{dbmodules} section.)
+@end table
+
+Both master and slave sides must have principals named
+@code{kiprop/@var{hostname}} (where @var{hostname} is, as usual, the
+lower-case, fully-qualified, canonical name for the host) registered
+and keys stored in the default keytab file (@file{/etc/krb5.keytab}).
+@c XXX: I think the master side, at least, might be able to read the
+@c key out of the database.  Test and document this.
+
+On the master KDC side, the @code{kiprop/@var{hostname}} principal
+must be listed in the @code{kadmind} ACL file @code{kadm5.acl}, and
+given the @code{p} privilege.
+
+On the slave KDC side, @code{kpropd} should be run.  When incremental
+propagation is enabled, it will connect to the @code{kadmind} on the
+master KDC and start requesting updates.
+
+The normal @code{kprop} mechanism is disabled by the incremental
+propagation support.  However, if the slave has been unable to fetch
+changes from the master KDC for too long (network problems, perhaps),
+the log on the master may wrap around and overwrite some of the
+updates that the slave has not yet retrieved.  In this case, the slave
+will instruct the master KDC to dump the current database out to a
+file and invoke a one-time @code{kprop} propagation, with special
+options to also convey the point in the update log at which the slave
+should resume fetching incremental updates.  Thus, all the keytab and
+ACL setup previously described for @code{kprop} propagation is still
+needed.
+
+There are several restrictions in the current implementation:
+
+@itemize
+@item
+Changes to password policy objects are not propagated incrementally.
+Changes to which policy applies to a principal are propagated.
+@item
+The master and slave must be able to initiate TCP connections in both
+directions, without an intervening NAT.
+@item
+If the slave has an IPv6 interface address but needs to accept
+connections over IPv4, the operating system needs ``dual stack'' support
+(i.e. the ability to accept IPv6 and IPv4 connections on a single IPv6
+listener socket).  At this time, all modern Unix-like operating systems
+have dual stack support except OpenBSD.
+@end itemize
+
+@menu
+* Sun/MIT Incremental Propagation Differences::  
+@end menu
+
+@node Sun/MIT Incremental Propagation Differences,  , Incremental Database Propagation, Incremental Database Propagation
+@subsubsection Sun/MIT Incremental Propagation Differences
+
+Sun donated the original code for supporting incremental database
+propagation to MIT.  Some changes have been made in the MIT source
+tree that will be visible to administrators.  (These notes are based
+on Sun's patches.  Changes to Sun's implementation since then may not
+be reflected here.)
+
+The Sun config file support looks for @code{sunw_dbprop_enable},
+@code{sunw_dbprop_master_ulogsize}, and @code{sunw_dbprop_slave_poll}.
+
+The incremental propagation service is implemented as an ONC RPC
+service.  In the Sun implementation, the service is registered with
+@code{rpcbind} (also known as @code{portmapper}) and the client looks
+up the port number to contact.  In the MIT implementation, where
+interaction with some modern versions of @code{rpcbind} doesn't always
+work well, the port number must be specified in the config file on
+both the master and slave sides.
+
+The Sun implementation hard-codes pathnames in @file{/var/krb5} for
+the update log and the per-slave @code{kprop} dump files.  In the MIT
+implementation, the pathname for the update log is specified in the
+config file, and the per-slave dump files are stored in
+@code{@value{ROOTDIR}/var/krb5kdc/slave_datatrans_@var{hostname}}.
+
 @node Installing and Configuring UNIX Client Machines, UNIX Application Servers, Installing KDCs, Installing Kerberos V5
 @section Installing and Configuring UNIX Client Machines
 
@@ -1050,17 +1095,9 @@ installation of the KDCs.
 @node Client Programs, Client Machine Configuration Files, Installing and Configuring UNIX Client Machines, Installing and Configuring UNIX Client Machines
 @subsection Client Programs
 
-The Kerberized client programs are @code{login.krb5}, @code{rlogin},
-@code{telnet}, @code{ftp}, @code{rcp}, @code{rsh}, @code{kinit},
-@code{klist}, @code{kdestroy}, @code{kpasswd}, @code{ksu}, and
-@code{krb524init}.  All of these programs are in the directory
-@code{@value{ROOTDIR}/bin}, except for @code{login.krb5} which is in
-@code{@value{ROOTDIR}/sbin}.
-
-You will probably want to have your users put @code{@value{ROOTDIR}/bin}
-ahead of @code{/bin} and @code{/usr/bin} in their paths, so they will by
-default get the @value{PRODUCT} versions of @code{rlogin},
-@code{telnet}, @code{ftp}, @code{rcp}, and @code{rsh}.
+The Kerberized client programs are @code{kinit}, @code{klist},
+@code{kdestroy}, @code{kpasswd}, and @code{ksu}.  All of these programs
+are in the directory @code{@value{ROOTDIR}/bin}.
 
 @value{COMPANY} recommends that you use @code{login.krb5} in place of
 @code{/bin/login} to give your users a single-sign-on system.  You will
@@ -1068,14 +1105,9 @@ need to make sure your users know to use their Kerberos passwords when
 they log in.
 
 You will also need to educate your users to use the ticket management
-programs @code{kinit},
-@c @code{krb524init}, 
-@code{klist}, @code{kdestroy}, and to use the Kerberos programs
-@c @code{pfrom},
-@code{ksu}, and @code{kpasswd} in place of their non-Kerberos
-counterparts
-@c @code{from}
-@code{su}, @code{passwd}, and @code{rdist}.
+programs @code{kinit}, @code{klist}, @code{kdestroy}, and to use the
+Kerberos programs @code{ksu} and @code{kpasswd} in place of their
+non-Kerberos counterparts @code{su} and @code{passwd}.
 
 @node Client Machine Configuration Files,  , Client Programs, Installing and Configuring UNIX Client Machines
 @subsection Client Machine Configuration Files
@@ -1091,37 +1123,15 @@ to just insert the following code:
 
 @smallexample
 @group
-#
-# Note --- if you are using Kerberos V4 and you either:
-#
-#    (a) haven't converted all your master or slave KDCs to V5, or
-#
-#    (b) are worried about inter-realm interoperability with other KDC's
-#        that are still using V4 
-#
-# you will need to switch the "kerberos" service to port 750 and create a
-# "kerberos-sec" service on port 88.
-#
-kerberos      88/udp    kdc    # Kerberos V5 KDC
-kerberos      88/tcp    kdc    # Kerberos V5 KDC
-klogin        543/tcp          # Kerberos authenticated rlogin
-kshell        544/tcp   cmd    # and remote shell
-kerberos-adm  749/tcp          # Kerberos 5 admin/changepw
-kerberos-adm  749/udp          # Kerberos 5 admin/changepw
-krb5_prop     754/tcp          # Kerberos slave propagation
-@c kpop          1109/tcp         # Pop with Kerberos
-eklogin       2105/tcp         # Kerberos auth. & encrypted rlogin
-krb524        4444/tcp         # Kerberos 5 to 4 ticket translator
+kerberos      @value{DefaultPort}/udp    kdc    # Kerberos V5 KDC
+kerberos      @value{DefaultPort}/tcp    kdc    # Kerberos V5 KDC
+kerberos-adm  @value{DefaultKadmindPort}/tcp          # Kerberos 5 admin/changepw
+kerberos-adm  @value{DefaultKadmindPort}/udp          # Kerberos 5 admin/changepw
+krb5_prop     @value{DefaultKrbPropPort}/tcp          # Kerberos slave propagation
+krb524        @value{DefaultKrb524Port}/tcp         # Kerberos 5 to 4 ticket translator
 @end group
 @end smallexample
 
-@noindent As described in the comments in the above code, if your master
-KDC or any of your slave KDCs is running Kerberos V4, (or if you will be
-authenticating to any Kerberos V4 KDCs in another realm) you will need
-to switch the port number for @code{kerberos} to 750 and create a
-@code{kerberos-sec} service (tcp and udp) on port 88, so the Kerberos
-V4 KDC(s) will continue to work properly.
-
 @menu
 * Mac OS X Configuration::      
 @end menu
@@ -1224,80 +1234,14 @@ If you have @value{PRODUCT} installed on all of your client machines,
 advantage of the security that Kerberos authentication affords.
 However, if you have some clients that do not have @value{PRODUCT}
 installed, you can run an insecure server, and still take advantage of
-@value{PRODUCT}'s single sign-on on capability.
+@value{PRODUCT}'s single sign-on capability.
 
 @menu
-* Server Programs::             
-* Server Configuration Files::  
 * The Keytab File::             
 * Some Advice about Secure Hosts::  
 @end menu
 
-@node Server Programs, Server Configuration Files, UNIX Application Servers, UNIX Application Servers
-@subsection Server Programs
-
-Just as @value{PRODUCT} provided its own Kerberos-enhanced versions of
-client UNIX network programs, @value{PRODUCT} also provides
-Kerberos-enhanced versions of server UNIX network daemons.  These are
-@code{ftpd}, @code{klogind}, @code{kshd}, and @code{telnetd}.
-@c @code{popper}, 
-These programs are installed in the directory
-@code{@value{ROOTDIR}/sbin}.  You may want to add this directory to
-root's path.
-
-@node Server Configuration Files, The Keytab File, Server Programs, UNIX Application Servers
-@subsection Server Configuration Files
-
-For a @emph{secure} server, make the following changes to
-@code{/etc/inetd.conf}:
-
-Find and comment out any lines for the services @code{ftp},
-@code{telnet}, @code{shell}, @code{login}, and @code{exec}.
-
-@need 1800
-Add the following lines.  (Note:  each line beginning with @result{} is
-a continuation of the previous line.)
-
-@smallexample
-@group
-klogin  stream  tcp  nowait  root  @value{ROOTDIR}/sbin/klogind
-@result{} klogind -k -c
-eklogin stream  tcp  nowait  root  @value{ROOTDIR}/sbin/klogind
-@result{} klogind -k -c -e
-kshell  stream  tcp  nowait  root  @value{ROOTDIR}/sbin/kshd
-@result{} kshd -k -c -A
-ftp     stream  tcp  nowait  root  @value{ROOTDIR}/sbin/ftpd
-@result{} ftpd -a
-telnet  stream  tcp  nowait  root  @value{ROOTDIR}/sbin/telnetd
-@result{} telnetd -a valid
-@end group
-@end smallexample
-
-For an @emph{insecure} server, make the following changes instead to
-@code{/etc/inetd.conf}:
-
-@need 1800
-Find and comment out any lines for the services @code{ftp} and
-@code{telnet}.
-
-Add the following lines.  (Note:  each line beginning with @result{} is
-a continuation of the previous line.)
-@smallexample
-@group
-klogin  stream  tcp  nowait  root  @value{ROOTDIR}/sbin/klogind
-@result{} klogind -k -c
-eklogin stream  tcp  nowait  root  @value{ROOTDIR}/sbin/klogind
-@result{} klogind -k -c -e
-kshell  stream  tcp  nowait  root  @value{ROOTDIR}/sbin/kshd
-@result{} kshd -k -c -A
-ftp     stream  tcp  nowait  root  @value{ROOTDIR}/sbin/ftpd
-@result{} ftpd
-telnet  stream  tcp  nowait  root  @value{ROOTDIR}/sbin/telnetd
-@result{} telnetd -a none
-@end group
-@end smallexample
-
-@node The Keytab File, Some Advice about Secure Hosts, Server Configuration Files, UNIX Application Servers
+@node The Keytab File, Some Advice about Secure Hosts, UNIX Application Servers, UNIX Application Servers
 @subsection The Keytab File
 
 All Kerberos server machines need a @dfn{keytab} file, called
@@ -1347,9 +1291,7 @@ kadmin5:} quit
 
 If you generate the keytab file on another host, you need to get a copy
 of the keytab file onto the destination host (@code{trillium}, in the
-above example) without sending it unencrypted over the network.  If you
-have installed the @value{PRODUCT} client programs, you can use
-encrypted @code{rcp}.
+above example) without sending it unencrypted over the network.
 
 @node Some Advice about Secure Hosts,  , The Keytab File, UNIX Application Servers
 @subsection Some Advice about Secure Hosts
@@ -1361,21 +1303,12 @@ to try to include an exhaustive list of countermeasures for every
 possible attack, but it is worth noting some of the larger holes and how
 to close them.
 
-As stated earlier in this section, @value{COMPANY} recommends that on a
-secure host, you disable the standard @code{ftp}, @code{login},
-@code{telnet}, @code{shell}, and @code{exec} services in
-@code{/etc/inetd.conf}.  We also recommend that secure hosts have an empty
-@code{/etc/hosts.equiv} file and that there not be a @code{.rhosts} file
-in @code{root}'s home directory.  You can grant Kerberos-authenticated
-root access to specific Kerberos principals by placing those principals
-in the file @code{.k5login} in root's home directory.
-
 We recommend that backups of secure machines exclude the keytab file
 (@code{/etc/krb5.keytab}).  If this is not possible, the backups should
 at least be done locally, rather than over a network, and the backup
 tapes should be physically secured.
 
-Finally, the keytab file and any programs run by root, including the
+The keytab file and any programs run by root, including the
 @value{PRODUCT} binaries, should be kept on local disk.  The keytab file
 should be readable only by root.
 
@@ -1384,10 +1317,12 @@ should be readable only by root.
 
 If you already have an existing Kerberos database that you created with
 a prior release of Kerberos 5, you can upgrade it to work with the
-current release with the @code{kdb5_util} command.  It is only necessary
-to perform this dump/undump procedure if you were running a krb5-1.0.x
-KDC and are migrating to a krb5-1.1.x or newer KDC.  The process for
-upgrading a Master KDC involves the following steps:
+current release with the @code{kdb5_util} command.  It is only
+necessary to perform this dump/undump procedure if you were running a
+krb5-1.0.x KDC and are migrating to a krb5-1.1.x or newer KDC or if you
+were running a krb5-1.1.x KDC and are migrating to a krb5-1.2.x or newer
+KDC.  The process for upgrading a Master KDC involves the following
+steps:
 
 @enumerate
 
@@ -1437,18 +1372,18 @@ Slave KDC, install the new server binaries, reload the most recent slave
 dump file, and re-start the server processes.
 
 @menu
-* Upgrading to Triple-DES Encryption Keys::  
+* Upgrading to Triple-DES and RC4 Encryption Keys::  
 @end menu
 
-@node Upgrading to Triple-DES Encryption Keys,  , Upgrading Existing Kerberos V5 Installations, Upgrading Existing Kerberos V5 Installations
+@node Upgrading to Triple-DES and RC4 Encryption Keys,  , Upgrading Existing Kerberos V5 Installations, Upgrading Existing Kerberos V5 Installations
 @section Upgrading to Triple-DES Encryption Keys
 
-Beginning with the 1.2 release from MIT, Kerberos includes a stronger
-encryption algorithm called ``triple DES'' -- essentially, three
-applications of the basic DES encryption algorithm, greatly increasing
-the resistance to a brute-force search for the key by an attacker.  This
-algorithm is more secure, but encryption is much slower.  We expect to
-add other, faster encryption algorithms at some point in the future.
+Beginning with the 1.2 release from @value{COMPANY}, Kerberos includes
+a stronger encryption algorithm called ``triple DES'' -- essentially,
+three applications of the basic DES encryption algorithm, greatly
+increasing the resistance to a brute-force search for the key by an
+attacker.  This algorithm is more secure, but encryption is much
+slower.
 
 Release 1.1 had some support for triple-DES service keys, but with
 release 1.2 we have added support for user keys and session keys as
@@ -1456,29 +1391,38 @@ well.  Release 1.0 had very little support for multiple cryptosystems,
 and some of that software may not function properly in an environment
 using triple-DES as well as plain DES.
 
-Because of the way the MIT Kerberos database is structured, the KDC will
-assume that a service supports only those encryption types for which
-keys are found in the database.  Thus, if a service has only a
+In the 1.3 release from @value{COMPANY}, Kerberos also includes the RC4
+encryption alogorithm, a stream cipher symmetric key algorithm
+developed in 1987 by Ronald Rivest at RSA Data Security.  Please note
+that RC4 is not part of the IETF standard.
+
+Because of the way the MIT Kerberos database is structured, the KDC
+will assume that a service supports only those encryption types for
+which keys are found in the database.  Thus, if a service has only a
 single-DES key in the database, the KDC will not issue tickets for that
-service that use triple-DES session keys; it will instead issue only
-single-DES session keys, even if other services are already capable of
-using triple-DES.  So if you make sure your application server software
-is updated before adding a triple-DES key for the service, clients
-should be able to talk to services at all times during the updating
-process.
+service that use triple-DES or RC4 session keys; it will instead issue
+only single-DES session keys, even if other services are already
+capable of using triple-DES or RC4.  So if you make sure your
+application server software is updated before adding a triple-DES or
+RC4 key for the service, clients should be able to talk to services at
+all times during the updating process.
 
 Normally, the listed @code{supported_enctypes} in @code{kdc.conf} are
 all used when a new key is generated.  You can control this with
 command-line flags to @code{kadmin} and @code{kadmin.local}.  You may
-want to exclude triple-DES by default until you have updated a lot of
-your application servers, and then change the default to include
-triple-DES.  We recommend that you always include @code{des-cbc-crc} in
-the default list.
+want to exclude triple-DES and RC4 by default until you have updated a
+lot of your application servers, and then change the default to include
+triple-DES and RC4.  We recommend that you always include
+@code{des-cbc-crc} in the default list.
 
-@node Bug Reports for Kerberos V5,  , Upgrading Existing Kerberos V5 Installations, Top
+@node Bug Reports for Kerberos V5, Copyright, Upgrading Existing Kerberos V5 Installations, Top
 @chapter Bug Reports for @value{PRODUCT}
 
 @include send-pr.texinfo
 
+@node Copyright,  , Bug Reports for Kerberos V5, Top
+@appendix Copyright
+@include copyright.texinfo
+
 @contents
 @bye