[news.software.nntp] NNTP authentication

nagel@beaver.ics.uci.edu (Mark Nagel) (05/02/89)

This has been brought up before, but some people here have recently
re-asked the question, "Why can't we make certain groups readable only
be certain people?" again.  Currently, NNTP has no built-in
authentication system other than host authentication.  How difficult
would it be to modify things such that any potential client must run a
local program that connects to the remote NNTP server over a trusted
port?  Then, if a connection comes in from a non-trusted port, the
server could just deny read access to *any* group that has such access
restrictions.  However, if the connection comes in trusted, then the
uid, etc. information transmitted would be known to be secure.
Clearly, this could be broken by a user with a PC and root access, but
for the intended purposes (local groups with uuid or gid based
restrictions), it should suffice.  Has anyone ever done anything like
this?  Any thoughts?

Mark Nagel @ UC Irvine, Department of Information and Computer Science
                            +----------------------------------------+
ARPA: nagel@ics.uci.edu     | If you improve something long enough   |
UUCP: ucbvax!ucivax!nagel   | eventually you will throw it away.     |

rsalz@bbn.com (Rich Salz) (05/02/89)

In <13084@paris.ics.uci.edu> nagel@beaver.ics.uci.edu (Mark Nagel) writes:
>  How difficult
>would it be to modify things such that any potential client must run a
>local program that connects to the remote NNTP server over a trusted
>port?

As you point out, this could be broken by anyone with a PC and/or
root access.  Note that there are NNTP clients for several systems --
Symbolics, PC, VMS, Twenex -- that have absolutely no concept of the
BSD "trusted port" invention.

The other problem with this is that it requires your server to know
the UID's of all readers, and that doesn't always make sense.  And
given the heterogeneity, you can't use things like the Unix UID/GID
anyhow.

I think one easy way to do this is to add an "SGROUP" command which
is like the GROUP command but takes a password.  A longer range solution
might be, sigh, Kerberos.
	/r$
-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.

fair@Apple.COM (Erik E. Fair) (05/02/89)

Kerberos looks the most promising to me (mostly because there isn't
anything else out there that I can just grab code for).

	Erik E. Fair	apple!fair	fair@apple.com

jv@mh.nl (Johan Vromans) (05/03/89)

In article <13084@paris.ics.uci.edu> nagel@beaver.ics.uci.edu (Mark Nagel) writes:
>  This has been brought up before, but some people here have recently
>  re-asked the question, "Why can't we make certain groups readable only
>  be certain people?" again.  [Etc...]

Having to deal with the same problem, I have hacked nntp 1.5 with the
following extensions:

 - the client sends a "HELO <username>" command upon connection, and
   uses the result instead of the initial "Ready" message if it's 250
   or 251.
 - the server accepts such a "HELO <username>" command, and can use it
   to delimit access. Posting access is denied by sending "251"
   instead of "250" (if I remember well).
 - the newsgroup name matching algorith has been made more restrictive,
   such that "group-x" means "group-x" only. Extensions could be made
   to add full 'rnews'-style newsgroups-lists.

Of course, this method depends on the co-operation of the client. Any
user who can write his own nntp-access routines can bypass the
user-based authorization (not the hostname-based authorization).
Currently, if no "HELO" command is sent, default access for the host
is allowed.

Writing the hostname/username in the nntp logfile gives usefull
information about the users who are reading news using nntp.

Of course this is a hack. It works for me, but it is not fool-proof
not completed.

If anyone wants to take these modifications as a start, I'll be glad
to send them.

	Johan

--
Johan Vromans			 jv@mh.nl via european backbone (mcvax)
Multihouse Automatisering bv		uucp: ..!{mcvax,hp4nl}!mh.nl!jv
Doesburgweg 7					  phone: +31 1820 62944
2803 PL Gouda - The Netherlands			    fax: +31 1820 62500

eckert@immd4.informatik.uni-erlangen.de (Toerless Eckert) (05/03/89)

In article <13084@paris.ics.uci.edu>, nagel@beaver.ics.uci.edu (Mark Nagel) writes:
...
> port?  Then, if a connection comes in from a non-trusted port, the
> server could just deny read access to *any* group that has such access
> restrictions.  However, if the connection comes in trusted, then the
> uid, etc. information transmitted would be known to be secure.
> Clearly, this could be broken by a user with a PC and root access, but
> for the intended purposes (local groups with uuid or gid based
> restrictions), it should suffice.  Has anyone ever done anything like
> this?  Any thoughts?

