[comp.unix.wizards] UNIX classified operation

cel@uw-apl.UUCP (06/15/87)

New DoD requirements for classified computing require that we provide on demand
an audit trail from which they can reconstruct all "actions to open, close,
create and destroy classified files", Section XIII, 111.b.(4), Security
Requirements for Automated Information Systems, DoD 5220.22-M.  A real UNIX
wizard will understand better than I do that this is not a trivial task in a
UNIX environment.  You have to protect against access by mv, cp, rm, cat, as
well as attempts by aliased users, tasks which were linked on another system
and imported by, e.g., mag tape, etc., etc..  Is there anyone out there who has
addressed this problem seriously, let alone solved it?  It doesn't seem likely
that Berkeley has done it, or will do it.  [OOPS!  Sorry, I forgot to mention
at the top that we're running 4.2bsd.]  Send replies (even suggestions and
comments) to:

         Curtis Lacy
         {allegra,microvax,decvax,ucbvax!lbl-csam}!uw-beaver!uw-apl!cel

snoopy@doghouse.gwd.tek.com (Snoopy) (06/18/87)

In article <175@uw-apl.UUCP> cel@uw-apl.UUCP (Curtis Lacy) writes:

>New DoD requirements for classified computing require that we provide on demand
>an audit trail from which they can reconstruct all "actions to open, close,
>create and destroy classified files", Section XIII, 111.b.(4), Security
>Requirements for Automated Information Systems, DoD 5220.22-M.  A real UNIX
>wizard will understand better than I do that this is not a trivial task in a
>UNIX environment.  You have to protect against access by mv, cp, rm, cat, as
>well as attempts by aliased users, tasks which were linked on another system
>and imported by, e.g., mag tape, etc., etc..

To do this right, forget about the utilities, and put logging into
the kernel for the various system calls, e.g. open(2), close(2), etc.
Otherwise, someone could bypass the audit by writing their own version.
You would probably want the UID, the pathname, and a timestamp, possibly
other things.  You'll need some way to distinguish between classified
files and non-classified files, to keep the volume of the log down.

comment: yuck!

Snoopy
tektronix!doghouse.gwd!snoopy
snoopy@doghouse.gwd.tek.com

page@ulowell.cs.ulowell.edu (Bob Page) (06/19/87)

cel@uw-apl.UUCP (Curtis Lacy) wrote in article <175@uw-apl.UUCP>:
>New DoD requirements for classified computing require that we provide
>on demand an audit trail from which they can reconstruct all "actions
>to open, close, create and destroy classified files"

If 'audit trail' means a simple log of what happened to the file, when
and by whom, this is not too hard if you modify the library routines
to do the logging when they see some special flag in the inode.

If you mean be able to reproduce any file at any point in its lifetime,
it's a little bit harder than that.  :-)

This reponse is in the generic sense; I have not done any work in this
area, nor do I know people who have.

..Bob
-- 
Bob Page, U of Lowell CS Dept.   page@ulowell.{uucp,edu,csnet} 

mjr@osiris.UUCP (06/19/87)

In article <8737@tekecs.TEK.COM>, snoopy@doghouse.gwd.tek.com (Snoopy) writes:
> In article <175@uw-apl.UUCP> cel@uw-apl.UUCP (Curtis Lacy) writes:
> 
> >New DoD requirements for classified computing require that we provide
> >an audit trail from which they can reconstruct all "actions to open, close,
> >create and destroy classified files"

> To do this right, forget about the utilities, and put logging into
> the kernel for the various system calls, e.g. open(2), close(2), etc.
> Otherwise, someone could bypass the audit by writing their own version.
> You would probably want the UID, the pathname, and a timestamp, possibly
> other things.  You'll need some way to distinguish between classified
> files and non-classified files, to keep the volume of the log down.

