[6521] in Kerberos

home help back first fref pref prev next nref lref last post

Re: Request for input: proposed krshd and krlogind option reorganization

daemon@ATHENA.MIT.EDU (Sam Hartman)
Tue Jan 23 17:16:55 1996

To: "Barry Jaspan" <bjaspan@bbnplanet.com>
Cc: hartmans@MIT.EDU (Sam Hartman), kerberos@MIT.EDU
From: hartmans@MIT.EDU (Sam Hartman)
Date: 23 Jan 1996 16:54:59 -0500
In-Reply-To: "Barry Jaspan"'s message of Tue, 23 Jan 96 11:59:03 EST

>>>>> "Barry" == Barry Jaspan <bjaspan@bbnplanet.com> writes:

    Barry> Sam,

    Barry> Thanks for tackling this messy collection of issues.

    Barry> 	   First, there is serious discussion of dropping
    Barry> support for .rhosts files in krlogind and
    Barry> krshd... [proposal to] remove support for requiring that a
    Barry> user present both valid Kerberos authentication and rhosts
    Barry> authentication in the same session (-K -R under the current
    Barry> options).

    Barry> I suggest removing all support .rhosts entirely, including
    Barry> the -r option you propose below.  There is no reason to
    Barry> provide .rhosts functionality in a Kerberos rlogind.  If a
    Barry> site wishes to support Kerberos authentication and rhosts
    Barry> authentication (which is pretty silly), it can simply run
    Barry> their vendor's rlogind on the standard port and krlogind on
    Barry> the klogin port.

	The rhosts support in krlogind is somewhat different than in
the vendor rlogind.  However, I think it's *more* broken than the
normal krlogind so I probably will punt it at the first sign of
difficulty unless someone gives an example of when it is useful.


    Barry> 	   So, we propose the following options to select
    Barry> encryption and authentication for krlogind and krshd:

    Barry>    - -e: enable encryption on krlogind, require it on krshd

    Barry> Why the difference between krlogind and krshd?  That will
    Barry> be confusing.  If you want one to allow and another to
    Barry> insist, use something like -e and -E.

	This is more of a semantic difference than an actual
difference in function.  The eklogind runs on a different port than
the normal klogind, and the krlogind protocol doesn't specify whether
the client wants encryption or not; both the server and client have to
be told at startup time whether to enable encryption or not.  However,
the krshd sends information about whether to enable encryption
in-band, so it is always enabled, and the client chooses to activate
it at startup time.

	In other words, it won't be confusing.  The -e option to
krlogind tells it that all clients that connect to this port will be
encrypted clients.  The -e option to krshd tells krshd that it should
refuse to connect with any  non-encrypted clients that connect to it.


    Barry>    - -r: Accept .rhosts authentication

    Barry> IMHO, punt entirely, as described above.

    Barry> The -4, -5, and -k options sound like a reasonable
    Barry> compromise to me.  I'd prefer -k4 and -k5, but of course
    Barry> that won't work with getopt (well, you could make it work
    Barry> but it would be ugly).  Of course, who says we have to keep
    Barry> using getopt?

    Barry> One question: What is the default authentication mode(s)
    Barry> that is accepted if no options are supplied?  I recommend
    Barry> either none (the program just exits after sysloging a
    Barry> warning and also displaying it to the krlogin client) or
    Barry> insisting on krb5 with encryption (the most secure
    Barry> alternative).

	I believe the default should be none.

    Barry>    (People who use the ability of krlogind and krshd to
    Barry> examine their name to find flags are more likely to wish to
    Barry> name programs klogind than 54logind.)

    Barry> I *STRONGLY* suggest ditching this "feature" of
    Barry> krlogind/krshd as well.  Most people don't even know it
    Barry> exists, and it causes all sorts of problems (in fact, I bet
    Barry> a large fraction of readers do not even know what you and I
    Barry> are talking about in this paragraph and response).  For
    Barry> example, what does invoking the program as

    Barry> 	krlogind -5

    Barry> mean?  Under your propose, it would accept krb4
    Barry> authentication, but that is highly not obvious by
    Barry> appearance.  You could argue that if there are any
    Barry> command-line options that the name-based options are
    Barry> disabled, but again that is very confusing: what happens
    Barry> when someone wants to use name-based options for
    Barry> authentication but also specifies some
    Barry> authentication-unrelated option on the command line?
    Barry> Chaos, that's what.  Name-based options were a bad idea,
    Barry> they are totally non-standard, and they do not buy
    Barry> anything.  Get rid of them.

	Unfortunately, some operating systems (Remember /etc/servers
on SunOS 3?) do not allow you to specify command line arguments.  The
way our code currently works is to ignore the name of the program if
any arguments are specified.  I.E. in your example, it would be a
non-encrypted krb5 logind.  (I'm considering dropping the handling of
the program name even with this portability problem, but haven't
really come to a firm decision yet.)

    Barry> While I'm on the topic of improving krlogin et al, I also
    Barry> strongly feel that the krlogin, krsh, and krcp clients
    Barry> SHOULD NOT fall back to UCB versions if the Kerberos
    Barry> versions fail.  The reasons are simple:

    Barry> (1) It is a security hole.

	So is using non-encrypted clients.  (There is no fallback if
encryption is enabled.)

    Barry> (2) If a site really wants to have the fallback, it can be
    Barry> implemented with a shell script and be more portable and
    Barry> reliable to boot.  If removing this functionality from the
    Barry> krb5 dist really disturbs you, you can even write the shell
    Barry> script yourself and provided it.  But it should not be done
    Barry> in the C programs.

	This sounds reasonable, and it also sounds like a good option
for the Athena environment, where we probably want a fallback to krb4
before ucb.  (I'm not sure I'll have time to implement it in this
pass, but long term, removing the fallback sounds reasonable.)

    Barry> IMHO, of course. :-)

    Barry> Barry



--Sam

P.S. Thanks for your input.


home help back first fref pref prev next nref lref last post