* about security contexts for objects
@ 2003-05-22 14:10 Giorgio Zanin
2003-05-22 16:35 ` Russell Coker
0 siblings, 1 reply; 5+ messages in thread
From: Giorgio Zanin @ 2003-05-22 14:10 UTC (permalink / raw)
To: selinux
I received good answer every time I posted to this mailing list, so I
try this time too.
I am trying to get a formal model of the SELinux configuration language,
in order to infer some properties of the system from a given configuration.
The first property I am interested in is about the access of a given
(security context for a) subject to a given (security context for an)
object.
A security context has three components: a "user", a "role" and a
"type". Not all of the combinations of values for these components are
generally allowed in the system; it depends on configuration rules. I
call "valid" asecurity context that is allowed to be attached to a
process or to a generic object. My problem is how to determine valid
security contexts.
First of all I noticed (or at least I thought) it is possible to define
the set of all valid security contexts for subjects (process) in the
following way:
- U is the set of all the "user" components for a security context. I
can building up U, just examining all of the rules as
user u roles {r1 r2 ...};
- R(u) is the set of all of the authorized roles for a given "user" u.
It is possible to build up the set with the same rules as above
T is the set of all types, defined by rules as
type t;
T(r) is the set of domains a given role r can enter. It is possible to
build up the set examining all of the rules as
role r types {t1 t2 ...};
So, now, the set of all possible security contexts for a subject can be
modeled by
S = { (u,r,t) belonging to UxR(u)xT(r) }.
I can know all the valid security contexts for a process (elements of S)
just looking at three kinds of configuration rules.
What I need now is something similar for object security contexts. The
"role" component of such a security context is trivially "object_r".
What about "user" and "type" components?
I thought it would be useful to define a set of valid security contexts
with respect to a given object class.
For example, O(file) could be the set of all the valid security contexts
for files, O(socket) the set of all the valid security contexts for
sockets and so on, for each of the 29 object classes defined. Obviously,
O(process) would be S.
Is it possible to define O(c) (c=a given object class different from
"process") just looking at some configuration rules?
If I look at the file context configuration, I can get some elements of
O(file) and O(dir), but I think I can't catch all of them.
type_transition rules could be useful to catch some (but just some)
elements of O(c), for a given generic class c.
So the best choice seems to be looking at access vector rules; with a
rule as
allow A B : C P
I can argue B is a good "type" component for an object of class C. Can I
catch all the valid "type" components in this way?
About "user" components for an object, maybe anyone is ok.
Anyone can help me in doing this?
Thank you in advance, and sorry for my bad English. I hope I have been
at least a little clear :P
Giorgio
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about security contexts for objects
2003-05-22 14:10 about security contexts for objects Giorgio Zanin
@ 2003-05-22 16:35 ` Russell Coker
2003-05-22 19:22 ` Stephen Smalley
0 siblings, 1 reply; 5+ messages in thread
From: Russell Coker @ 2003-05-22 16:35 UTC (permalink / raw)
To: Giorgio Zanin, selinux
On Fri, 23 May 2003 00:10, Giorgio Zanin wrote:
> A security context has three components: a "user", a "role" and a
> "type". Not all of the combinations of values for these components are
The definition you give for the allowed combinations is accurate.
Also you should note that when a machine is in "permissive mode" processes can
run in security contexts that are not permitted. Toggling the machine to
"enforcing mode" will destroy those security contexts and make the processes
unlabelled (and unable to do anything useful).
> What I need now is something similar for object security contexts. The
> "role" component of such a security context is trivially "object_r".
> What about "user" and "type" components?
"user" is by default the identity of the user who created the object. However
certain processes are allowed to change the identity. Eventually I will
patch setfiles so that when it applies contexts to user home directories it
will assign the "user" field correctly. If the user field in the object
security contexts matches that of a process then the process may be permitted
to change the type of the object (see the constraints file - things are
actually more complex than this).
> I thought it would be useful to define a set of valid security contexts
> with respect to a given object class.
> For example, O(file) could be the set of all the valid security contexts
> for files,
Which is all possible users and all possible types. Although the policy may
prohibit a certain user from having a process in a domain that can create a
file of a particular type (it may even prohibit any domain from creating or
writing to such a file) that does not prevent the file from keeping it's
label. For example if I change the user "john" from the role staff_r to the
role user_r then the files with label john:object_r:staff_home_t will keep
their label (and be inaccessible to John).
> Is it possible to define O(c) (c=a given object class different from
> "process") just looking at some configuration rules?
> If I look at the file context configuration, I can get some elements of
> O(file) and O(dir), but I think I can't catch all of them.
Look at the policy for all types that have the attribute file_type, that
should catch all of them.
--
http://www.coker.com.au/selinux/ My NSA Security Enhanced Linux packages
http://www.coker.com.au/bonnie++/ Bonnie++ hard drive benchmark
http://www.coker.com.au/postal/ Postal SMTP/POP benchmark
http://www.coker.com.au/~russell/ My home page
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about security contexts for objects
2003-05-22 16:35 ` Russell Coker
@ 2003-05-22 19:22 ` Stephen Smalley
2003-05-23 8:09 ` Giorgio Zanin
0 siblings, 1 reply; 5+ messages in thread
From: Stephen Smalley @ 2003-05-22 19:22 UTC (permalink / raw)
To: Russell Coker; +Cc: Giorgio Zanin, selinux
On Thu, 2003-05-22 at 12:35, Russell Coker wrote:
> > Is it possible to define O(c) (c=a given object class different from
> > "process") just looking at some configuration rules?
> > If I look at the file context configuration, I can get some elements of
> > O(file) and O(dir), but I think I can't catch all of them.
>
> Look at the policy for all types that have the attribute file_type, that
> should catch all of them.
Not all of them. The file_type attribute is limited to files associated
with conventional (disk-based) filesystems and is used in allow rules
permitting the association of such types with those filesystems. It
doesn't cover types associated with pseudo filesystems.
Giorgio's suggestion of determining the set of possible file types by
inspection of the set of allow rules where a file class is used seems
reasonable.
--
Stephen Smalley <sds@epoch.ncsc.mil>
National Security Agency
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about security contexts for objects
2003-05-22 19:22 ` Stephen Smalley
@ 2003-05-23 8:09 ` Giorgio Zanin
2003-05-23 11:26 ` Stephen Smalley
0 siblings, 1 reply; 5+ messages in thread
From: Giorgio Zanin @ 2003-05-23 8:09 UTC (permalink / raw)
To: Stephen Smalley; +Cc: Russell Coker, selinux
Stephen Smalley wrote:
>>Look at the policy for all types that have the attribute file_type, that
>>should catch all of them.
>>
Actually file_type, as it is just an attribute with no semantics with
respect to the configuration language, is not the thing I would look at.
I mean, attributes are just names associated with types with no
semantics from a language point of view. What I need is something with
semantics in the configuration language context.
I wouldn't use attributes values fot infering any property of a
configuration, becouse I can think at an attribute just as a collection
of types (attributes are useful but they are not necessary).
>>Not all of them. The file_type attribute is limited to files associated
>>with conventional (disk-based) filesystems and is used in allow rules
>>permitting the association of such types with those filesystems. It
>>doesn't cover types associated with pseudo filesystems.
>>
what are exactly all the kinds of pseudo files? Do they cover every
object class other than file-related ones (file, filesystem, dir,
fifo_file, ...) and process?
Giorgio
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about security contexts for objects
2003-05-23 8:09 ` Giorgio Zanin
@ 2003-05-23 11:26 ` Stephen Smalley
0 siblings, 0 replies; 5+ messages in thread
From: Stephen Smalley @ 2003-05-23 11:26 UTC (permalink / raw)
To: Giorgio Zanin; +Cc: Russell Coker, selinux
On Fri, 2003-05-23 at 04:09, Giorgio Zanin wrote:
> Stephen Smalley wrote:
> >>Not all of them. The file_type attribute is limited to files associated
> >>with conventional (disk-based) filesystems and is used in allow rules
> >>permitting the association of such types with those filesystems. It
> >>doesn't cover types associated with pseudo filesystems.
> >>
> what are exactly all the kinds of pseudo files? Do they cover every
> object class other than file-related ones (file, filesystem, dir,
> fifo_file, ...) and process?
No. Pseudo files (e.g. /proc entries, devpts entries) have one of the
file classes. So your approach of checking all allow rules that involve
a file class will capture these kinds of files as well as conventional
files, unlike the file_type attribute.
--
Stephen Smalley <sds@epoch.ncsc.mil>
National Security Agency
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-05-23 11:27 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-05-22 14:10 about security contexts for objects Giorgio Zanin
2003-05-22 16:35 ` Russell Coker
2003-05-22 19:22 ` Stephen Smalley
2003-05-23 8:09 ` Giorgio Zanin
2003-05-23 11:26 ` Stephen Smalley
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.