In UNIX it's much too easy to fake that kind of thing out, though. 
Suppose I break into Ollie North's home directory and tar(1) it all
to a file in my home directory. That logs one open(2) call for each
file, and one open() call for the creation of the file in my home
dir. Now, however, I have *one* file that is really an unknown
number of classified files. Any further operations performed on it
will seem to be working on one file.

Obviously, the above example is a braindead example off the top of
my head (the pointy part), but you get the idea. It's too easy to
mess up your tracks as far as what you're doing and where.
"cat OlliesFile | tee output" would let me read a file while appearing
to only make a copy of it to disk. I did 2 open(2) and 2 close(2),
and that's it, since the standard input is always open. 

You'd maybe have to keep track of all the devices/files open for
read/write by the particular user at the time of access, as well as
the number of bytes (ignoring compression) written to those devices.
You could also have the shell explicitly open the standard file
descriptors *EVERY* time you write to the tty.

I suppose telling the spooks to go play cowboys&indians somewhere
where they know what they're talking about is too idealistic ?

--mjr();
-- 
If they think you're crude, go technical; if they think you're technical,
go crude. I'm a very technical boy. So I get as crude as possible. These
days, though, you have to be pretty technical before you can even aspire
to crudeness...         -Johnny Mnemonic

meissner@dg_rtp.UUCP (06/21/87)

In article <175@uw-apl.UUCP> cel@uw-apl.UUCP (Curtis Lacy) writes:
> 
> New DoD requirements for classified computing require that we provide on demand
> an audit trail from which they can reconstruct all "actions to open, close,
> create and destroy classified files", Section XIII, 111.b.(4), Security
> Requirements for Automated Information Systems, DoD 5220.22-M.  A real UNIX
> wizard will understand better than I do that this is not a trivial task in a
> UNIX environment.  You have to protect against access by mv, cp, rm, cat, as
> well as attempts by aliased users, tasks which were linked on another system
> and imported by, e.g., mag tape, etc., etc..  Is there anyone out there who has
> addressed this problem seriously, let alone solved it?  It doesn't seem likely
> that Berkeley has done it, or will do it.  [OOPS!  Sorry, I forgot to mention
> at the top that we're running 4.2bsd.]  Send replies (even suggestions and
> comments) to:

As others have said, the only real way to get the audit trail reliably,
is to put it into the kernel in the open, close, shm*, bind, etc. system
calls.  However, the fun question is where do you log it to?  Tape [you
had better have fulltime operators], disk [audit trails chew up an huge
quanity of disk in a hurry - I've heard of filling a 350M disk in about
an hour of normal timesharing use on other systems], etc.  Also, you have
to watch out for set user-ID programs, etc.  I don't have the orange book
at home with me, but I seriously doubt whether ANY UNIX can be made more
secure than B3 or maybe B2, and still have it be UNIX.  In some senses,
it could be said that manitory security is the antithisis of UNIX (flamers
note, I mean that UNIX was designed to encourage sharing amonst it's users).
-- 
	Michael Meissner, Data General	Uucp: ...mcnc!rti!dg_rtp!meissner

It is 11pm, do you know what your sendmail and uucico are doing?

woerz@iaoobelix.UUCP (06/25/87)

> /***** iaoobelix:comp.unix.wiz / osiris!mjr /  7:04 pm  Jun 19, 1987*/
> In article <8737@tekecs.TEK.COM>, snoopy@doghouse.gwd.tek.com (Snoopy) writes:
> > In article <175@uw-apl.UUCP> cel@uw-apl.UUCP (Curtis Lacy) writes:
> >
> > >New DoD requirements for classified computing require that we provide
> > >an audit trail from which they can reconstruct all "actions to open, close,
> > >create and destroy classified files"
>
> > To do this right, forget about the utilities, and put logging into
> > the kernel for the various system calls, e.g. open(2), close(2), etc.
> > Otherwise, someone could bypass the audit by writing their own version.
> > You would probably want the UID, the pathname, and a timestamp, possibly
> > other things.  You'll need some way to distinguish between classified
> > files and non-classified files, to keep the volume of the log down.
>
> In UNIX it's much too easy to fake that kind of thing out, though.
> Suppose I break into Ollie North's home directory and tar(1) it all
> to a file in my home directory. That logs one open(2) call for each
> file, and one open() call for the creation of the file in my home
> dir. Now, however, I have *one* file that is really an unknown
> number of classified files. Any further operations performed on it
> will seem to be working on one file.
>
> Obviously, the above example is a braindead example off the top of
> my head (the pointy part), but you get the idea. It's too easy to
> mess up your tracks as far as what you're doing and where.
> "cat OlliesFile | tee output" would let me read a file while appearing
> to only make a copy of it to disk. I did 2 open(2) and 2 close(2),
> and that's it, since the standard input is always open.
>
> You'd maybe have to keep track of all the devices/files open for
> read/write by the particular user at the time of access, as well as
> the number of bytes (ignoring compression) written to those devices.
> You could also have the shell explicitly open the standard file
> descriptors *EVERY* time you write to the tty.
>
> I suppose telling the spooks to go play cowboys&indians somewhere
> where they know what they're talking about is too idealistic ?
>
> --mjr();
> --
> If they think you're crude, go technical; if they think you're technical,
> go crude. I'm a very technical boy. So I get as crude as possible. These
> days, though, you have to be pretty technical before you can even aspire
> to crudeness...         -Johnny Mnemonic
> /* ---------- */

It's even more complicated in UNIX. Tar opens the file and you get a
log. But consider dump. It opens the raw device of the disk and
copies the raw block to tape or to another location. I think it is
nearly impossible to protect someone from reading the raw disk under
UNIX. You can write a log entry from dump, but I think you cannot
protect against someone reading the raw disk with his own programs.

------------------------------------------------------------------------------

Dieter Woerz
Fraunhofer Institut fuer Arbeitswirtschaft und Organisation
Abt. 453
Holzgartenstrasse 17
D-7000 Stuttgart 1
W-Germany

BITNET: iaoobel.uucp!woerz@unido.bitnet
UUCP:   ...{seismo!unido, pyramid}!iaoobel!woerz

dhb@rayssd.RAY.COM (David H. Brierley) (07/04/87)

In article <8300007@iaoobelix.UUCP> woerz@iaoobelix.UUCP writes:
>
>It's even more complicated in UNIX. Tar opens the file and you get a
>log. But consider dump. It opens the raw device of the disk and
>copies the raw block to tape or to another location. I think it is
>nearly impossible to protect someone from reading the raw disk under
>UNIX. You can write a log entry from dump, but I think you cannot
>protect against someone reading the raw disk with his own programs.
>

Protecting normal users from reading the raw disk is not only easy,
it is essential to system security.  All block and character device
entries for the various disk drives (i.e. /dev/rhp0a, /dev/rra0a)
should be made mode 600 and owned by either root or some other "secure"
account.  If the raw disk is readable by general users it effectively
overrides any file permissions that other users might set up.

I strongly suggest that any system administrators who are not sure
about this check the device entries to make sure the permissions are
set correctly.
-- 
	David H. Brierley
	Raytheon Submarine Signal Division
	1847 West Main Road
	Portsmouth, RI 02871

Phone:		(401)-847-8000 x4073
Internet:	dhb@rayssd.ray.com
Uucp:		{cbosgd, gatech, linus, mirror, necntc, uiucdcs} !rayssd!dhb

jerry@oliveb.UUCP (07/09/87)

In article <1110@rayssd.RAY.COM> dhb@rayssd.RAY.COM (David H. Brierley) writes:
>Protecting normal users from reading the raw disk is not only easy,
>it is essential to system security.  All block and character device
>entries for the various disk drives (i.e. /dev/rhp0a, /dev/rra0a)
>should be made mode 600 and owned by either root or some other "secure"
>account.  If the raw disk is readable by general users it effectively
>overrides any file permissions that other users might set up.

Actually you should consider making them mode 640, owned by root and
with group set to the group your operators are in.  This allows them to
do dumps without being root.  Of course this depends on the procedures
you use for backup but it can add an extra measure of security.

The /dev/mem and /dev/kmem entries are another area that should have
similar protection.  On 4.3BSD they are mode 640 with a group of "kmem".
This allows programs like "ps" to be set group id to kmem instead of
set uid to root.
				Jerry Aguirre

haynes@ucscc.UCSC.EDU.ucsc.edu (99700000) (07/09/87)

>
>Actually you should consider making them mode 640, owned by root and
>with group set to the group your operators are in.  This allows them to
>do dumps without being root.  Of course this depends on the procedures
>you use for backup but it can add an extra measure of security.

Or, it can detract from security if people can find a way to get into the
operator group when they don't belong there.  (e.g. they learn some
operator's password).  What we did instead is to have a 'backup' account
on the machine that the operators log into when they are going to do
backups.  The dump program is hacked so that it runs setuid root, but
drops privileges if the uid running it is not that of 'backup' .


haynes@ucscc.ucsc.edu
haynes@ucscc.bitnet
..ucbvax!ucscc!haynes

daveb@geac.UUCP (Dave Brown) (07/11/87)

In article <1894@oliveb.UUCP> jerry@oliveb.UUCP (Jerry F Aguirre) writes:
>The /dev/mem and /dev/kmem entries are another area that should have
>similar protection.  On 4.3BSD they are mode 640 with a group of "kmem".
>This allows programs like "ps" to be set group id to kmem instead of
>set uid to root.

In general, it is better to have a few groups who "own" particular
resources than have every type-manager program use setuid root.  If
you create several hundred groups, though, you can expect to see a
performance problem (:-)

 
-- 
 David (Collier-) Brown.              |  Computer Science
 Geac Computers International Inc.,   |  loses its memory
 350 Steelcase Road,Markham, Ontario, |  (if not its mind)
 CANADA, L3R 1B3 (416) 475-0525 x3279 |  every 6 months.

scc@cl.cam.ac.uk (Stephen Crawley) (07/16/87)

>> In article <8737@tekecs.TEK.COM>, snoopy@doghouse.gwd.tek.com (Snoopy) writes:
>> Suppose I break into Ollie North's home directory and tar(1) it all
>> to a file in my home directory. That logs one open(2) call for each
>> file, and one open() call for the creation of the file in my home
>> dir. Now, however, I have *one* file that is really an unknown
>> number of classified files. Any further operations performed on it
>> will seem to be working on one file.
>>
>> Obviously, the above example is a braindead example off the top of
>> my head (the pointy part), but you get the idea. It's too easy to
>> mess up your tracks as far as what you're doing and where.

I'm not sure I DO get the idea ... 

In logging the open("/usr/ollie/secret", R) the security system has
recorded the fact that you have breached security for that particular
file, and that you have (probably) read it.  Unless you were logged
via a terminal in a secure room, and the a security guard strip
searched you on the way out (to check for minature cameras, etc), the
authorities must assume that you could still have a copy somewhere
even if they can guarantee that they have found all of your online
copies.

In short, your messing up your tracks doesn't help you at all and
it only hinders the "fire fighters" a bit.

It is a different matter if you are talking about person A with
legitimate read access to a file leaking a copy to person B who is
on the other side.  A secure system would need to do far more than 
logging file access to detect that sort of thing!

In article <8300007@iaoobelix.UUCP> woerz@iaoobelix.UUCP writes:
>> /***** iaoobelix:comp.unix.wiz / osiris!mjr /  7:04 pm  Jun 19, 1987*/
>... consider dump. It opens the raw device of the disk and
>copies the raw block to tape or to another location. I think it is
>nearly impossible to protect someone from reading the raw disk under
>UNIX. You can write a log entry from dump, but I think you cannot
>protect against someone reading the raw disk with his own programs.

The first thing a security conscious UNIX system administrator
would do would be to set the access on the raw (and block) device 
files for the disc so that it can't be read by mere mortals.  Then
he would do the same for /dev/kmem etc ...

-- Steve

Disclaimer: I don't know what I'm talking about, but sometimes I
	    listen to people who do.

greywolf@unisoft.UUCP (The Grey Wolf @ ext 165) (07/23/87)

In article <735@jenny.cl.cam.ac.uk> scc@cl.cam.ac.uk (Stephen Crawley) writes:
>>> In article <8737@tekecs.TEK.COM>, snoopy@doghouse.gwd.tek.com (Snoopy) writes:
>>> Suppose I break into Ollie North's home directory and tar(1) it all
>>> to a file in my home directory. That logs one open(2) call for each
>>> file, and one open() call for the creation of the file in my home
>>> dir. Now, however, I have *one* file that is really an unknown
>>> number of classified files. Any further operations performed on it
>>> will seem to be working on one file.
>>>
>>> Obviously, the above example is a braindead example off the top of
>>> my head (the pointy part), but you get the idea. It's too easy to
>>> mess up your tracks as far as what you're doing and where.

	Why log system calls in the first place?  I object to it in two ways:
1)  The kernel overhead and resulting system load would SKYROCKET, resulting
in a slower machine.
2)  While it may make the machine more "secure", a proper system administrator
should be on top of things to begin with.  If users get this feeling that
"Big Brother Is Watching You", they're going to feel a lot less comfortable
using the machine.  I know I would.  Granted, there are mischievous sorts and
malevolent sorts (I wouldn't mind the mischievous sorts on my machine--they
make life interesting!), but I believe in freedoms, not restrictions, and I
believe in privacy.  Never mind that the Big Brother thing is practically
happening in real life, that's not the issue...

	What am I trying to say?  I guess I'm not quite sure.  But I am sure
	that I don't like to see freedoms violated like they would be.
	Sure, the honor system doesn't always work, but when it does, people
	in the environment in which it is used are more appreciative of
	what they have going for them there.
	
