\input texinfo @c -*-texinfo-*-
@c Note: the above texinfo file must include the "doubleleftarrow"
@c definitions added by jcb.
@c %**start of header
@c guide
@setfilename krb425.info
@settitle Upgrading to Kerberos V5 from Kerberos V4
@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
@c %**end of header

@paragraphindent 0
@iftex
@parskip 6pt plus 6pt
@end iftex

@include definitions.texinfo
@set EDITION 1.0
@set UPDATED October 8, 1996

@finalout                               @c don't print black warning boxes

@titlepage
@title Upgrading to @value{PRODUCT} from Kerberos V4
@subtitle Release:  @value{RELEASE}
@subtitle Document Edition:  @value{EDITION}
@subtitle Last updated:  @value{UPDATED}
@author @value{COMPANY}

@page
@vskip 0pt plus 1filll

@include copyright.texinfo
@end titlepage

@node Top, Copyright, (dir), (dir)

@ifinfo
This document describes how to convert to @value{PRODUCT} from Kerberos V4.

@menu
* Copyright::                   
* Introduction::                
* Configuration Files::         
* Upgrading KDCs::              
* Upgrading Application Servers::  
* Upgrading Client machines::   
* Firewall Considerations::     
@end menu

@node Copyright, Introduction, Top, Top
@unnumbered Copyright
@include copyright.texinfo

@end ifinfo

@node Introduction, Configuration Files, Copyright, Top
@chapter Introduction

As with most software upgrades, @value{PRODUCT} is generally backward
compatible but not necessarily forward compatible.  The @value{PRODUCT}
daemons can interoperate with Kerberos V4 clients, but most of the
Kerberos V4 daemons can not interoperate with Kerberos V5 clients.  This
suggests the following strategy for performing the upgrade:

@enumerate
@item
@strong{Upgrade your KDCs.}  This is must be done first, so that
interactions with the Kerberos database, whether by Kerberos V5 clients
or by Kerberos V4 clients, will succeed.

@item
@strong{Upgrade your servers.}  This must be done before upgrading
client machines, so that the servers are able to respond to both
Kerberos V5 and Kerberos V4 queries.

@item
@strong{Upgrade your client machines.}  Do this only after your KDCs and
application servers are upgraded, so that all of your Kerberos V5
clients will be talking to Kerberos V5 daemons.
@end enumerate

@node Configuration Files, Upgrading KDCs, Introduction, Top
@chapter Configuration Files

The Kerberos @code{krb5.conf} and KDC @code{kdc.conf} configuration
files allow additional tags for Kerberos V4 compatibility.

@menu
* krb5.conf::                   
* kdc.conf::                    
@end menu

@node krb5.conf, kdc.conf, Configuration Files, Configuration Files
@section krb5.conf

If you used the defaults, both when you installed Kerberos V4 and when
you installed @value{PRODUCT}, you should not need to include any of
these tags.  However, some or all of them may be necessary for
nonstandard installations.

@menu
* libdefaults::                 
* realms (krb5.conf)::          
@end menu

@node libdefaults, realms (krb5.conf), krb5.conf, krb5.conf
@subsection [libdefaults]

In the [libdefaults] section, the following additional tags may be used:

@table @b
@item krb4_srvtab
Specifies the location of the Kerberos V4 srvtab file.  Default is
@code{/etc/srvtab}.

@item krb4_config
Specifies the location of the Kerberos V4 configuration file.  Default
is @code{/etc/krb.conf}.

@item krb4_realms
Specifies the location of the Kerberos V4 domain/realm translation
file.  Default is @code{/etc/krb.realms}.
@end table

@node realms (krb5.conf),  , libdefaults, krb5.conf
@subsection [realms]

In the [realms] section, the following Kerberos V4 tags may be used:
@table @b
@itemx default_domain
Identifies the default domain for hosts in this realm.  This is needed
for translating V4 principal names (which do not contain a domain name)
to V5 principal names.  The default is your Kerberos realm name,
converted to lower case.

@itemx v4_instance_convert
This subsection allows the administrator to configure exceptions to the
default_domain mapping rule.  It contains V4 instances (tag name) which
should be translated to some specific hostname (tag value) as the second
component in a Kerberos V5 principal name.

@itemx v4_realm
This relation allows the administrator to configure a different
realm name to be used when converting V5 principals to V4
ones.  This should only be used when running separate V4 and V5
realms, with some external means of password sychronization
between the realms.

@end table

@node kdc.conf,  , krb5.conf, Configuration Files
@section kdc.conf

Because Kerberos V4 requires a different type of salt for the encryption
type, you will need to change the @code{supported_enctypes} line in the
[realms] section to:

@smallexample
supported_enctypes = des-cbc-crc:normal des-cbc-crc:v4
@end smallexample

This is the only change needed to the @code{kdc.conf} file.

@node Upgrading KDCs, Upgrading Application Servers, Configuration Files, Top
@chapter Upgrading KDCs

To convert your KDCs from Kerberos V4 to @value{PRODUCT}, do the
following:

@enumerate
@item
Install @value{PRODUCT} on each KDC, according to the instructions in
the @value{PRODUCT} Installation Guide, up to the point where it tells
you to create the database.

@item
Find the @code{kadmind} (V4) daemon process on the master KDC and kill
it.  This will prevent changes to the Kerberos database while you
convert the database to the new Kerberos V5 format.

@item
Create a dump of the V4 database in the directory where your V5 database
will reside by issuing the command:

@smallexample
% kdb_util dump @value{ROOTDIR}/var/krb5kdc/v4-dump
@end smallexample

@item
Load the V4 dump into a Kerberos V5 database, by issuing the command:

