tacacs+ для аутентификации/авторизации Linux с использованием pam_tacplus

Я использую TACACS+ для аутентификации пользователей Linux с помощью модуля PAM pam_tacplus.so, и он работает без проблем.

Я модифицировал модуль pam_tacplus, чтобы он соответствовал некоторым моим требованиям.

Я знаю, что по умолчанию TACACS+ не имеет средств для поддержки групп linux или управления уровнем доступа к командам linux bash, однако мне было интересно, есть ли способ передать некоторую информацию со стороны сервера TACACS+, чтобы позволить модулю pam_tacplus.so который можно использовать для разрешения/запрета или изменения группы пользователей на лету [из самого модуля pam].

Пример: если бы я мог передать номер priv-lvl с сервера клиенту, который можно было бы использовать для принятия некоторых решений в модуле PAM.

PS: Я бы предпочел метод, который не требует изменений на стороне сервера [код], все изменения должны выполняться на стороне Linux, то есть в модуле pam_tacplus.

Спасибо за любую помощь.


person chandank    schedule 20.02.2015    source источник


Ответы (2)


В конце концов я заработал.

Выпуск 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.

ХТН

person chandank    schedule 24.02.2015

В зависимости от того, как вы собираетесь это реализовать, PAM может оказаться недостаточным для удовлетворения ваших потребностей. Уровень привилегий от TACACS+ не является частью шага «аутентификации», а скорее шагом «авторизации». Если вы используете pam_tacplus, то эта авторизация происходит как часть шага «учетная запись» (он же pam_acct_mgmt) в PAM. К сожалению, однако, системы *nix не дают вам много возможностей для тонкого контроля здесь - вы можете отклонить доступ на основании недопустимого «сервиса», «протокола» или даже таких сведений, как «хост». , или 'tty', но, вероятно, не более того. (priv_lvl является частью запроса, а не ответа, и pam_tacplus всегда отправляет '0'.)

Если вы хотите изменить привилегии в системе *nix, вы, вероятно, захотите работать с возможностями этой среды. Мое предложение состояло бы в том, чтобы группировать как средство создания своего рода «ролевого» контроля доступа. Если вы хотите, чтобы они существовали на сервере TACACS+, вам нужно ввести значимые пользовательские AVP, а затем связать их с пользователем.

Для этого вам, скорее всего, понадобится модуль NSS (переключатель службы имен) — к тому времени, когда вы доберетесь до PAM, OpenSSH, например, уже определит, что ваш пользователь является «фальшивым», и отправит такой же фальшивый пароль на сервер. С помощью модуля NSS вы можете заполнять записи «passwd» для своих пользователей на основе AVP с сервера TACACS+. Более подробную информацию о NSS можно найти в документации glibc для "Переключение службы имен".

person benschumacher    schedule 24.02.2015
comment
Спасибо за помощь. Я считаю, что хорошим долгосрочным решением является наличие модуля NSS для этого, но на данный момент я нашел обходной путь. - person chandank; 24.02.2015
comment
Что бы это ни стоило, у меня есть работающий модуль NSS, исходный код которого я пытаюсь открыть в своей компании. Он находится в работе, но у меня нет четких сроков. Ваше здоровье. - person benschumacher; 09.04.2015