netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kyle Moffett <kyle@moffetthome.net>
To: Michael Stone <michael@laptop.org>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	"Andi Kleen" <andi@firstfloor.org>, "David Lang" <david@lang.hm>,
	"Oliver Hartkopp" <socketcan@hartkopp.net>,
	"Alan Cox" <alan@lxorguk.ukuu.org.uk>,
	"Herbert Xu" <herbert@gondor.apana.org.au>,
	"Valdis Kletnieks" <Valdis.Kletnieks@vt.edu>,
	"Bryan Donlan" <bdonlan@gmail.com>,
	"Evgeniy Polyakov" <zbr@ioremap.net>,
	"C. Scott Ananian" <cscott@cscott.net>,
	"James Morris" <jmorris@namei.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	"Bernie Innocenti" <bernie@codewiz.org>,
	"Mark Seaborn" <mrs@mythic-beasts.com>,
	"Randy Dunlap" <randy.dunlap@oracle.com>,
	"Américo Wang" <xiyou.wangcong@gmail.com>,
	"Tetsuo Handa" <penguin-kernel@i-love.sakura.ne.jp>,
	"Samir Bellabes" <sam@synack.fr>,
	"Casey Schaufler" <casey@schaufler-ca.com>,
	"Serge E. Hallyn" <serue@us.ibm.com>,
	"Pavel Machek" <pavel@ucw.cz>
Subject: Re: disablenetwork (v5) patches
Date: Sun, 17 Jan 2010 16:17:17 -0500	[thread overview]
Message-ID: <f73f7ab81001171317y39aec7b2s3f8bce4c689fa82@mail.gmail.com> (raw)
In-Reply-To: <20100117180728.GA2848@heat>

On Sun, Jan 17, 2010 at 13:07, Michael Stone <michael@laptop.org> wrote:
> Kyle Moffett wrote:
>> I have some time this week to split out my SELinux policy build
>> machinery; I will pull out a standalone set of files to build the
>> policy and do some extra testing on one of my bog-standard Debian
>> boxes and then send it all out again.
>
> Questions:
>
>  1) Your patch seems to rely on a chunk of custom policy. Can this chunk of
>     policy coexist without modification with pre-existing policies like the
>     ones Fedora ships?
>
>     If I understand correctly, the answer is "not as it is written today", for
>     a couple of reasons:

Essentially, yes, the policy that I gave is an extremely limited
system.  If you wanted to constrain your application as installed on a
standard Fedora system, that would involve getting a much more
detailed policy merged in the selinux-refpolicy project.  The plusses
are that such a policy would protect against far more complex attacks
than simple network data exposure, however the policy to protect
against such attacks is far more complex as well.

Basically, I wrote that sample policy as a completely standalone
example of how to use the SELinux machinery to enforce a limited
arbitrary set of restrictions based on your stated requirements.

There has been some partially-stalled work to create a "userspace
policy server" and "hierarchical policy", essentially a mechanism by
which a program (running under a specific type) could sub-divide
itself into additional types bounded by the constraints on the
original type.  Unfortunately I haven't had a chance to look into it
in quite a while, so things may have changed significantly.


>  2) How can an application author test whether or not the contexts defined by
>     this policy are defined in the currently loaded policy?

The standard method for adding SELinux support to an application is
pretty much the same method that you use to enhance security in the
absence of SELinux:  Divide your program into multiple executables
with discrete DAC-enforced privileges (a la postfix).

Then the SELinux policy simply places a different label on each
executable (and via a type_transition rule on the process which is
*started* from that executable).  Each label is then neatly bound by
least-privilege type-based allow rules.


>  3) Your policy relies on defining new roles for objects, regular processes,
>     and network disabled processes. This is definitely a nice reuse of SELinux
>     machinery. Unfortunately, I'm not sure how, as an app author, I'm supposed
>     to use it.
>
> [...code for using dyntransition...]

You can do it that way, although I would certainly suggest an
appropriate config file somewhere to specify what label the software
should attempt to transition to.  The SELinux libraries have some code
for performing dynamic transitions, although as I indicated most
processes don't use them.

Really the preferred way to take advantage of SELinux is simply to
divide the program tasks securely across multiple executables and then
use the SELinux policy to lock them down individually.


