У нас есть несколько серверов RHEL 5, подключенных к AD с помощью Winbind / Kerberos, который в целом работает хорошо.
Я указал группу безопасности AD в PAM, чтобы ограничить доступ пользователей домена к системе.
auth requisite pam_succeed_if.so user ingroup ad_group debug
Я также указал ту же группу в sudoers, чтобы они могли получить root-доступ.
%ad_group ALL=(ALL) ALL
Они работают должным образом.
Однако я заметил, что «su -» позволит мне стать пользователем домена, не входящим в группу безопасности.
Допустим, jdoe отсутствует в "ad_group":
[kernelpanic@server01 ~]$ sudo su - jdoe [sudo] password for user: Creating directory '/home/jdoe'. Creating directory '/home/jdoe/.mozilla'. Creating directory '/home/jdoe/.mozilla/plugins'. Creating directory '/home/jdoe/.mozilla/extensions'. [jdoe@server01 ~]$
Вот вывод / var / log / secure:
Oct 25 09:42:42 server01 su: pam_unix(su-l:session): session opened for user jdoe by kernelpanic(uid=0) Oct 25 09:43:53 server01 su: pam_unix(su-l:session): session closed for user jdoe
Есть ли способ ограничить пользователей от «su -» до пользователя домена, которому изначально не разрешено входить в систему?
Я верю в первую строчку /etc/pam.d/su
выглядит так:
auth sufficient pam_rootok.so
Другими словами, когда su пытается разрешить вам стать jdoe, все выглядит нормально.
Что вы можете сделать, так это добавить свой pam_succeed_if
линия к /etc/pam.d/su
или, что еще лучше, добавьте запись в /etc/pam.d/system-auth
, но измените его так, чтобы auth
становится session
вот так:
session requisite pam_succeed_if.so user ingroup ad_group debug
Это будет срабатывать даже в описанной вами ситуации и не позволит пользователю из не ad_group когда-либо открыть оболочку. Это также имело бы неприятный побочный эффект ограничения root
от открытия оболочки (как указано в комментариях), поэтому вам может потребоваться применить ее только для идентификаторов пользователей в правильном диапазоне:
session [default=1 success=ignore] pam_succeed_if.so quiet uid >= 1000
session requisite pam_succeed_if.so user ingroup ad_group debug
Кстати, ssh
также может обходить PAM, если вы аутентифицируетесь с открытым ключом, поэтому все же лучше использовать session
вместо того auth
.