Mittels su können normale Benutzer root-Rechte erhalten, wenn sie das root-Passwort kennen. Nachdem bereits ein root-Login per SSH deaktiviert wurde, ist eine weitere Sicherheitsmaßnahme, ein su nur für bestimmte Benutzer zu erlauben. Alle anderen Benutzer können su nicht benutzen (selbst wenn sie das korrekte root-Passwort kennen).
Diese Maßnahme führt nicht prinzipiell zu mehr Sicherheit, sondern ist als zusätzliche line of defense gedacht. Angenommen, ein Angreifer erhält über eine fahrlässig programmierte Webanwendung shell-Zugriff unter der User-ID eines Webkunden, hat er trotzdem keine Möglichkeit, dass root-Passwort zu erraten und für ein su zu benutzen, weil der Webkunde keine su-Berechtigung hat. Natürlich bietet ein Shell-Zugang für einen Angreifer immer noch genügend Möglichkeiten (lokal ausnutzbare Sicherheitslücken im Linux-Kernel), aber immerhin ist ein einfacher Weg dem Angreifer verwehrt.
Ich habe folgenden Weg gewählt:
Es gibt eine spezielle Gruppe admins, in die alle Benutzer aufgenommen werden, die su benutzen können sollen (Anlegen der Gruppe mit "groupadd admins", Hinzufügen von Benutzern mit "usermod -G admins <benutzername>").
Anschließend muss die Datei /etc/pam.d/su um die beiden folgenden Zeilen erweitert werden:
auth sufficient /lib/security/$ISA/pam_stack.so service=su-admins auth required /lib/security/$ISA/pam_deny.so
Bei mir sieht sie dann etwa so aus:
#%PAM-1.0 auth sufficient /lib/security/$ISA/pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient /lib/security/$ISA/pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required /lib/security/$ISA/pam_wheel.so use_uid auth required /lib/security/$ISA/pam_stack.so service=system-auth auth sufficient /lib/security/$ISA/pam_stack.so service=su-admins auth required /lib/security/$ISA/pam_deny.so (...)
Anschließend wird die Datei /etc/pam.d/su-admins angelegt (Dateirechte 0600!), die nur die folgende Zeile beinhaltet:
auth sufficient /lib/security/pam_wheel.so group=admins trust
Jetzt dürfte kein Benutzer, der nicht in der Gruppe admins eingetragen ist, mehr in der Lage sein, mittels su root-Rechte zu bekommen.
Hinweis: Bei dieser Konfiguration hat mir Securing Linux Production Systems - A Practical Guide to Basic Security in Linux Production Environments von Werner Puschitz sehr geholfen.