From acc77c4757775bb7689ba769465951a65523db75 Mon Sep 17 00:00:00 2001 From: Dave Olson Date: Thu, 12 Apr 2018 23:57:55 -0700 Subject: Add a new package radius-shell with a setcap radius_shell front end Ticket: CM-19457 Reviewed By: nobody Testing Done: multiple logins, separately and simultaneously Because we can't determine privilege level separately and up front with the RADIUS protocol, unlike TACACS+, we wind up with all logins as the same unprivileged radius uid. But we can set the auid (accounting or auditing uid) correctly, and a separate setcap radius_shell can be set as the login shell, and can fixup the uid before running /bin/bash. To set the auid correctly, we need to know the privileged radius user account. Added mapped_priv_user to the configuration file to handle that. mapped_priv_user has to match the account used by libnss-mapuser. That's a bit ugly, but a common config file would be uglier. The radius shell is in a new package, since it has binaries. The new package is radius-shell. In it's post actions, it changes the radius users shell to radius_shell if they are present, and back to /bin/bash on package removal. It uses capabilities, tries to be very restrictive in what it changes, and depends on being installed setcap cap_setuid Make the existing libpam-radius-auth package depend on radius-shell, so it will pull in the new package on upgrades. Also fixed another issue with reparsing changed config file, have to handle case where there were servers defined, but aren't any longer. --- debian/control | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'debian/control') diff --git a/debian/control b/debian/control index b70c948..b8022db 100644 --- a/debian/control +++ b/debian/control @@ -3,13 +3,22 @@ Maintainer: dev-support Section: libs Priority: extra Standards-Version: 3.9.6 -Build-Depends: libpam0g-dev | libpam-dev, debhelper (>= 9~), libaudit-dev +Build-Depends: libpam0g-dev | libpam-dev, debhelper (>= 9~), libaudit-dev, libcap-dev Package: libpam-radius-auth Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libaudit1 +Depends: ${shlibs:Depends}, ${misc:Depends}, libaudit1, radius-shell Description: PAM RADIUS client authentication module This is the PAM to RADIUS authentication module. It allows any PAM-capable machine to become a RADIUS client for authentication and accounting requests. You will, however, need to supply your own RADIUS server to perform the actual authentication + +Package: radius-shell +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, libaudit1, libcap2-bin, libcap2, libnss-mapuser +Description: Shell front-end used for radius users. + This provides a uid fixup program. Due to the limitations of the + RADIUS protocol, we can't tell whether a user is privileged until + after authentication. This packages provides a shell front-end that + sets the uid to the auid, if set and > 1000, and not already matching. -- cgit v1.2.3