>  4) If I understand correctly, the policy you specified actually restricts
>     network access by blacklisting various socket calls by protocol stack.
>     Thus, AF_UNIX socket calls are unrestricted while TCP bind() and connect()
>     and UDP bind(), connect(), and sendto() are restricted.
>
>     I'm uncomfortable with a design based on protocol blacklisting because I
>     think that it is likely to break silently whenever someone adds a new
>     protocol (e.g. SCTP) to the kernel.
>
>     Presumably, though, this is fairly straightforward to fix?

Yes, it's pretty easy to change specifically which access-vectors you
restrict.  If localhost-based accesses are OK, then you could use the
netif and peer-based access controls (possibly with a couple of
optional iptables rules).  That would simply restrict your ability to
send packets out of the computer, regardless of what protocol they
use.

Alternatively there are SELinux mechanisms in recent kernels to
influence whether or not "unknown" access-vectors are allowed (IE:
Those which the kernel understands but the policy does not).

>  5) If I understand correctly, your policy restricts all uses of sendto()
>     including sendto() on previously connected UDP sockets. Unfortunately,
>     this restriction is too strong: the ability to sendto() on previously
>     connected sockets UDP is a design goal.
>     How might we address this problem?

See above, simply restrict with network peer controls.


>  6) Can SELinux be turned on at all on kernels which do not support POSIX
>     extended attributes?

My understanding is that the kernel always supported extended
attributes, but that some filesystems may have support turned off.
You can certainly turn on SELinux on such a system, but you would be
unable to label things on a per-file basis.


>  7) Can you point me toward any measurements on what it costs (specifically in
>     terms of memory and disk usage) to add basic SELinux support plus this
>     policy to an embedded kernel and OS distro which doesn't presently ship
>     any SELinux-related material like, e.g., the distros for the Linksys
>     WRT54G and for the XO?

I don't have such measurements offhand.  If you are shipping a
pre-built policy and do not include any of the tools needed to reload
or modify it then all you really need is an /sbin/init which can mount
/selinux and copy a binary policy file to a virtual file therein.  The
actual dev tools are rather unfortunately large and slow right now,
especially with the full reference policy.

Cheers,
Kyle Moffett
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2010-01-17 21:17 UTC|newest]

Thread overview: 157+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-27  1:04 RFC: disablenetwork facility. (v4) Michael Stone
2009-12-27  1:06 ` [PATCH 1/3] Security: Add disablenetwork interface. (v4) Michael Stone
2009-12-27  3:26   ` Serge E. Hallyn
2009-12-28 18:13     ` Serge E. Hallyn
2009-12-29  1:21       ` Michael Stone
2009-12-29  5:26         ` Serge E. Hallyn
2009-12-27  7:53   ` Pavel Machek
2009-12-29  1:25     ` Michael Stone
2009-12-30 10:09       ` Pavel Machek
2009-12-30 18:47   ` Serge E. Hallyn
2009-12-27  1:06 ` [PATCH 2/3] Security: Implement disablenetwork semantics. (v4) Michael Stone
2009-12-27  1:20   ` Tetsuo Handa
2009-12-30 18:50   ` Serge E. Hallyn
2010-01-01 14:31     ` Pavel Machek
2010-01-10 21:11       ` James Morris
2010-01-10 21:16         ` Pavel Machek
2010-01-10 21:44           ` James Morris
2010-01-10 21:54         ` Michael Stone
2010-01-10 21:58           ` Pavel Machek
2010-01-10 22:40             ` Michael Stone
2010-01-11  1:07               ` Tetsuo Handa
2010-01-11  1:45                 ` Michael Stone
2010-01-11 17:49                   ` Serge E. Hallyn
2010-01-12  6:10                     ` Michael Stone
2010-01-12 15:52                       ` Serge E. Hallyn
2010-01-14  9:23                         ` Pavel Machek
2010-01-14 15:00                           ` Serge E. Hallyn
2010-01-14 16:36                             ` Michael Stone
2010-01-14 16:47                               ` Serge E. Hallyn
     [not found]                                 ` <20100114171309.GA6372@heat>
2010-01-14 17:36                                   ` Serge E. Hallyn
2010-01-15  8:10                                     ` disablenetwork (v5) patches Michael Stone
2010-01-15  8:12                                       ` disablenetwork (v5): Remove a TOCTTOU race by passing flags by value Michael Stone
2010-01-15  8:12                                       ` disablenetwork (v5): Simplify the disablenetwork sendmsg hook Michael Stone
2010-01-15  8:13                                       ` disablenetwork (v5): Require CAP_SETPCAP to enable disablenetwork Michael Stone
2010-01-17  2:58                                         ` Andrew G. Morgan
     [not found]                                           ` <20100117044825.GA2712@heat>
2010-01-17  4:58                                             ` disablenetwork (v5): Require CAP_SETPCAP to enable Andrew G. Morgan
2010-01-18 19:30                                               ` Serge E. Hallyn
2010-01-15  8:13                                       ` disablenetwork (v5): Update documentation for PR_NETWORK_ENABLE_DN Michael Stone
2010-01-17  6:01                                       ` disablenetwork (v5) patches Kyle Moffett
     [not found]                                         ` <20100117180728.GA2848@heat>
2010-01-17 21:17                                           ` Kyle Moffett [this message]
2010-01-11  1:46                 ` [PATCH 2/3] Security: Implement disablenetwork semantics. (v4) Casey Schaufler
2010-01-12  3:19                   ` Valdis.Kletnieks
2010-01-12  4:01                     ` Casey Schaufler
2010-01-11 12:01               ` Pavel Machek
2010-01-12  2:54             ` Valdis.Kletnieks
2010-01-12  7:59               ` Pavel Machek
2010-01-12 14:28                 ` Valdis.Kletnieks
2010-01-14  9:22                   ` Pavel Machek
2010-01-18 12:54                     ` Valdis.Kletnieks
2010-01-18 15:56                       ` Andrew G. Morgan
2010-01-10 22:18           ` Kyle Moffett
2010-01-10 23:08             ` Michael Stone
2010-01-10 23:41               ` Bryan Donlan
2010-01-11  1:50                 ` Casey Schaufler
2010-01-11  2:15                   ` Bryan Donlan
2010-01-11 11:53                     ` Pavel Machek
2010-01-10 22:58           ` James Morris
2009-12-27  1:07 ` [PATCH 3/3] Security: Document disablenetwork. (v4) Michael Stone
2009-12-27  1:39   ` Tetsuo Handa
2009-12-27 16:25     ` Michael Stone
2009-12-27  8:36 ` RFC: disablenetwork facility. (v4) Tetsuo Handa
2009-12-27  8:38   ` Pavel Machek
2009-12-27 11:49     ` Tetsuo Handa
2009-12-27 12:18       ` Al Viro
2009-12-27 15:03       ` Serge E. Hallyn
2009-12-27 15:47         ` Michael Stone
2009-12-27 16:12           ` Serge E. Hallyn
2009-12-27 16:36             ` Michael Stone
2009-12-27 18:06               ` Pavel Machek
2009-12-27 19:08         ` Pavel Machek
2009-12-28  6:07           ` Michael Stone
2009-12-28 10:10             ` Pavel Machek
2009-12-28 14:37               ` Valdis.Kletnieks
2009-12-28 20:55                 ` Pavel Machek
2009-12-28 21:28                   ` Valdis.Kletnieks
2009-12-28 21:33                   ` Bryan Donlan
2009-12-29  6:08                     ` Serge E. Hallyn
2010-01-01 15:06                     ` Pavel Machek
2009-12-28 16:31               ` Michael Stone
2009-12-28 21:08                 ` Pavel Machek
2009-12-28 21:24                 ` Valdis.Kletnieks
2009-12-28 18:13           ` Serge E. Hallyn
2009-12-29  5:01             ` Michael Stone
2009-12-29  5:56               ` Serge E. Hallyn
2009-12-29 16:31                 ` Michael Stone
2009-12-29 11:06               ` Eric W. Biederman
2009-12-29 15:11                 ` Serge E. Hallyn
2009-12-29 16:05                   ` Bryan Donlan
2009-12-29 16:39                     ` Serge E. Hallyn
2009-12-29 17:01                       ` Bryan Donlan
2009-12-29 18:36                         ` Eric W. Biederman
2009-12-29 19:08                           ` Bryan Donlan
2009-12-29 20:56                             ` Eric W. Biederman
2009-12-29 21:27                             ` Serge E. Hallyn
2009-12-29 21:46                               ` Valdis.Kletnieks
2009-12-29 22:16                                 ` Serge E. Hallyn
2009-12-29 20:10                     ` Benny Amorsen
2009-12-29 20:40                       ` Eric W. Biederman
2009-12-29 20:43                         ` Bryan Donlan
2009-12-29 21:11                         ` Alan Cox
2009-12-29 21:14                           ` Bryan Donlan
2009-12-29 21:35                             ` Alan Cox
2009-12-29 21:29                           ` Eric W. Biederman
2009-12-29 22:36                             ` Serge E. Hallyn
2009-12-30  3:26                               ` Eric W. Biederman
2009-12-30  3:50                                 ` Serge E. Hallyn
2009-12-30  4:29                                   ` Eric W. Biederman
2009-12-30 18:00                                     ` Serge E. Hallyn
2009-12-30 21:12                                       ` Eric W. Biederman
2009-12-30  3:35                               ` [RFC][PATCH] Unprivileged: Disable acquisition of privileges Eric W. Biederman
2009-12-30  3:54                                 ` Bryan Donlan
2009-12-30  4:33                                   ` Eric W. Biederman
2009-12-30  4:57                                     ` Bryan Donlan
2009-12-30 12:47                                       ` Eric W. Biederman
2009-12-30 12:49                                       ` [RFC][PATCH v2] Unprivileged: Disable raising " Eric W. Biederman
2009-12-30 14:52                                         ` Andrew G. Morgan
2009-12-30 18:35                                           ` Serge E. Hallyn
2009-12-30 20:07                                             ` Eric W. Biederman
2009-12-30 20:17                                               ` Serge E. Hallyn
2009-12-30 21:15                                                 ` [RFC][PATCH v3] " Eric W. Biederman
2009-12-30 21:29                                                   ` Alan Cox
2009-12-30 21:36                                                     ` Eric W. Biederman
2009-12-30 23:00                                                       ` Alan Cox
2009-12-31  2:44                                                         ` Bryan Donlan
2009-12-31 17:33                                                           ` Alan Cox
2009-12-31 17:52                                                             ` Serge E. Hallyn
2009-12-31 18:20                                                               ` Andrew G. Morgan
2009-12-31 18:32                                                                 ` Eric W. Biederman
2010-01-01 14:43                                                                   ` Alan Cox
2010-01-01 14:53                                                                     ` Pavel Machek
2010-01-01 16:26                                                                     ` Eric W. Biederman
2010-01-01 21:35                                                                       ` Casey Schaufler
2010-01-01 22:39                                                                         ` Alan Cox
2010-01-01 23:18                                                                           ` Casey Schaufler
2010-01-02  0:42                                                                           ` Peter Dolding
     [not found]                                                                             ` <4B3FB0FC.3030809@schaufler-ca.com>