@smallexample
% kdb5_util load_v4 v4-dump
@end smallexample

@item
Create a Kerberos V5 stash file, if desired, by issuing the command:

@smallexample
% kdb5_util stash
@end smallexample

@item
Proceed with the rest of the @value{PRODUCT} installation as described
in the @value{PRODUCT} Installation Guide.  When you get to the section
that tells you to start the @code{krb5kdc} and @code{kadmind} daemons,
first find and kill the Kerberos V4 @code{kerberos} daemon on each of
the KDCs.  Then start the @code{krb5kdc} and @code{kadmind} daemons as
directed.  Finally, start the Kerberos V5 to V4 ticket translator
daemon, @code{krb524d}, by issuing the command:

@smallexample
% @value{ROOTDIR}/sbin/krb524d -m > /dev/null &
@end smallexample

If you have a stash file and you start the @code{krb5kdc} and
@code{kadmind} daemons at boot time, you should add the above line to
your @code{/etc/rc} (or @code{/etc/rc.local}) file on each KDC.
@end enumerate

@node Upgrading Application Servers, Upgrading Client machines, Upgrading KDCs, Top
@chapter Upgrading Application Servers

Install @value{PRODUCT} on each application server, according to the
instructions in the @value{PRODUCT} Installation Guide, with the
following exceptions:

@itemize @bullet
@item
In the file @code{/etc/services}, add or edit the lines described in the
@value{PRODUCT} Installation Guide, with the following exception:

in place of:

@smallexample
@group
kerberos      88/udp    kdc    # Kerberos V5 KDC
kerberos      88/tcp    kdc    # Kerberos V5 KDC
@end group
@end smallexample

@noindent
add instead:

@smallexample
@group
kerberos-sec  88/udp    kdc    # Kerberos V5 KDC
kerberos-sec  88/tcp    kdc    # Kerberos V5 KDC
@end group
@end smallexample

@item
In the file @code{/etc/inetd.conf}, for a @emph{secure} server, instead
of making the changes described in the @value{PRODUCT} Installation
Guide, do the following:

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
@result{}    @value{ROOTDIR}/sbin/klogind  klogind -k -c
eklogin stream  tcp  nowait  root
n@result{}   @value{ROOTDIR}/sbin/klogind  klogind -k -c -e
kshell  stream  tcp  nowait  root
@result{}    @value{ROOTDIR}/sbin/kshd  kshd -k -c -A
ftp     stream  tcp  nowait  root
@result{}    @value{ROOTDIR}/sbin/ftpd  ftpd -a
telnet  stream  tcp  nowait  root
@result{}    @value{ROOTDIR}/sbin/telnetd  telnetd -a valid
@end group
@end smallexample

@ifset CYGNUS
@strong{N.B.}:  As noted in the @value{PRODUCT} Installation Guide, if
you have some clients running older versions of Kerberos V5 (beta
6@footnote{@value{PRODUCT} is based on the MIT beta 7 release.} or
earlier), checksums were done differently in those versions, which will
cause authentication to fail.  To get around this problem, have the
@code{klogind} and @code{kshd} daemons ignore checksums, by replacing
each @code{-c} flag above with @code{-i}.
@end ifset
@ifclear CYGNUS
@strong{N.B.}: As noted in the @value{PRODUCT} Installation Guide, if
you have some clients running older versions of Kerberos V5 (beta 6 or
earlier), checksums were done differently in those versions, which will
cause authentication to fail.  To get around this problem, have the
@code{klogind} and @code{kshd} daemons ignore checksums, by replacing
each @code{-c} flag above with @code{-i}.
@end ifclear

For an @emph{insecure} server, make the changes described in the
@value{PRODUCT} Installation Guide.

When you make changes to @code{inetd.conf}, remember to @code{kill -HUP}
the @code{inetd} process to cause the changes to take effect.

@item
Convert your Kerberos V4 srvtab file to Kerberos V5 keytab file as
follows:

@smallexample
@group
@b{#} @value{ROOTDIR}/sbin/ktutil
@b{ktutil:}  rst /etc/krb-srvtab
@b{ktutil:}  wkt /etc/krb5.keytab
@b{ktutil:}  q
@b{#}
@end group
@end smallexample
@end itemize

@node Upgrading Client machines, Firewall Considerations, Upgrading Application Servers, Top
@chapter Upgrading Client machines

Install @value{PRODUCT} on each client machine, according to the
instructions in the @value{PRODUCT} Installation Guide.

Tell your users to add the appropriate directory to their paths.  On
UNIX machines, this will probably be @code{@value{BINDIR}}.

Note that if you upgrade your client machines before all of your
application servers are upgraded, your users will need to use the
Kerberos V4 programs to connect to application servers that are still
running Kerberos V4.  (The one exception is the UNIX version of
@value{PRODUCT} telnet, which can connect to a Kerberos V4 and Kerberos
V5 application servers.)  Users can use either the Kerberos V4 or
@value{PRODUCT} programs to connect to Kerberos V5 servers.

@node Firewall Considerations,  , Upgrading Client machines, Top
@chapter Firewall Considerations

@value{PRODUCT} uses port 88, which is the port assigned by the IETF,
for KDC requests.  Kerberos V4 used port 750.  If your users will need
to get to any KDCs outside your firewall, you will need to allow TCP and
UDP requests on port 88 for your users to get to off-site Kerberos V5
KDCs, and on port 750 for your users to get to off-site Kerberos V4
KDCs.

@contents
@c second page break makes sure right-left page alignment works right
@c with a one-page toc, even though we don't have setchapternewpage odd.
@c end of texinfo file
@bye