Changing nntp code to look for privileged ports is not that difficult.
I have changed my copy of the 1.5 nntp code to do this things, but not
for the reason to disallow anyone reading news, but only to prevent
forgery of articles. It was only necessary to change the nntp code
to achieve that. My nntp inews now has a root s-bit, and will
verify the contents of the "from": and "sender:" header fields, before
passing the message on to the nntp server (and the nntp server only accepts
"post" or "ihave" from privileged ports, if that feature is enabled).

If you want a uid/gid based authentication, you will have to change
the news reader too, and if you want to administrate the
whole from the site fo the nntp server, you will have to change
the nntp protocol also. There are too many different news reader by now,
to change them all for that (you name the best news reader ?).

If you do not change the nntp protocol, than you have to chance
against PC's.

If you really want to handle groups that restrictive, don't use
nntp, don't even use news, use notes or mailing lists. Handling news
restrictive contradicts the usenet etiquette.

				Toerless Eckert
				(eckert@immd4.informatik.uni-erlangen.de)

amanda@intercon.UUCP (Amanda Walker) (05/04/89)

In article <JV.89May2143345@mhres.mh.nl>, jv@mh.nl (Johan Vromans) writes:
>Of course, this method depends on the co-operation of the client. Any
>user who can write his own nntp-access routines can bypass the
>user-based authorization (not the hostname-based authorization).
>Currently, if no "HELO" command is sent, default access for the host
>is allowed.

The users don't even have to write a program under most operating
systems; how about:

    telnet hostname 119
    200 ...
    HELO root

It does keep people from reading some groups accidentally with rrn,
I suppose, but that's about it.  I wouldn't consider it a security
measure by any means.

--
Amanda Walker
InterCon Systems Corporation
amanda@intercon.UUCP / intercon!amanda@uunet.uu.net

david@ms.uky.edu (David Herron -- One of the vertebrae) (05/04/89)

In article <13084@paris.ics.uci.edu> nagel@beaver.ics.uci.edu (Mark Nagel) writes:
>port?  Then, if a connection comes in from a non-trusted port, the
>server could just deny read access to *any* group that has such access
>restrictions.  However, if the connection comes in trusted, then the

What if the connection is coming from a PC-Clone with the right
hardware & software?  (namely, *ANY* TCP/IP software and an interface,
not necessarily an ether card)

Boys and Girls ... the Bezerkeley concept of priviledged ports is
merely a Unixism and is not enforced elsewhere.
-- 
<- David Herron; an MMDF guy                              <david@ms.uky.edu>
<- ska: David le casse\*'      {rutgers,uunet}!ukma!david, david@UKMA.BITNET
<- By all accounts, Cyprus (or was it Crete?) was covered with trees at one time
<- 		-- Until they discovered Bronze

brian@ucsd.EDU (Brian Kantor) (05/04/89)

I think Phil, Erik, and I are in agreement that any authentication of
readers or posters is not possible in NNTP using the current spec.

My feeling is that such is just a specific case of the general problem
of authentication on networks; something like Kerberos seems to be
the right approach and might well be something we should add to a
revised NNTP spec.  

User and time-of-day as well as other access controls aren't really the
province of the Network News TRANSPORT Protocol spec, but it's clear
that we should have some provision to accomodate them, if only by having
some way to pass security transactions around as part of the nntp
session.

I've being vague intentionally.
	- Brian

pst@anise.acc.com (Paul Traina) (10/28/89)

nelson@sun.soe.clarkson.edu (Russ Nelson) writes:
>Is there anyone out there who's addressing the problem of running a
>NNTP client on a machine with no local storage?

I have recently completed an authentication scheme for NNTP and have been
running it here at ACC for the past month or so.  Originally it was
designed for reliable statistics gathering,  but since it does provide
proper authentication across unsecure channels (i.e. ethernet), it gives you
the basis of a "login" mechanism.  While it is not as foolproof as kerberos, 
it should pass the current US export restrictions (the DES module is removable)
and it is self contained.

As soon as I build up a distribution kit and write an easy-to-use
authentication client program,  I'll be soliciting offers for beta-testers.
Once we get all of the quirks out of it (actually it should be quirk free,
but I'm a pesimist),  I'll pack it off to people I consider "the NNTP gods"
for consideration as an official protocol enhancement.

I see no need to have a NNRP protocol.  All you would need to do is to
add a new option to the list command to download your .newsrc file after
you have authenticated yourself to the server.  You can probably live
without the "no local storage" rule -- it is more efficient if you can
use the PC's local disks as a "cache" for requesting articles.
--
"If Madonna is the material girl, then Kate Bush is the ethereal girl."

Disclaimer: The views and opinions expressed in this message do not necessarily
            represent the views and opinions of IBM or its management.