tacacs +用于使用pam_tacplus进行Linux身份验证/授权

时间:2015-02-20 16:17:57

标签: linux security authentication authorization pam

我正在使用TACACS +使用pam_tacplus.so PAM模块对Linux用户进行身份验证,它可以正常运行。

我修改了pam_tacplus模块以满足我的一些自定义要求。

我知道默认情况下,TACACS +没有任何方法可以支持linux组或通过linux bash命令访问级别控制,但是,我想知道是否有任何方法可以从TACACS +服务器端传递一些信息让pam_tacplus .so模块,可用于允许/拒绝或动态修改用户组[来自pam模块本身]。

示例:如果我可以将priv-lvl号码从服务器传递到客户端,并且可以用于PAM模块的某些决策。

PS:我更喜欢一种在服务器端没有修改的方法[代码],所有的修改都应该在Linux端完成,即pam_tacplus模块。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

根据您打算如何实施此操作,PAM可能不足以满足您的需求。来自TACACS +的权限级别不是“身份验证”步骤的一部分,而是“授权”步骤。如果您正在使用pam_tacplus,那么该授权将作为PAM中“帐户”(aka pam_acct_mgmt)步骤的一部分进行。不幸的是,* nix系统在这里没有给你很多细粒度控制的能力 - 你可能能够根据无效的'服务','协议',甚至是'主机'等细节拒绝访问或者'tty',但可能没有那么多。 (priv_lvl是请求的一部分,而不是响应,pam_tacplus 总是发送'0'。)

如果要更改* nix系统的权限,您可能希望在该环境功能中工作。我的建议是将分组作为一种产生一种“基于角色”的访问控制的手段。如果您希望这些存在于TACACS +服务器上,那么您将需要引入有意义的自定义AVP,然后将这些AVP与用户关联。

你可能需要一个NSS(名称服务开关)模块来完成这个 - 当你到达PAM时,例如,OpenSSH已经确定你的用户是“虚假”并且同样发送伪造服务器的密码。使用NSS模块,您可以根据来自TACACS +服务器的AVP为您的用户填充“密码”记录。关于NSS的更多细节可以在glibc的“Name Service Switch”文档中找到。

答案 1 :(得分:1)

最终我开始工作了。

问题1:

我遇到的问题是,很少有文档可用于为非CISCO设备配置TACACS +服务器。

问题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),

我在授权阶段(pam_acct_mgmt)发送了AVP服务=系统,这迫使服务返回在配置文件中定义的priv-lvl,我用它来设置用户的特权级别。

注意:在某些文档中,提到不再使用service = system。因此,此选项可能不适用于CISCO设备。

HTH