2010-01-03  1:43                                                                               ` Peter Dolding
2009-12-31 18:41                                                                 ` Eric W. Biederman
2009-12-31 21:46                                                                   ` Serge E. Hallyn
2010-01-01 21:17                                                                   ` Andrew G. Morgan
2010-01-01 14:57                                                               ` Alan Cox
2009-12-31  8:57                                                         ` Eric W. Biederman
2009-12-31 13:00                                                         ` Samir Bellabes
2009-12-31 14:08                                                           ` Peter Dolding
2009-12-31 17:06                                                             ` Alan Cox
2010-01-01  0:12                                                               ` Peter Dolding
2010-01-01 10:28                                                     ` Pavel Machek
2009-12-31 15:25                                                   ` Serge E. Hallyn
2009-12-31 16:48                                                     ` Eric W. Biederman
2009-12-30 18:29                                         ` [RFC][PATCH v2] " Serge E. Hallyn
2009-12-30 20:45                                           ` Eric W. Biederman
2009-12-29 18:03                   ` RFC: disablenetwork facility. (v4) Eric W. Biederman
2009-12-29 16:06                 ` Michael Stone
2010-01-01 15:11               ` Pavel Machek
2009-12-27  8:51   ` Al Viro
2009-12-27 11:23   ` Valdis.Kletnieks
2009-12-27 12:45   ` Andi Kleen
2009-12-27 15:55   ` Michael Stone

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=f73f7ab81001171317y39aec7b2s3f8bce4c689fa82@mail.gmail.com \
    --to=kyle@moffetthome.net \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=andi@firstfloor.org \
    --cc=bdonlan@gmail.com \
    --cc=bernie@codewiz.org \
    --cc=casey@schaufler-ca.com \
    --cc=cscott@cscott.net \
    --cc=david@lang.hm \
    --cc=ebiederm@xmission.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=michael@laptop.org \
    --cc=mrs@mythic-beasts.com \
    --cc=netdev@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    --cc=randy.dunlap@oracle.com \
    --cc=sam@synack.fr \
    --cc=serue@us.ibm.com \
    --cc=socketcan@hartkopp.net \
    --cc=xiyou.wangcong@gmail.com \
    --cc=zbr@ioremap.net \
    /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).