All of lore.kernel.org
 help / color / mirror / Atom feed
From: Casey Schaufler <casey@schaufler-ca.com>
To: David Quigley <dpquigl@davequigley.com>
Cc: bfields@fieldses.org, trond.myklebust@netapp.com,
	sds@tycho.nsa.gov, linux-nfs@vger.kernel.org,
	selinux@tycho.nsa.gov, linux-security-module@vger.kernel.org
Subject: Re: Labeled NFS [v5]
Date: Thu, 29 Nov 2012 17:50:10 -0800	[thread overview]
Message-ID: <50B810D2.2000401@schaufler-ca.com> (raw)
In-Reply-To: <579e850139bd3d5a0c9155270d5d9fbe@countercultured.net>

On 11/29/2012 4:46 PM, David Quigley wrote:
> On 11/29/2012 19:34, Casey Schaufler wrote:
>> On 11/29/2012 4:07 PM, David Quigley wrote:
>>> On 11/29/2012 17:28, Casey Schaufler wrote:
>>>> On 11/28/2012 6:08 PM, Casey Schaufler wrote:
>>>>> On 11/28/2012 5:14 PM, Dave Quigley wrote:
>>>>>> On 11/28/2012 1:57 PM, Casey Schaufler wrote:
>>>>>>> On 11/20/2012 7:28 PM, Dave Quigley wrote:
>>>>>>>> On 11/20/2012 9:52 PM, Casey Schaufler wrote:
>>>>>>>>> On 11/20/2012 4:37 PM, Dave Quigley wrote:
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Or I could just give you this link and you should be good to
>>>>>>>>>> go ;)
>>>>>>>>>>
>>>>>>>>>> http://www.selinuxproject.org/~dpquigl/nfs-utils-rpms/
>>>>>>>>>>
>>>>>>>>>> I haven't tried it but it should work. If it doesn't let me
>>>>>>>>>> know and
>>>>>>>>>> i'll try to fix it on my end. I'd imagine you might need to yum
>>>>>>>>>> remove
>>>>>>>>>> nfs-utils first before adding this new one or you could also
>>>>>>>>>> try an
>>>>>>>>>> rpm with the upgrade flag for this instead. Good luck.
>>>>>>> ...
>>>>>>>
>>>>>>>
>>>>>>> I've tried on Fedora17 and Ubuntu12.04, and I'm getting the
>>>>>>> attached stack trace on mount. After mounting I'm getting
>>>>>>> denials when I should, but also when I shouldn't.
>>>>>>>
>>>>>>> I've tried tracking down the issue, but there's a lot going on
>>>>>>> that I don't find obvious. I added a dentry_init hook just for
>>>>>>> grins, but it's not getting called.
>>>>>>>
>>>>>>> .
>>>>>>>
>>>>>>>
>>>>>> Any chance of you throwing a kickstart file my way that's configured
>>>>>> with SMACK so I can use it for a test box (both server and
>>>>>> client)? I
>>>>>> can have the guys working with me test for SMACK as well if you
>>>>>> provide an appropriate test harness and image for testing.
>>>>> I've attached the .config from my Fedora17 machine. Who knows, maybe
>>>>> I got something wrong there. I get the error doing the test on the
>>>>> loopback interface (mount -t nfs4 localhist:/ /mnt).
>>>>
>>>> I've done some instrumentation and security_ismaclabel() is getting
>>>> called with "selinux", but never "SMACK64". I would guess that
>>>> somewhere
>>>> in the tools you're telling the kernel to expect "selinux". Where is
>>>> that, so that I can tell it to try "SMACK64" instead?
>>>>
>>>>
>>>>
>>>> -- 
>>>> 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.
>>>
>>>
>>> What tools do you use in SMACK to see the labels?
>>
>> attr -S -g SMACK64 <path>
>
> ok so that seems to work for SELinux as well. Never knew about that.
> I'd always just rip the xattr out of the inode with getfattr.
>
>
>>
>>> Do you just use getxattr? If so can you try calling that and seeing
>>> what happens? I'm concerned that you aren't getting any attribute
>>> information on that file.
>>
>> I would think that were it not for the case that access is denied
>> and I get an audit record for nfsd that reports a subject label of "_"
>> (which is correct for nfsd but not the process attempting access) and
>> an object label of "WhooHoo", which is correct. The server side
>> looks like it might be working right, given the information that it
>> has.
>>
>
> Ok so this is the problem. nfsd is a kernel thread I believe. In
> SELinux land it has the type kernel_t which is all powerful. We don't
> have client label transport yet (That requires RPCSECGSSv3). Is there
> a way you can have that kernel thread running as a type that has
> access to everything?

