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: 61+ 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 3:35 ` Dave Quigley
2013-03-29 14:40 ` J. Bruce Fields
2013-03-29 14:49 ` David Quigley
2013-03-29 14:49 ` David Quigley
2013-03-29 15:18 ` Casey Schaufler
2013-03-29 15:18 ` Casey Schaufler
2013-03-29 18:42 ` J. Bruce Fields
2013-03-29 20:10 ` Casey Schaufler
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 12:54 ` Vu, Joseph
2013-04-01 15:55 ` David Quigley
2013-04-01 15:55 ` David Quigley
2013-04-02 13:01 ` Vu, Joseph
2013-04-02 13:01 ` Vu, Joseph
2013-04-02 13:15 ` David Quigley
2013-04-02 13:15 ` David Quigley
2013-04-01 16:53 ` Casey Schaufler
2013-04-01 16:53 ` Casey Schaufler
2013-03-31 2:47 ` Mimi Zohar
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 3:32 ` Dave Quigley
2013-03-29 14:23 ` J. Bruce Fields
2013-03-29 14:38 ` David Quigley
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-02-18 18:47 ` 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 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.