[comp.protocols.kerberos] Questions on Kerberos usage

cole@CS.WISC.EDU (Bruce Cole) (09/08/89)

     I would like to replace Unix authentication with Kerberos authentication
on the Unix machines in our department.  Unfortunately, I have run into
some technical problems:

     Our department has an existing user community of thousands of users.  How
can I get all of these users added to the Kerberos master database?  The Athena
Technical Plan mentions a hack whereby users set their passwords using a
public account.  This does not seem practical for an existing user community
(with existing files to be compromised).

     We sometimes run software in unattended modes which distribute files
to remote machines.  How can I use kerberos to authenticate such file 
distributions?

     Can something like rkinit be written that does not require a user to
retype their password?  It seems to me that possessing Kerberos credentials
to login to a remote host as some user should be sufficient to obtain a ticket
granting ticket for that user on the remote host.

jis@ATHENA.MIT.EDU (Jeffrey I. Schiller) (09/10/89)

	When we first started converting existing users here at MIT
from Unix password authentication to Kerberos authentication we did so
over a transition period. In this period we installed a hacked up
version of the "passwd" command that would change your password in the
local password file *and* register you with the kerberos database. A
special server was run on the kerberos database server system that
accepted requests on a privileged port (barf ech!). There were two
interesting cases:

1) User changing his password for which no kerberos entry existed.

2) User changing his password for which a kerberos entry already
existed.

Case [2] was handled by getting tickets for the user using the "old
password." The request sent to kerberos with the new password was of
course encrypted. This use of the passwd program is secure (provided
the old password isn't compromised). This is essentially the password
changing program in use today.

Case [1] was handled by the password program, upon failing to get
tickets for the user in question, would get tickets for the user named
"default.changepw." This user had a constant password hardcoded into
the password changing program. Default.changepw had access (via the
special hacked server) to add new people to the database, but could
not change the password of an existing user.

	We made noise publicly asking people to change their passwords
(even if they only changed it to the same string!) so that our
database would get populated. At some point (more then a year) we
cutover our environment to depend on Kerberos authentication.  At that
point people who didn't change their password were not able to login
until they saw a system administrator and got their Kerberos password
established.

	Note: People in this category still surface!

			-Jeff

billdo@IFS.UMICH.EDU (09/14/89)

    Assuming you have access to the login (and xdm for you X window folk)
source, an alternative to what Jeff mentioned is to modify login instead.

    Login would have to handle the two cases that Jeff mentioned:

	1.  Users logging in who are valid users but don't yet have a
		Kerberos entry.

	2.  Users logging in who are both valid users and have a
		Kerberos entry.

    and of course, it must also correctly handle that other case,

	3.  Users logging in who are not valid users.  Forcibly eject.

    so you'd expect the code to read something like (this code assumes
    that Kerberos will be replacing your current authentication method,
    otherwise you'd always check the password by both methods...):

	if Kerberos Entry doesn't already exist for foo
		if current mechanism says invalid password
			sorry.  go away.   exit.
		else
			add new user to Kerberos database with given password
				(using Jeff's "default.changepw" principal)

	if Kerberos says invalid password
		sorry.  go away.   exit.

	login, authenticating via Kerberos


    The disadvantage is that you'd have to modify the login program
(a setuid root program at that).  The advantage is that users would
automatically be converted over to the new system the next time they
logged in and from then on would be authenticated via Kerberos.  No
mess, no fuss, no change in procedure.  After doing this for a couple
of months or so, you could replace the "add new user" portion with
"sorry.  see system administrator for Kerberos password".

    Another problem of course is that someone could suck the hard-coded
"password" out of the login program and use it to add their own account.
Depending on what other protections exist, this may or may not be a
problem.  You could put it in a file that was only readable by root,
but then again, that wouldn't stop to many users these days...

Bill Doster		billdo@ifs.umich.edu
IFS Project		(313) 763-0587
Univ. of Mich.