EOF (End Of Flame)

					Roan (RO'an) Anderson
					unisoft!greywolf
--------------------------------------------------------------------------------
Faster than pure assembly code...
	More powerful than kill -9...
		able to unmount busy file systems in a single call...
								 ______
	it's a (long) word...					/ |  | \
	it's a (back)plane...					\=#==#=/
								 \|  |/
				it's...				  \==/
								   \/
							SUPERUSER!!!!
------------------------------------------------------------------------------

smb@mimsy.UUCP (Steve M. Burinsky) (07/24/87)

In article <468@unisoft.UUCP> greywolf@unisoft.UUCP (The Grey Wolf) writes:
>2)  While it may make the machine more "secure", a proper system administrator
>should be on top of things to begin with.  If users get this feeling that
>"Big Brother Is Watching You", they're going to feel a lot less comfortable
>using the machine.  I know I would.  Granted, there are mischievous sorts and
>malevolent sorts (I wouldn't mind the mischievous sorts on my machine--they
>make life interesting!), but I believe in freedoms, not restrictions, and I
>believe in privacy.  Never mind that the Big Brother thing is practically
>happening in real life, that's not the issue...
>	What am I trying to say?  I guess I'm not quite sure.  But I am sure
>	that I don't like to see freedoms violated like they would be.
>	Sure, the honor system doesn't always work, but when it does, people
>	in the environment in which it is used are more appreciative of
>	what they have going for them there.
>	
>					Roan (RO'an) Anderson
>					unisoft!greywolf

You're kidding, right?  1984 came and went without any thinkspeak.  Big Brother
is watching?  Come on -- if you can't handle an accountablility record of what
users are doing, don't use the machine.  Remember, this is about UNIX
classified operation.  If you can't sleep at night knowing that you
might be watched when you log on the next day, tell Big Brother to keep his
security clearance.

"a proper system administrator should be on top of things to begin with."
This obviously didn't happen in [Johnathon Pollard, Arthur Walker, Larry Chin,
Christopher Boyce, and on and on and on and on ...]'s case.

