From: Andrea Claudi <aclaudi@redhat.com>
To: netdev@vger.kernel.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
David Ahern <dsahern@gmail.com>
Subject: [PATCH iproute2-next 0/4] make ip vrf exec SELinux-aware
Date: Wed, 23 Aug 2023 19:29:58 +0200 [thread overview]
Message-ID: <cover.1692804730.git.aclaudi@redhat.com> (raw)
In order to execute a service with VRF, a user should start it using
"ip vrf exec". For example, using systemd, the user can encapsulate the
ExecStart command in ip vrf exec as shown below:
ExecStart=/usr/sbin/ip vrf exec vrf1 /usr/sbin/httpd $OPTIONS -DFOREGROUND
Assuming SELinux is in permissive mode, starting the service with the
current ip vrf implementation results in:
# systemctl start httpd
# ps -eafZ | grep httpd
system_u:system_r:ifconfig_t:s0 root 597448 1 1 19:22 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:ifconfig_t:s0 apache 597452 597448 0 19:22 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
[snip]
This is incorrect, as the context for httpd should be httpd_t, not
ifconfig_t.
This happens because ipvrf_exec invokes cmd_exec without setting the
correct SELinux context before. Without the correct setting, the process
is executed using ip's SELinux context.
This patch series makes "ip vrf exec" SELinux-aware using the
setexecfilecon functions, which retrieves the correct context to be used
on the next execvp() call.
After this series:
# systemctl start httpd
# ps -eafZ | grep httpd
system_u:system_r:httpd_t:s0 root 595805 1 0 19:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 595809 595805 0 19:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
Patch series description:
- 1/4 and 2/4 are preliminary changes to make SELinux helper functions
used in ss conformant to the SELinux API definitions;
- 3/4 makes SELinux helper functions into a library, so they can be used
in other iproute tools - such as ip - when iproute is compiled without
SELinux support;
- 4/4, finally, add setexecfilecon to the SELinux stubs, and uses it to
actually set the correct file context for the command to be executed.
Andrea Claudi (4):
ss: make is_selinux_enabled stub work like in SELinux
ss: make SELinux stub functions conformant to API definitions
lib: add SELinux include and stub functions
ip vrf: make ipvrf_exec SELinux-aware
include/selinux.h | 10 ++++++++++
ip/ipvrf.c | 6 ++++++
lib/Makefile | 4 ++++
lib/selinux.c | 37 +++++++++++++++++++++++++++++++++++++
misc/ss.c | 36 ++----------------------------------
5 files changed, 59 insertions(+), 34 deletions(-)
create mode 100644 include/selinux.h
create mode 100644 lib/selinux.c
--
2.41.0
next reply other threads:[~2023-08-23 17:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-23 17:29 Andrea Claudi [this message]
2023-08-23 17:29 ` [PATCH iproute2-next 1/4] ss: make is_selinux_enabled stub work like in SELinux Andrea Claudi
2023-08-23 17:30 ` [PATCH iproute2-next 2/4] ss: make SELinux stub functions conformant to API definitions Andrea Claudi
2023-08-23 17:30 ` [PATCH iproute2-next 3/4] lib: add SELinux include and stub functions Andrea Claudi
2023-08-23 17:30 ` [PATCH iproute2-next 4/4] ip vrf: make ipvrf_exec SELinux-aware Andrea Claudi
2023-08-25 0:40 ` [PATCH iproute2-next 0/4] make ip vrf exec SELinux-aware patchwork-bot+netdevbpf
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=cover.1692804730.git.aclaudi@redhat.com \
--to=aclaudi@redhat.com \
--cc=dsahern@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
/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).