Monitoring and Restricting Superuser
An alternative to using the superuser account is to set up role-based access
control. Role-based access control is called RBAC. For overview information on RBAC, see
Role-Based Access Control (Overview). To set up RBAC, see Chapter 9, Using Role-Based Access Control (Tasks).
How to Monitor Who Is Using the su Command
The sulog file lists every use of the su command, not only the
su attempts that are used to switch from user to superuser.
- Monitor the contents of the /var/adm/sulog file on a regular basis.
# more /var/adm/sulog
SU 12/20 16:26 + pts/0 stacey-root
SU 12/21 10:59 + pts/0 stacey-root
SU 01/12 11:11 + pts/0 root-rimmer
SU 01/12 14:56 + pts/0 pmorph-root
SU 01/12 14:57 + pts/0 pmorph-root
The entries display the following information:
The date and time that the command was entered.
If the attempt was successful. A plus sign (+) indicates a successful attempt. A minus sign (-) indicates an unsuccessful attempt.
The port from which the command was issued.
The name of the user and the name of the switched identity.
The su logging in this file is enabled by default through the following
entry in the /etc/default/su file:
SULOG=/var/adm/sulog
Troubleshooting
Entries that include ??? indicate that the controlling terminal for the su command
cannot be identified. Typically, system invocations of the su command before the desktop appears
include ???, as in SU 10/10 08:08 + ??? root-root. After the user starts a desktop session, the
ttynam command returns the value of the controlling terminal to the sulog: SU 10/10 10:10 + pts/3 jdoe-root.
Entries similar to the following can indicate that the su command was not
invoked on the command line: SU 10/10 10:20 + ??? root-oracle. The user might have switched to
the oracle role by using a GUI.
How to Restrict and Monitor Superuser Logins
This method immediately detects superuser attempts to access the local system.
- View the CONSOLE entry in the /etc/default/login file.
CONSOLE=/dev/console
By default, the console device is set to /dev/console. With this setting, root
can log in to the console. root cannot log in remotely.
- Verify that root cannot log in remotely.
From a remote system, try to log in as superuser.
mach2 % rlogin -l root mach1
Password: <Type root password of mach1>
Not on system console
Connection closed.
- Monitor attempts to become superuser.
By default, attempts to become superuser are printed to the console by
the SYSLOG utility.
- Open a terminal console on your desktop.
- In another window, use the su command to become superuser.
% su -
Password: <Type root password>
#
A message is printed on the terminal console.
Sep 7 13:22:57 mach1 su: 'su root' succeeded for jdoe on /dev/pts/6
Example 3-7 Logging Superuser Access Attempts
In this example, superuser attempts are not being logged by SYSLOG. Therefore,
the administrator is logging those attempts by removing the comment from the #CONSOLE=/dev/console
entry in the /etc/default/su file.
# CONSOLE determines whether attempts to su to root should be logged
# to the named device
#
CONSOLE=/dev/console
When a user attempts to become superuser, the attempt is printed on the
terminal console.
SU 09/07 16:38 + pts/8 jdoe-root
Troubleshooting
To become superuser from a remote system when the /etc/default/login file contains
the default CONSOLE entry, users must first log in with their user name.
After logging in with their user name, users then can use the su
command to become superuser.
If the console displays an entry similar to Mar 16 16:20:36 mach1 login: ROOT LOGIN /dev/pts/14 FROM mach2.Example.COM, then the system is
permitting remote root logins. To prevent remote superuser access, change the #CONSOLE=/dev/console
entry to CONSOLE=/dev/console in the /etc/default/login file.