"Sure, the honor system doesn't always work, but when it does..."
This accountability has nothing to do with "when it does", but when it doesn't.
Because the honor system doesn't always work, you need to do some checking.

Do you toss and turn at night because Big Brother is reviewing the zillions of
dollars of electronic fund transfers just to make sure that no one is swindling
a few million here and there?  Should the IRS just take everyone's word that
their tax return is completely correct?  Without this checking, abuse can
become rampant.

Relax.  Big Brother could generally care less what it is you do or say or think.
They just don't have time to.  It's when someone gets out of line that it
matters.
-- 
Steve M. Burinsky
smb@mimsy.umd.edu

mjr@osiris.UUCP (Marcus Ranum) (07/24/87)

In article <468@unisoft.UUCP>, greywolf@unisoft.UUCP (The Grey Wolf @ ext 165) writes:
> 	Why log system calls in the first place?  I object to it in two ways:
> 1)  The kernel overhead and resulting system load would SKYROCKET, resulting
> in a slower machine.

[... drivel deleted...]

> 	What am I trying to say?  I guess I'm not quite sure.  But I am sure
> 	that I don't like to see freedoms violated like they would be.

[... drivel deleted...]

	If you had followed the original discussion, rather than jumping
in half-cocked, you would have known that the discussion was in reference 
to the spooks requesting that UNIX provide them with exactly the type of
audit trails you are so offended by. Most of the postings, including my
example about Ollie's files (though they are actually on an IBM, I learned)
were describing the utter stupidity of the idea. I think that most people
who are familiar with the real world and UNIX know what a dumb idea the
whole thing is. Most people who live in the real world also realize that
what the spooks want, the spooks get, since they pay a lot of people's
salaries. This type of boneheadedness will all be done on secure UNIX
systems, anyhow, and hopefully only a very few of us will ever have to
try to get any work done on them.

