From: Steve Dickson <SteveD@redhat.com>
To: Casey Schaufler <casey@schaufler-ca.com>
Cc: "J. Bruce Fields" <bfields@fieldses.org>,
David Quigley <dpquigl@davequigley.com>,
Trond Myklebust <trond.myklebust@netapp.com>,
"J. Bruce Fields" <bfields@redhat.com>,
"David P. Quigley" <dpquigl@tycho.nsa.gov>,
Linux NFS list <linux-nfs@vger.kernel.org>,
Linux Security List <linux-security-module@vger.kernel.org>,
SELinux List <selinux@tycho.nsa.gov>
Subject: Re: [PATCH 13/14] NFSD: Server implementation of MAC Labeling
Date: Sat, 30 Mar 2013 17:09:21 -0400 [thread overview]
Message-ID: <51575481.9030702@RedHat.com> (raw)
In-Reply-To: <5155F51E.8020603@schaufler-ca.com>
On 29/03/13 16:10, Casey Schaufler wrote:
> On 3/29/2013 11:42 AM, J. Bruce Fields wrote:
>> On Fri, Mar 29, 2013 at 08:18:59AM -0700, Casey Schaufler wrote:
>>> On 3/29/2013 7:49 AM, David Quigley wrote:
>>>> On 03/29/2013 10:40, J. Bruce Fields wrote:
>>>>> On Thu, Mar 28, 2013 at 11:35:31PM -0400, Dave Quigley wrote:
>>>>>> On 3/28/2013 12:14 PM, J. Bruce Fields wrote:
>>>>>>> On Thu, Mar 28, 2013 at 09:54:04AM -0400, Steve Dickson wrote:
>>>>>>>> From: David Quigley <dpquigl@davequigley.com>
>>>>>>>>
>>>>>>>> This patch adds the ability to encode and decode file labels on
>>>>>> the server for
>>>>>>>> the purpose of sending them to the client and also to process
>>>>>> label change
>>>>>>>> requests from the client.
>>>>>>>>
>>>>>>>> Signed-off-by: Matthew N. Dodd <Matthew.Dodd@sparta.com>
>>>>>>>> Signed-off-by: Miguel Rodel Felipe <Rodel_FM@dsi.a-star.edu.sg>
>>>>>>>> Signed-off-by: Phua Eu Gene <PHUA_Eu_Gene@dsi.a-star.edu.sg>
>>>>>>>> Signed-off-by: Khin Mi Mi Aung <Mi_Mi_AUNG@dsi.a-star.edu.sg>
>>>>>>>> ---
>>>>>>>> fs/nfsd/nfs4proc.c | 41 +++++++++++++++++++
>>>>>>>> fs/nfsd/nfs4xdr.c | 116
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++---
>>>>>>>> fs/nfsd/nfsd.h | 6 ++-
>>>>>>>> fs/nfsd/vfs.c | 29 ++++++++++++++
>>>>>>>> fs/nfsd/vfs.h | 2 +
>>>>>>>> fs/nfsd/xdr4.h | 3 ++
>>>>>>>> 6 files changed, 191 insertions(+), 6 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
>>>>>>>> index ae73175..bb17589 100644
>>>>>>>> --- a/fs/nfsd/nfs4proc.c
>>>>>>>> +++ b/fs/nfsd/nfs4proc.c
>>>>>>>> @@ -42,6 +42,36 @@
>>>>>>>> #include "current_stateid.h"
>>>>>>>> #include "netns.h"
>>>>>>>>
>>>>>>>> +#ifdef CONFIG_NFSD_V4_SECURITY_LABEL
>>>>>>>> +#include <linux/security.h>
>>>>>>>> +
>>>>>>>> +static inline void
>>>>>>>> +nfsd4_security_inode_setsecctx(struct svc_fh *resfh, struct
>>>>>> nfs4_label *label, u32 *bmval)
>>>>>>>> +{
>>>>>>>> + struct inode *inode = resfh->fh_dentry->d_inode;
>>>>>>>> + int status;
>>>>>>>> +
>>>>>>>> + mutex_lock(&inode->i_mutex);
>>>>>>>> + status = security_inode_setsecctx(resfh->fh_dentry,
>>>>>>>> + label->label, label->len);
>>>>>>>> + mutex_unlock(&inode->i_mutex);
>>>>>>>> +
>>>>>>>> + if (status)
>>>>>>>> + /*
>>>>>>>> + * We should probably fail the whole open at this point,
>>>>>>>> + * but we've already created or opened the file, so it's
>>>>>>>> + * too late; So this seems the least of evils:
>>>>>>>> + */
>>>>>>>> + bmval[2] &= ~FATTR4_WORD2_SECURITY_LABEL;
>>>>>>> Is there any way to avoid this?
>>>>>>>
>>>>>>> How does the vfs open code handle this? It has to be able to set a
>>>>>>> security contexts atomically on open(O_CREAT), doesn't it?
>>>>>>>
>>>>>> I believe the way this is handled is that the inode is created and
>>>>>> labeled and then only after that is it bound to the namespace.
>>>>>> Because of that ordering we can fail and release the inode without
>>>>>> it ever having a dentry in the namespace.
>>>>> Grepping around.... Looks like that's done by
>>>>> security_inode_init_security(), from the filesystem's create method.
>>>>>
>>>>> So we'd need to be able to pass something down to there.
>>>>>
>>>>> Is the current client actually expected to use this? (So are we going
>>>>> to see a lot of opens that set the label?)
>>>>>
>>>>> --b.
>>>> I don't have all the code infront of me but we have a different hook
>>>> to do that. The call to nfsd4_security_inode_setsecctx is supposed to
>>>> be used from the setattr handlers to do the equivalent of a setxattr
>>>> on the file over NFS. The actual creation gets done with something
>>>> like security_dentry_init_security which should be in an earlier
>>>> patch. I'd have to look more clearly at the code to find out. Also
>>>> where did we come up with 128 for label length? The SELinux code
>>>> assumes a starting point of 255 and goes up from there as needed. The
>>>> MLS policies will definitely exceed a 128 byte label.
>>> If anyone cares, Smack labels can (now) be 255 characters.
>>> Also, when (if) we get multiple concurrent LSMs the
>>> "security context" may include information for more than
>>> one LSM. 128 bytes is going to look pretty tiny then.
>>>
>>> smack='com.corportation.service'selinux='system_u:object_r:bin_t:s0'
>> OK. We need a number. 2k?
>
> Consider some of the kinds of attributes we are likely to
> see in the not to distant future:
>
> Permitted access times, at around 100 bytes each.
> Bell & LaPadula labels at 500 bytes each.
> Signatures of various sizes and flavors.
> HEPA restrictions
>
> I think 2k will do for a while. I think that in the long run
> it will come up short. I think the real question is whether
> NFS will remain viable long enough for it to matter.
2k it is!
steved.
next prev parent reply other threads:[~2013-03-30 21:09 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-28 13:53 [PATCH 00/14] nfs: 3.9-rc3 release (v2) Steve Dickson
2013-03-28 13:53 ` [PATCH 01/14] Security: Add hook to calculate context based on a negative dentry Steve Dickson
2013-03-28 13:53 ` [PATCH 02/14] Security: Add Hook to test if the particular xattr is part of a MAC model Steve Dickson
2013-03-29 11:43 ` Mimi Zohar
2013-03-29 18:40 ` J. Bruce Fields
2013-03-30 20:52 ` Steve Dickson
2013-03-28 13:53 ` [PATCH 03/14] LSM: Add flags field to security_sb_set_mnt_opts for in kernel mount data Steve Dickson
2013-03-28 13:53 ` [PATCH 04/14] SELinux: Add new labeling type native labels Steve Dickson
2013-03-28 13:53 ` [PATCH 05/14] NFSv4: Add label recommended attribute and NFSv4 flags Steve Dickson
2013-03-28 13:53 ` [PATCH 06/14] NFSv4: Introduce new label structure Steve Dickson
2013-03-28 15:37 ` J. Bruce Fields
2013-03-28 13:53 ` [PATCH 07/14] NFSv4: Extend fattr bitmaps to support all 3 words Steve Dickson
2013-03-28 13:53 ` [PATCH 08/14] NFS:Add labels to client function prototypes Steve Dickson
2013-03-28 13:54 ` [PATCH 09/14] NFS: Add label lifecycle management Steve Dickson
2013-03-28 13:54 ` [PATCH 10/14] NFS: Client implementation of Labeled-NFS Steve Dickson
2013-03-28 13:54 ` [PATCH 11/14] NFS: Extend NFS xattr handlers to accept the security namespace Steve Dickson
2013-03-28 13:54 ` [PATCH 12/14] Kconfig: Add Kconfig entry for Labeled NFS V4 client Steve Dickson
2013-03-28 13:54 ` [PATCH 13/14] NFSD: Server implementation of MAC Labeling Steve Dickson
2013-03-28 16:10 ` J. Bruce Fields
2013-03-28 16:14 ` J. Bruce Fields
2013-03-29 3:35 ` Dave Quigley
2013-03-29 14:40 ` J. Bruce Fields
2013-03-29 14:49 ` David Quigley
2013-03-29 15:18 ` Casey Schaufler
2013-03-29 18:42 ` J. Bruce Fields
2013-03-29 20:10 ` Casey Schaufler
2013-03-30 21:09 ` Steve Dickson [this message]
2013-04-01 12:54 ` Vu, Joseph
2013-04-01 15:55 ` David Quigley
2013-04-02 13:01 ` Vu, Joseph
2013-04-02 13:15 ` David Quigley
2013-04-01 16:53 ` Casey Schaufler
2013-03-31 2:47 ` Mimi Zohar
2013-03-30 23:13 ` Steve Dickson
2013-03-28 18:58 ` J. Bruce Fields
2013-03-28 19:19 ` J. Bruce Fields
2013-03-29 3:32 ` Dave Quigley
2013-03-29 14:23 ` J. Bruce Fields
2013-03-29 14:38 ` David Quigley
2013-03-30 21:50 ` Steve Dickson
2013-03-30 22:08 ` J. Bruce Fields
2013-03-30 22:49 ` Steve Dickson
2013-03-31 0:02 ` J. Bruce Fields
2013-03-31 0:23 ` Steve Dickson
2013-03-28 13:54 ` [PATCH 14/14] Kconfig: Add Kconfig entry for Labeled NFS V4 server Steve Dickson
-- strict thread matches above, loose matches on Subject: below --
2013-03-25 11:42 [PATCH 00/14] lnfs: 3.9-rc3 release Steve Dickson
2013-03-25 11:42 ` [PATCH 13/14] NFSD: Server implementation of MAC Labeling Steve Dickson
2013-02-18 18:47 [PATCH 00/14] lnfs: 3.8-rc7 release Steve Dickson
2013-02-18 18:47 ` [PATCH 13/14] NFSD: Server implementation of MAC Labeling Steve Dickson
2013-01-22 13:40 [PATCH 00/14] lNFS: 3.8-rc3 release Steve Dickson
2013-01-22 13:40 ` [PATCH 13/14] NFSD: Server implementation of MAC Labeling Steve Dickson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51575481.9030702@RedHat.com \
--to=steved@redhat.com \
--cc=bfields@fieldses.org \
--cc=bfields@redhat.com \
--cc=casey@schaufler-ca.com \
--cc=dpquigl@davequigley.com \
--cc=dpquigl@tycho.nsa.gov \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=selinux@tycho.nsa.gov \
--cc=trond.myklebust@netapp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).