From: "Christopher J. PeBenito" <cpebenito@tresys.com>
To: Darrel Goeddel <dgoeddel@TrustedCS.com>
Cc: vyekkirala@TrustedCS.com,
"'Karl MacMillan'" <kmacmillan@mentalrootkit.com>,
"'Joshua Brindle'" <jbrindle@tresys.com>,
selinux@tycho.nsa.gov, sds@tycho.nsa.gov
Subject: Re: Denials from newest kernel
Date: Wed, 18 Oct 2006 13:45:10 +0000 [thread overview]
Message-ID: <1161179110.10392.78.camel@sgc> (raw)
In-Reply-To: <45352DCE.7040605@trustedcs.com>
On Tue, 2006-10-17 at 14:23 -0500, Darrel Goeddel wrote:
> Christopher J. PeBenito wrote:
> >>>>This relationship is implicit in that a packet from apache_t can only
> >>>>use an association labeled apache_t. This would be currently shown in the
> >>>>SELinux policy itself as:
> >>>>
> >>>>allow apache_t apache_t:association { sendto };
> >>>>
> >>>>We did talk about moving this "implicit" relationship into the kernel itself
> >>>>essentially eliminating the association indirection for SAs.
> >>>
> >>>
> >>>Exactly, implicit isn't sufficient, because we won't be able to specify
> >>>that http packets can go over the apache association but not dns
> >>>packets.
> >>
> >>Wouldn't the absence of "allow dns_t apache_t:association { sendto };" prevent
> >>dns packets using an apache_t association?
> >
> >
> > What I'm referring in this case is dns client packets; the ones used
> > when a process does a DNS name resolution. I believe you're confusing
> > that with dns server packets which named_t would be sending to answer
> > DNS queries. Apache can do name resolution, so it sends both httpd
> > server packets and dns client packets.
>
> Ahh, gotcha... I think I'll need a little more info on what you're going after
> though. I'll take a stab anyway...
I want to be able to restrict which associations a packet can go over,
specified by TE policy _alone_.
> One option is to modify apache to use setsockcreate to indicate different
> network usages. However, I think what you are really wanting lies in the
> scope of IPSec SPD definitions, not SELinux policy. I'm assuming that you
> are wanting http traffic to use one SA, and dns requests to use another SA
> (If that is not correct, I'll try again). All traffic generated by apache
> will fall within the same equivalence class (apache_t) in the eyes of
> SELinun, so further action there is not feasible. The IPSec
> configuration is able to make a distinction based on other properties
> such as addresses/ports. What I think you want to do in this case is to
> set up SPD as such (very informal pseudo syntax...):
>
> SPD1 localhost dnsserver:53 ipsec out context=...dns_t...
> SPD2 * localhost:80 ipsec in context=...http_t...
>
> you would then allow apache to use both of the SPDs:
>
> allow apache_t { dns_t http_t } association:polmatch;
This is exactly what I'm saying, the above encodes policy into the SPD!
When the question is "how to specify which packets can go over the
association?", the answer should not be "write a SPD rule", it should be
"write a SELinux rule". These SPD entries only configure association
behaviors, but the current implementation makes an implicit relationship
between the packet and the association configuration. Say we change the
first SPD entry to:
SPD1 localhost dnsserver:* ipsec out context=::dns_t
Now http packets can go over the same association as dns packets. Your
first reaction would be "user error: misconfiguration", which would mean
you're encoding the packet->association policy into the SPD. If SELinux
was mediating this correctly, it could still deny http packets from
going over this association.
> >>I think the analogy between ipsec and files isn't working all that well :)
> >>The policy (SELinux policy) must specifically allow for the sock vs SA
> >>polmatch to choose the correct SPD and it must specifically allow for
> >>the sock vs SA sendto to choose the correct SA. If a domain such as
> >>apache_t is allow to sendto SAs of many types (say http1_t, http2_t, etc.)
> >>and SAs already exist for all of those types, it will use the first SA
> >>that it can successfully sendto. This would be analogous to passwd trying
> >>/etc/shadow, /etc/shadow1, ... until it could write a shadow file. In
> >>any case, the policy still governs what can happen. At least this is my
> >>current understanding and that is always subject to change ;)
> >
> >
> > I'm not trying to argue that polmatch is a bad check; I understand its
> > reasons for existing. I'm just saying its insufficient for checking if
> > a packet can go over an association. The above contrived example shows
> > this, since you can't truly tell what you can access without looking at
> > the FC.
>
> IIRC, the polmatch check is used only for choosing the SPD, the sendto check
> is used in determining the specific SA to use.
>
> I think you can tell with certainty what you *can* access, but not what you
> *will* access. What you can access is based on policy. What you will access
> is based on the order in which the SA are looked at - first "match" wins, but
> it still must be allowed via policy.
>
> I should have pointed talked a bit more more about the idea of replacing the
> association:sendto check with a straight up context comparison in the kernel
> for choosing the SA. This removes flexibility, but it also removes some
> complexity.
[cut]
> Would the hardcoded proxy behavior be preferable in your eyes?
No. In fact, Joshua and I were testing and the current SA labeling
behavior is not what I thought it was. The association on both sides of
the connection is currently labeled with the type of the client, e.g.,
for mozilla_t making a new SA while connecting to httpd_t, the
association is labeled mozilla_t on both machines. The current
implementation breaks the idea that the label of the association
represents the domain on the other side of the connection, which is why
the sendto check seems redundant. Mozilla_t should sendto/recvfrom the
httpd_t association, and httpd_t should sendto/recvfrom the mozilla_t
association in this example.
--
Chris PeBenito
Tresys Technology, LLC
(410) 290-1411 x150
--
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.
next prev parent reply other threads:[~2006-10-18 13:45 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-10 14:42 Denials from newest kernel Venkat Yekkirala
2006-10-10 18:33 ` Christopher J. PeBenito
2006-10-10 19:15 ` Venkat Yekkirala
2006-10-10 19:35 ` Karl MacMillan
2006-10-10 19:56 ` Venkat Yekkirala
2006-10-12 18:51 ` Christopher J. PeBenito
2006-10-12 20:06 ` Venkat Yekkirala
2006-10-13 15:06 ` Christopher J. PeBenito
2006-10-13 21:52 ` Venkat Yekkirala
2006-10-16 12:31 ` Christopher J. PeBenito
2006-10-16 13:45 ` Venkat Yekkirala
2006-10-16 13:53 ` Christopher J. PeBenito
2006-10-16 14:16 ` Venkat Yekkirala
2006-10-16 17:26 ` Christopher J. PeBenito
2006-10-16 18:29 ` Venkat Yekkirala
2006-10-16 18:53 ` Paul Moore
2006-10-17 13:56 ` Christopher J. PeBenito
2006-10-17 17:58 ` Darrel Goeddel
2006-10-17 18:22 ` Christopher J. PeBenito
2006-10-17 19:23 ` Darrel Goeddel
2006-10-18 13:45 ` Christopher J. PeBenito [this message]
2006-10-19 15:57 ` Venkat Yekkirala
2006-10-20 12:41 ` Christopher J. PeBenito
2006-10-23 17:42 ` Venkat Yekkirala
2006-10-24 0:44 ` Christopher J. PeBenito
2006-10-13 22:42 ` Paul Moore
2006-10-14 1:00 ` Venkat Yekkirala
2006-10-14 12:13 ` Paul Moore
2006-10-14 19:50 ` Venkat Yekkirala
2006-10-14 20:41 ` Paul Moore
2006-10-14 20:58 ` James Morris
2006-10-14 23:01 ` Venkat Yekkirala
2006-10-16 13:16 ` Christopher J. PeBenito
2006-10-16 14:11 ` Venkat Yekkirala
2006-10-14 7:36 ` James Morris
2006-10-14 12:18 ` Paul Moore
2006-10-14 20:10 ` Venkat Yekkirala
2006-10-10 20:05 ` Christopher J. PeBenito
2006-10-11 14:04 ` Venkat Yekkirala
2006-10-12 7:19 ` James Morris
-- strict thread matches above, loose matches on Subject: below --
2006-10-10 16:28 Venkat Yekkirala
2006-10-10 15:45 Venkat Yekkirala
2006-10-10 14:18 Venkat Yekkirala
2006-10-10 14:42 ` Christopher J. PeBenito
2006-10-09 23:40 Venkat Yekkirala
2006-10-10 0:10 ` Joshua Brindle
2006-10-10 14:07 ` Christopher J. PeBenito
2006-10-10 15:55 ` Joshua Brindle
2006-10-06 21:34 Venkat Yekkirala
2006-10-06 21:17 Venkat Yekkirala
2006-10-09 14:03 ` Joshua Brindle
2006-10-06 21:15 Venkat Yekkirala
2006-10-06 21:31 ` Paul Moore
2006-10-06 20:05 Venkat Yekkirala
2006-10-06 19:43 Venkat Yekkirala
2006-10-06 15:11 Venkat Yekkirala
2006-10-06 15:17 ` Joshua Brindle
2006-10-06 16:25 ` Stephen Smalley
2006-10-06 15:21 ` Stephen Smalley
2006-10-06 15:44 ` Joshua Brindle
2006-10-06 15:56 ` Stephen Smalley
2006-10-06 16:59 ` Karl MacMillan
2006-10-06 18:31 ` Joshua Brindle
2006-10-06 19:04 ` Joshua Brindle
2006-10-06 14:23 Venkat Yekkirala
2006-10-06 14:50 ` Joshua Brindle
2006-10-06 13:45 Venkat Yekkirala
2006-10-06 13:55 ` Joshua Brindle
2006-10-06 14:39 ` Paul Moore
2006-10-06 13:31 Joshua Brindle
2006-10-06 17:32 ` James Morris
2006-10-06 18:41 ` Steve G
2006-10-06 19:50 ` James Morris
2006-10-06 19:56 ` Joshua Brindle
2006-10-06 20:13 ` Christopher J. PeBenito
2006-10-06 19:02 ` Paul Moore
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=1161179110.10392.78.camel@sgc \
--to=cpebenito@tresys.com \
--cc=dgoeddel@TrustedCS.com \
--cc=jbrindle@tresys.com \
--cc=kmacmillan@mentalrootkit.com \
--cc=sds@tycho.nsa.gov \
--cc=selinux@tycho.nsa.gov \
--cc=vyekkirala@TrustedCS.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.