Bug 917157

Summary: SELinux blocks Nagios/NRPE plugins which use sudo
Product: Red Hat Enterprise Linux 6 Reporter: James Ralston <ralston>
Component: selinux-policyAssignee: Miroslav Grepl <mgrepl>
Status: CLOSED ERRATA QA Contact: Michal Trunecka <mtruneck>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4CC: dwalsh, ebenes, jasonmc, lehn, mmalik, mtruneck, qe-baseos-security
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: selinux-policy-3.7.19-210.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1230670 (view as bug list) Environment:
Last Closed: 2013-11-21 10:18:43 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1212796    

Description James Ralston 2013-03-01 21:10:58 UTC
We use Nagios and NRPE to monitor our servers, and we have written some of our own plug-ins for Nagios.

For example, we have a plugin called service-status. It calls the "status" action of the init.d script for the supplied service to determine the health of the service. In most cases, this is superior to (e.g.) grepping the process table in order to determine whether a service is running correctly.

Because some init.d scripts can't properly perform the status() check unless they are run as root, NRPE calls the plugin via sudo, like so:

$ cat /etc/nrpe.d/service-status.cfg
## $ARG1$ = service name
command[service-status]=sudo /usr/libexec/nagios/plugins/service-status $ARG1$

But SELinux policy does not permit nrpe_t to execute sudo:

$ ausearch -m avc -ts today | grep sudo | audit2allow
#============= nrpe_t ==============
allow nrpe_t self:capability audit_write;
allow nrpe_t self:netlink_audit_socket { nlmsg_relay create };
allow nrpe_t sudo_exec_t:file { read getattr open execute execute_no_trans };

I see nothing in the nagios_selinux(8) or nrpe_selinux(8) man pages that provides a mechanism to address this. (Setting the file context on /etc/nrpe.d/service-status.cfg won't help, because nrpe doesn't exec it; nrpe merely reads it.)

We need to have the ability (via a SELinux boolean value, perhaps?) to tell SELinux that it's permissible for nrpe_t to execute sudo.

Versions:

selinux-policy-targeted-3.7.19-195.el6_4.1.noarch

Comment 1 Daniel Walsh 2013-03-04 16:59:42 UTC
Would this policy work?

dontaudit nrpe_t self:capability audit_write;
dontaudit nrpe_t self:netlink_audit_socket { nlmsg_relay create };
can_exec(nrpe_t, sudo_exec_t)

Comment 2 James Ralston 2013-03-05 06:53:22 UTC
Hmmm. I created a module to implement the above policy. It almost works, but sudo fails unless it can call sys_ptrace:

type=SYSCALL msg=audit(1362463802.168:100485): arch=c000003e syscall=0 success=yes exit=225 a0=3 a1=7f4904602000 a2=400 a3=22 items=0 ppid=4361 pid=4362 auid=20576 uid=497 gid=497 euid=0 suid=0 fsuid=0 egid=497 sgid=497 fsgid=497 tty=(none) ses=2533 comm="sudo" exe="/usr/bin/sudo" subj=system_u:system_r:nrpe_t:s0 key=(null)

type=AVC msg=audit(1362463802.168:100485): avc:  denied  { sys_ptrace } for  pid=4362 comm="sudo" capability=19  scontext=system_u:system_r:nrpe_t:s0 tcontext=system_u:system_r:nrpe_t:s0 tclass=capability

If I change the policy to:

allow nrpe_t self:capability sys_ptrace;
dontaudit nrpe_t self:capability audit_write;
dontaudit nrpe_t self:netlink_audit_socket { nlmsg_relay create };
can_exec(nrpe_t, sudo_exec_t)

...then I see no avc denials.

I'm not sure why sudo needs ptrace, but in enforcing mode, it fails if it doesn't have it.

Comment 4 Sebastian Lehn 2013-08-14 13:50:46 UTC
Is it possible to get the hotfixed version selinux-policy-3.7.19-210.el6 ?

Comment 6 Sebastian Lehn 2013-08-14 14:41:03 UTC
(In reply to Milos Malik from comment #5)
> http://people.redhat.com/dwalsh/SELinux/RHEL6/noarch/

Thanks for the url. Version selinux-policy-targeted-3.7.19-211.el6 works for me.
I hope to see an official update during the next days.

Comment 7 Daniel Walsh 2013-08-14 15:05:27 UTC
That is the package that should be in RHEL6.5

Comment 9 errata-xmlrpc 2013-11-21 10:18:43 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-1598.html