--mjr();
-- 
If they think you're crude, go technical; if they think you're technical,
go crude. I'm a very technical boy. So I get as crude as possible. These
days, though, you have to be pretty technical before you can even aspire
to crudeness...			         -Johnny Mnemonic

gwyn@brl-smoke.ARPA (Doug Gwyn ) (07/25/87)

In article <1335@osiris.UUCP> mjr@osiris.UUCP (Marcus Ranum) writes:
>This type of boneheadedness will all be done on secure UNIX systems, anyhow...

Not necessarily.  Another, technically much superior approach to classified
computing is to operate the system inside a physically controlled area
(vault).  That's actually the approach that BRL seems to prefer, rather
than crippling our systems so that perfectly reasonable application needs
can no longer be effectively met (which is what the Orange Book would have
you do).  Government regulations in general appear to be written by people
who have insufficient input from the working level that the regulations
would directly impact.  So long as the politicians continue to think that
they have some special ability to fix problems by administrative fiat, this
situation wessiessie FL 

preece%mycroft@gswd-vms.gould.com (Scott E. Preece) (08/05/87)

In article <468@unisoft.UUCP> greywolf@unisoft.UUCP (The Grey Wolf) writes:

>		... but I believe in freedoms, not restrictions, and I
>believe in privacy.  Never mind that the Big Brother thing is practically
>happening in real life, that's not the issue...
----------
The point to the "Big Brother" logging and controls on secure systems
is to protect privacy.  Now, you may think it's good for you to have
privacy and bad for government agencies to have privacy, but that's
an entirely separate issue from whether it's a good thing for a system
to be able to enforce it.  I kind of like the idea of the system being
capable of protecting me from intrusions, even if part of the cost is
a level of activity logging that makes it possible to be even more
intrusive, so long as nobody I don't trust has access to that log
data.

-- 
scott preece
gould/csd - urbana
uucp:	ihnp4!uiucdcs!ccvaxa!preece
arpa:	preece@Gould.com