That would be having CAP_MAC_ADMIN and CAP_MAC_OVERRIDE in Smackese.
Looking at /proc/<pid-of-nfsd>/status we see CapEff of fff...fff which
is to say, all capabilities.
 

> I think that is the current problem. Which makes perfect sense. If
> your kernel threads don't get started with max privilege then the
> server would be denied access on all of the file attributes and
> wouldn't be able to ship it over the wire properly.

OK. I haven't had to do anything with kernel threads so far.
Where is NFS setting these up? Poking around fs/nfsd looks like
the place, but I haven't seen anything there that makes it look
like they would be running without capabilities. Clearly, that's
what I'm seeing. It looks as if the credential of nfsd does not
match what /proc reports. Bother.


> I'm not sure what you need to do but you'll probably have to work this
> out. We have a usage mode in the IETF spec which has a non-mac
> enforcing server which still support object labeling. In the SELinux
> case it works for us since kernel_t can access anything. Ideally when
> RPCSECGSSv3 is finished and merged we'll be able to choose whether to
> use the label of the process on the client side or kernel_t for the
> server if its not available.
>
>>> Do you have a disto that I can use that has full smack integration and
>>> is easy to setup?
>>
>> There's no full integration, but Ubuntu is easy to set up because they
>> compile in all the LSMs.
>> Set "security=smack" on the boot line in grub.cfg and reboot.
>>
>> All processes and files will get the floor ("_") label unless you change
>> one. You can change
>> a file label with:
>>      # attr -S -s SMACK64 WhooHoo path
>> or execute at a different label with:
>>     # (echo WhooHoo > /proc/self/attr/current ; command)
>>
>
> I'm not out of here until really late tonight so getting an Ubuntu VM
> setup probably won't happen until sometime next week when everything
> calms down. However I think we isolated the problem above. If I'm
> correct this is strictly a smack labeling problem. I don't know if you
> need to put some code into smack to init kernel threads with a more
> powerful label or not so I'll leave it up to you on how to address this.
>
>
> Dave
>


WARNING: multiple messages have this Message-ID (diff)
From: Casey Schaufler <casey@schaufler-ca.com>
To: David Quigley <dpquigl@davequigley.com>
Cc: bfields@fieldses.org, trond.myklebust@netapp.com,
	sds@tycho.nsa.gov, linux-nfs@vger.kernel.org,
	selinux@tycho.nsa.gov, linux-security-module@vger.kernel.org
Subject: Re: Labeled NFS [v5]
Date: Thu, 29 Nov 2012 17:50:10 -0800	[thread overview]
Message-ID: <50B810D2.2000401@schaufler-ca.com> (raw)
In-Reply-To: <579e850139bd3d5a0c9155270d5d9fbe@countercultured.net>

