Re: Sudo Changes for SELinux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2008-01-11 at 10:32 -0500, Stephen Smalley wrote:
> On Fri, 2008-01-11 at 09:37 -0500, Daniel J Walsh wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > Stefan Schulze Frielinghaus wrote:
> > > On Thu, 2008-01-10 at 14:23 -0500, Daniel J Walsh wrote:
> > >> -----BEGIN PGP SIGNED MESSAGE-----
> > >> Hash: SHA1
> > >>
> > >> Stephen Smalley wrote:
> > >>> On Wed, 2008-01-09 at 12:51 -0500, Todd Miller wrote:
> > >>>> Daniel J Walsh wrote:
> > >>>>> -----BEGIN PGP SIGNED MESSAGE-----
> > >>>>> Hash: SHA1
> > >>>>>
> > >>>>> I have a working demonstration of  My version of RBAC in Rawhide/FC8.
> > >>>>> In my view of the world, users have two roles.  User Role and Admin
> > >>>>> Role. 
> > >>>>>
> > >>>>> So I might login as a staff_t user and be able to transition to
> > >>>>> webadm_r:webadm_r.
> > >>>>>
> > >>>>> In Rawhide right now staff_t can only run sudo to become root.
> > >>>>> Staff_t is not allowed to execute su.  staff_t users should not know
> > >>>>> the root password. I have hacked up a script /usr/bin/webadm which
> > >>>>> executes newrole -r webadm_r -t webadm_t and newrole's pam has
> > >>>>> pam_rootok. 
> > >>>>>
> > >>>>> Now I edit the /etc/sudoers and allow
> > >>>>>
> > >>>>> dwalsh ALL=(ALL) /usr/bin/webadm
> > >>>>>
> > >>>>> This allows me to use sudo to become webadm_t as root.  (Policy
> > >>>>> obviously has to be correct.  But this is very cumbersome for the
> > >>>>> administrator and does not scale.
> > >>>>>
> > >>>>> I think we need to add SELinux support to sudo, so the administrator
> > >>>>> could easily add something to /etc/sodoers like
> > >>>>>
> > >>>>> dwalsh ALL=(ALL) ROLE=webadm_r TYPE=webadm_t /bin/sh
> > >>>>>
> > >>>>> then sudo would execute the code that newrole does to very the
> > >>>>> transition and
> > >>>>>
> > >>>>> setexeccon(dwalsh:webadm_t:webadm_t)
> > >>>>> exec(/bin/sh)
> > >>>>>
> > >>>>> I was told that you are the upstream maintainer of sudo, so I wanted
> > >>>>> your input/help on making sudo selinux aware.
> > >>>> I suppose it depends on what you really want to be able to do.  Do you
> > >>>>
> > >>>> a) wish to be able to run arbitrary commands via sudo but be able to
> > >>>>    specify a role and type ala newrole via -r and -t flags?
> > >>>>
> > >>>> or
> > >>>>
> > >>>> b) want to be able to force a command run by sudo to use a role and type
> > >>>>    that is specified in the sudoers file?
> > >>>>
> > >> I don't want the user to even know about webadm_r:webadm_t or care.  He
> > >> will just know that when he is UID 0 he can only use certain directories.
> > >>
> > >> Allowing someone to specfify
> > >>
> > >> sudo -r webadm_r -t webadmin_t /bin/sh
> > >>
> > >> Is not important.
> > >>
> > >> Having them say
> > >>
> > >> sudo /bin/sh
> > >>
> > >> and ending up with staff_u:webadm_r:webadm_t is important.
> > > 
> > > The idea with specifying the role and type at the sudo level is quiet
> > > good and important I think. Just imagine a scenario where you have one
> > > admin who takes care about the web-server and email-server. So you would
> > > have a webadmin_t and mailadmin_t type. If the admin wants to execute
> > > something like "sudo vim" (e.g. to change the config files) he would
> > > only have on role/type e.g. the webadmin_t but could _not_ change to
> > > mailadmin_t. You could easily fix this while creating a secondary Linux
> > > user to get around this but I think this wouldn't be nice and could
> > > possibly end up with dozens/hundreds/... of Linux user accounts (which
> > > are hard to manage, keep clean and isn't user friendly ...).
> > > 
> > Well this is actually what I would like to avoid.  I would prefer one
> > domain that allows the administrator to admin both the httpd and mailman
> > 
> > I am adding to Fedora policy admin interfaces so you can easily creat an
> > administrator policy that looks something like.
> > 
> > userdom_base_user_template(myadm)
> > apache_admin(myadm_t)
> > mailman_admin(myadm_t)
> > mysql_admin(myadm_t)
> > gen_require(`
> >         type staff_t;
> > ')
> > allow staff_t webadm_t:process transition;
> 
> You don't want staff_t to directly transition to webadm_t.  It should
> have to go through an intermediary, like newrole_t or sudo_t.

Also, how are you handling the tty/pty and fd relationships (usually
addressed by newrole by relabeling the tty/pty and re-opening the fds
into its own type)?  That was a major problem with the old sudo selinux
patch.

> > 
> > You load this policy module and create a staff user with the myadm_r,
> > and now use sudo to get a shell that can manage mysql, mailman, and
> > apache.  The user then does not need to think about, I am administrating
> > the apache so I need to execute some bizare commands to become root, and
> > then later that shell is no good for managing mailman or mysql.
> > 
> > 
> > >>>> Doing a) is probably easier than b) though the two are not mutually
> > >>>> exclusive.
> > >>> Didn't we used to have a) in Fedora (before Fedora 5, IIRC)?  And didn't
> > >>> it suffer from a number of problems?  Have to go back to the
> > >>> fedora-selinux archives and/or bugzillas to recapture the history there.
> > >>>
> > >>> Also, while integration with sudo might be useful, it seems more
> > >>> pressing to integrate with policykit given its increasing adoption by
> > >>> distributions, right?
> > >>>
> > >> No sudo and policykit serve two different problems.  I am looking for
> > >> sudo as a tool for use by actual administrators.  You need to get
> > >> something configured as the root user.  Currently you use su to do this.
> > >> And give out the root password.  With SELinux we can confine the user to
> > >> the particular files/processes that they can effect while running as the
> > >> root user.  The beauty of using SELinux in this manner is I can allow
> > >> the administrator to configure the system with tools like
> > >> vi/emacs/grep/cat/sed ...  While controlling which files he can modify
> > >> and which processes he can transition to (initscripts).
> > >>
> > >> policykit needs policy to confine apps that are doing things on behalf
> > >> of the user.  So the user wants to change the clock.  Some how the user
> > >> authenticates himself the PolicyKit and the PolicyKit/Dbus executes
> > >> commands as root on behalf of the user.  The big caviat here is that we
> > >> need to make sure the tools ONLY do the things for the user that they
> > >> are defined to do.  So if the user is allowed to change the Time on his
> > >> machine, the script that runs on his behalf had better only be able to
> > >> change the time.
> > >>
> > >> Whether or not SELinux gets involved in the authorization is up for debate.
> > > 
> > > I would really appreciate something like this. It makes it very easy to
> > > allow only certain people to access/admin the stuff they need to. It is
> > > always good to know that an webserver-admin can only damage the
> > > webserver and not the whole system ;-)
> > > 
> > 
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.8 (GNU/Linux)
> > Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
> > 
> > iEYEARECAAYFAkeHf0IACgkQrlYvE4MpobP+ngCeIRm8RXbGvfFcidWMB8g0kZDG
> > dKIAn1/aiMefqyzoeUhQQOvGrBtwXS4T
> > =oljc
> > -----END PGP SIGNATURE-----
> > 
> > --
> > This message was distributed to subscribers of the selinux mailing list.
> > If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
> > the words "unsubscribe selinux" without quotes as the message.
-- 
Stephen Smalley
National Security Agency


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux