Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Feb 2014 11:28:22 +0100
From:      Borja Marcos <borjam@sarenet.es>
To:        freebsd-security@freebsd.org
Subject:   Proposal: tunable default/init label for MAC policies
Message-ID:  <5C244CC2-A0D5-43B9-BA30-6B54E02F1C0F@sarenet.es>

next in thread | raw e-mail | index | archive | help
(I've just sent this to trustedbsd-discuss but the list is  probably =
dead, so I am crossposting)

Hello,

I am using a combination of mac_biba, mac_mls and mac_bsdextended to =
secure a shared hosting web server. The goals of each policy are:

- mac_biba: Protect the  integrity of the OS and configuration files =
against actions derived of a security breach of a user's website. =
Example, the typical PHP crap. Any descendant of a user process should =
be unable to modify anything but the files in that user's directory.

- mac_mls: Protect certain sensible files against read access by =
descendants of user processes. For example, we wish to protect key =
system files from Apache and its descendants, and Apache configuration =
files themselves from PHP/CGI processes or, of course, their =
descendants.

- mac_bsdextended so that users whose uid falls inside the "hosting =
users" set, imagine, 10000-20000, can't see processes or files belonging =
to other uids within that set.


The intent is to minimize surprise (hence, no need for a lot of =
technical support to adapt crappy CGI/PHP code for security =
requirements) but, at the same time, keeping good security measures.

This scheme has been used for years with very good results, without the =
mls policy, but we have stumbled upon an obstacle with MLS. The mls =
module defines a default mls label of mls/low, which gets applied to =
processes that haven't been spawned after a setusercontext() call. So, =
for example, applying a mls/high label to the ssh  private keys makes =
sshd inoperable, as it's launched by init, and gets a mls/low label, =
unable to read its private keys.

A  tunable like security.mac.{mls,biba...}.default_label or, maybe, more =
appropiately, security.{mac,biba...}.init_lable would allow the =
administrator to, for example, limit the usage of the MAC policies to =
descendants of certain processes. In our case, with most of the OS =
having the usual Unix security requirements, except for the intrinsicly =
dangerous stuff such as Apache and PHP/CGIs, init labels of =
{mls,biba}/equal would be more than enough, applying the necessary =
labels to the untrusted processes.

What do you think? I am sure this makes the MAC policies much more =
useful, and much easier to integrate with the typical Unix software =
without unnecessary incompatibilities, and of course not just for our =
particular scenario.










Borja.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5C244CC2-A0D5-43B9-BA30-6B54E02F1C0F>