On 11/29/2012 4:46 PM, David Quigley wrote:
> On 11/29/2012 19:34, Casey Schaufler wrote:
>> On 11/29/2012 4:07 PM, David Quigley wrote:
>>> On 11/29/2012 17:28, Casey Schaufler wrote:
>>>> On 11/28/2012 6:08 PM, Casey Schaufler wrote:
>>>>> On 11/28/2012 5:14 PM, Dave Quigley wrote:
>>>>>> On 11/28/2012 1:57 PM, Casey Schaufler wrote:
>>>>>>> On 11/20/2012 7:28 PM, Dave Quigley wrote:
>>>>>>>> On 11/20/2012 9:52 PM, Casey Schaufler wrote:
>>>>>>>>> On 11/20/2012 4:37 PM, Dave Quigley wrote:
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Or I could just give you this link and you should be good to
>>>>>>>>>> go ;)
>>>>>>>>>>
>>>>>>>>>> http://www.selinuxproject.org/~dpquigl/nfs-utils-rpms/
>>>>>>>>>>
>>>>>>>>>> I haven't tried it but it should work. If it doesn't let me
>>>>>>>>>> know and
>>>>>>>>>> i'll try to fix it on my end. I'd imagine you might need to yum
>>>>>>>>>> remove
>>>>>>>>>> nfs-utils first before adding this new one or you could also
>>>>>>>>>> try an
>>>>>>>>>> rpm with the upgrade flag for this instead. Good luck.
>>>>>>> ...
>>>>>>>
>>>>>>>
>>>>>>> I've tried on Fedora17 and Ubuntu12.04, and I'm getting the
>>>>>>> attached stack trace on mount. After mounting I'm getting
>>>>>>> denials when I should, but also when I shouldn't.
>>>>>>>
>>>>>>> I've tried tracking down the issue, but there's a lot going on
>>>>>>> that I don't find obvious. I added a dentry_init hook just for
>>>>>>> grins, but it's not getting called.
>>>>>>>
>>>>>>> .
>>>>>>>
>>>>>>>
>>>>>> Any chance of you throwing a kickstart file my way that's configured
>>>>>> with SMACK so I can use it for a test box (both server and
>>>>>> client)? I
>>>>>> can have the guys working with me test for SMACK as well if you
>>>>>> provide an appropriate test harness and image for testing.
>>>>> I've attached the .config from my Fedora17 machine. Who knows, maybe
>>>>> I got something wrong there. I get the error doing the test on the
>>>>> loopback interface (mount -t nfs4 localhist:/ /mnt).
>>>>
>>>> I've done some instrumentation and security_ismaclabel() is getting
>>>> called with "selinux", but never "SMACK64". I would guess that
>>>> somewhere
>>>> in the tools you're telling the kernel to expect "selinux". Where is
>>>> that, so that I can tell it to try "SMACK64" instead?
>>>>
>>>>
>>>>
>>>> -- 
>>>> 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.
>>>
>>>
>>> What tools do you use in SMACK to see the labels?
>>
>> attr -S -g SMACK64 <path>
>
> ok so that seems to work for SELinux as well. Never knew about that.
> I'd always just rip the xattr out of the inode with getfattr.
>
>
>>
>>> Do you just use getxattr? If so can you try calling that and seeing
>>> what happens? I'm concerned that you aren't getting any attribute
>>> information on that file.
>>
>> I would think that were it not for the case that access is denied
>> and I get an audit record for nfsd that reports a subject label of "_"
>> (which is correct for nfsd but not the process attempting access) and
>> an object label of "WhooHoo", which is correct. The server side
>> looks like it might be working right, given the information that it
>> has.
>>
>
> Ok so this is the problem. nfsd is a kernel thread I believe. In
> SELinux land it has the type kernel_t which is all powerful. We don't
> have client label transport yet (That requires RPCSECGSSv3). Is there
> a way you can have that kernel thread running as a type that has
> access to everything?

That would be having CAP_MAC_ADMIN and CAP_MAC_OVERRIDE in Smackese.
Looking at /proc/<pid-of-nfsd>/status we see CapEff of fff...fff which
is to say, all capabilities.
 

> I think that is the current problem. Which makes perfect sense. If
> your kernel threads don't get started with max privilege then the
> server would be denied access on all of the file attributes and
> wouldn't be able to ship it over the wire properly.

OK. I haven't had to do anything with kernel threads so far.
Where is NFS setting these up? Poking around fs/nfsd looks like
the place, but I haven't seen anything there that makes it look
like they would be running without capabilities. Clearly, that's
what I'm seeing. It looks as if the credential of nfsd does not
match what /proc reports. Bother.


> I'm not sure what you need to do but you'll probably have to work this
> out. We have a usage mode in the IETF spec which has a non-mac
> enforcing server which still support object labeling. In the SELinux
> case it works for us since kernel_t can access anything. Ideally when
> RPCSECGSSv3 is finished and merged we'll be able to choose whether to
> use the label of the process on the client side or kernel_t for the
> server if its not available.
>
>>> Do you have a disto that I can use that has full smack integration and
>>> is easy to setup?
>>
>> There's no full integration, but Ubuntu is easy to set up because they
>> compile in all the LSMs.
>> Set "security=smack" on the boot line in grub.cfg and reboot.
>>
>> All processes and files will get the floor ("_") label unless you change
>> one. You can change
>> a file label with:
>>      # attr -S -s SMACK64 WhooHoo path
>> or execute at a different label with:
>>     # (echo WhooHoo > /proc/self/attr/current ; command)
>>
>
> I'm not out of here until really late tonight so getting an Ubuntu VM
> setup probably won't happen until sometime next week when everything
> calms down. However I think we isolated the problem above. If I'm
> correct this is strictly a smack labeling problem. I don't know if you
> need to put some code into smack to init kernel threads with a more
> powerful label or not so I'll leave it up to you on how to address this.
>
>
> Dave
>


