
Я использую TACACS+ для аутентификации пользователей Linux с помощью модуля PAM pam_tacplus.so, и это работает без проблем.
Я изменил модуль pam_tacplus, чтобы он соответствовал некоторым моим индивидуальным требованиям.
Я знаю, что по умолчанию TACACS+ не имеет никаких средств для поддержки групп Linux или управления уровнем доступа через команды Linux Bash, однако мне было интересно, есть ли способ передать некоторую информацию со стороны сервера TACACS+, чтобы позволить модулю pam_tacplus.so, который можно использовать для разрешения/запрета или изменения группы пользователей «на лету» [из самого модуля pam].
Пример: если бы я мог передать номер priv-lvl с сервера клиенту и который можно было бы использовать для принятия решений в модуле PAM.
PS: Я бы предпочел метод, не требующий модификации кода на стороне сервера; все изменения должны выполняться на стороне Linux, т. е. в модуле pam_tacplus.
Спасибо за любую помощь.
решение1
В конце концов у меня это получилось.
Проблема 1:
Проблема, с которой я столкнулся, заключалась в том, что было очень мало документации по настройке сервера TACACS+ для устройств, отличных от CISCO.
Проблема 2:
Версия tac_plus, которую я использую
tac_plus -v
tac_plus version F4.0.4.28
похоже, не поддерживает
service = shell protocol = ssh
опция в файле tac_plus.conf.
Поэтому в конце концов я использовал
service = system {
default attribute = permit
priv-lvl = 15
}
На стороне клиента (pam_tacplus.so),
Я отправил AVP service=system на этапе авторизации (pam_acct_mgmt), что заставило службу вернуть priv-lvl, определенный в файле конфигурации, который я использовал для определения уровня привилегий пользователя.
ПРИМЕЧАНИЕ: В некоторых документах упоминается, что service=system больше не используется. Поэтому эта опция может не работать с устройствами CISCO.
НТН