--
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.

  reply	other threads:[~2012-11-30  1:50 UTC|newest]

Thread overview: 154+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-12  6:15 Labeled NFS [v5] David Quigley
2012-11-12  6:15 ` David Quigley
2012-11-12  6:15 ` [PATCH 01/13] Security: Add hook to calculate context based on a negative dentry David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12 12:13   ` J. Bruce Fields
2012-11-12 14:52     ` Dave Quigley
2012-11-12 14:52       ` Dave Quigley
2012-11-12  6:15 ` [PATCH 02/13] Security: Add Hook to test if the particular xattr is part of a MAC model David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12 12:15   ` J. Bruce Fields
2012-11-12 14:56     ` Dave Quigley
2012-11-12 14:56       ` Dave Quigley
2012-11-12 16:36       ` J. Bruce Fields
2012-11-12 19:36         ` David P. Quigley
2012-11-12 19:36           ` David P. Quigley
2012-11-12 21:43           ` J. Bruce Fields
2012-11-13  0:12             ` Dave Quigley
2012-11-13  0:12               ` Dave Quigley
2012-11-12  6:15 ` [PATCH 03/13] LSM: Add flags field to security_sb_set_mnt_opts for in kernel mount data David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 04/13] SELinux: Add new labeling type native labels David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 05/13] KConfig: Add KConfig entries for Labeled NFS David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12 14:45   ` J. Bruce Fields
2012-11-12 14:57     ` Dave Quigley
2012-11-12 14:57       ` Dave Quigley
2012-11-12  6:15 ` [PATCH 06/13] NFSv4: Add label recommended attribute and NFSv4 flags David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 07/13] NFSv4: Introduce new label structure David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12 15:13   ` J. Bruce Fields
2012-11-12 15:32     ` David P. Quigley
2012-11-12 15:32       ` David P. Quigley
2012-11-12 16:05       ` J. Bruce Fields
2012-11-12 16:53         ` David P. Quigley
2012-11-12 16:53           ` David P. Quigley
2012-11-12 17:50           ` J. Bruce Fields
2012-11-12  6:15 ` [PATCH 08/13] NFSv4: Extend fattr bitmaps to support all 3 words David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 09/13] NFS:Add labels to client function prototypes David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 10/13] NFS: Add label lifecycle management David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12 15:33   ` J. Bruce Fields
2012-11-12 15:36     ` David P. Quigley
2012-11-12 15:36       ` David P. Quigley
2012-11-12  6:15 ` [PATCH 11/13] NFS: Client implementation of Labeled-NFS David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 12/13] NFS: Extend NFS xattr handlers to accept the security namespace David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12  6:15 ` [PATCH 13/13] NFSD: Server implementation of MAC Labeling David Quigley
2012-11-12  6:15   ` David Quigley
2012-11-12 16:31   ` J. Bruce Fields
2012-11-12 15:23 ` Labeled NFS [v5] J. Bruce Fields
2012-11-12 15:34   ` David P. Quigley
2012-11-12 15:34     ` David P. Quigley
2012-11-12 16:09     ` J. Bruce Fields
2012-11-12 20:56       ` Steve Dickson
2012-11-13  1:39         ` Dave Quigley
2012-11-13  1:39           ` Dave Quigley
2012-11-13 12:55           ` Steve Dickson
2012-11-14  4:32             ` Dave Quigley
2012-11-14  4:32               ` Dave Quigley
2012-11-14 13:45               ` J. Bruce Fields
2012-11-14 13:50                 ` David Quigley
2012-11-14 13:50                   ` David Quigley
2012-11-14 13:59                   ` J. Bruce Fields
2012-11-14 14:01                     ` David Quigley
2012-11-14 14:01                       ` David Quigley
2012-11-14 14:04                     ` David Quigley
2012-11-14 14:04                       ` David Quigley
2012-11-14 14:24                       ` J. Bruce Fields
2012-11-14 14:30                         ` David Quigley
2012-11-14 14:30                           ` David Quigley
2012-11-15 16:00                           ` Casey Schaufler
2012-11-15 16:00                             ` Casey Schaufler
2012-11-15 20:28                             ` David Quigley
2012-11-15 20:28                               ` David Quigley
2012-11-16  3:34                               ` Casey Schaufler
2012-11-16  3:34                                 ` Casey Schaufler
2012-11-16  3:43                                 ` David Quigley
2012-11-16  3:43                                   ` David Quigley
2012-11-16  4:58                                   ` Dave Quigley
2012-11-16  4:58                                     ` Dave Quigley
2012-11-16  4:59                                   ` Dave Quigley
2012-11-16  4:59                                     ` Dave Quigley
2012-11-14 13:56               ` David Quigley
2012-11-14 13:56                 ` David Quigley
2012-11-12 16:33 ` J. Bruce Fields
2012-11-12 20:44   ` Dave Quigley
2012-11-12 20:44     ` Dave Quigley
2012-11-12 22:23 ` Casey Schaufler
2012-11-12 22:23   ` Casey Schaufler
2012-11-13  3:16   ` Dave Quigley
2012-11-13  3:16     ` Dave Quigley
2012-11-20 21:09 ` Casey Schaufler
2012-11-20 21:09   ` Casey Schaufler
2012-11-21  0:04   ` Dave Quigley
2012-11-21  0:04     ` Dave Quigley
2012-11-21  0:29     ` Dave Quigley
2012-11-21  0:29       ` Dave Quigley
2012-11-21  0:32     ` Casey Schaufler
2012-11-21  0:32       ` Casey Schaufler
2012-11-21  0:37       ` Dave Quigley
2012-11-21  0:37         ` Dave Quigley
2012-11-21  2:52         ` Casey Schaufler
2012-11-21  2:52           ` Casey Schaufler
2012-11-21  3:28           ` Dave Quigley
2012-11-21  3:28             ` Dave Quigley
2012-11-28 18:57             ` Casey Schaufler
2012-11-29  1:14               ` Dave Quigley
2012-11-29  1:14                 ` Dave Quigley
2012-11-29  2:08                 ` Casey Schaufler
2012-11-29 22:28                   ` Casey Schaufler
2012-11-29 22:28                     ` Casey Schaufler
2012-11-29 22:49                     ` David Quigley
2012-11-29 22:49                       ` David Quigley
2012-11-30  0:02                       ` David Quigley
2012-11-30  0:02                         ` David Quigley
2012-11-30  0:07                     ` David Quigley
2012-11-30  0:07                       ` David Quigley
2012-11-30  0:34                       ` Casey Schaufler
2012-11-30  0:34                         ` Casey Schaufler
2012-11-30  0:46                         ` David Quigley
2012-11-30  0:46                           ` David Quigley
2012-11-30  1:50                           ` Casey Schaufler [this message]
2012-11-30  1:50                             ` Casey Schaufler
2012-11-30  2:02                             ` David Quigley
2012-11-30  2:02                               ` David Quigley
2012-11-30 12:14                               ` J. Bruce Fields
2012-11-30 12:57                                 ` David Quigley
2012-11-30 12:57                                   ` David Quigley
2012-11-30 13:17                                   ` David Quigley
2012-11-30 13:17                                     ` David Quigley
2012-11-30 13:28                                     ` Stephen Smalley
2012-11-30 13:28                                       ` Stephen Smalley
2012-11-30 13:35                                       ` David Quigley
2012-11-30 13:35                                         ` David Quigley
2012-11-30 13:50                                         ` Stephen Smalley
2012-11-30 13:50                                           ` Stephen Smalley
2012-11-30 14:02                                           ` David Quigley
2012-11-30 14:02                                             ` David Quigley
2012-11-30 16:21                                             ` Casey Schaufler
2012-11-30 16:21                                               ` Casey Schaufler
2012-11-30 16:28                                               ` David Quigley
2012-11-30 16:28                                                 ` David Quigley
2012-12-03 18:27                                             ` Casey Schaufler
2012-12-03 18:27                                               ` Casey Schaufler
2012-11-30 16:55                                           ` J. Bruce Fields
2012-11-30 16:59                                             ` David Quigley
2012-11-30 16:59                                               ` David Quigley
2012-11-30 13:20                                 ` David Quigley
2012-11-30 13:20                                   ` David Quigley

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=50B810D2.2000401@schaufler-ca.com \
    --to=casey@schaufler-ca.com \
    --cc=bfields@fieldses.org \
    --cc=dpquigl@davequigley.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=sds@tycho.nsa.gov \
    --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.