tacacs&x2B;使用pam_tacplus进行Linux身份验证/授权

tacacs&x2B;使用pam_tacplus进行Linux身份验证/授权,linux,security,authentication,authorization,pam,Linux,Security,Authentication,Authorization,Pam,我正在使用TACACS+使用pam_tacplus.so pam模块对Linux用户进行身份验证,它可以正常工作 我已经修改了pam_tacplus模块,以满足我的一些定制需求 我知道默认情况下,TACACS+没有任何方法支持linux组或对linux bash命令的访问级别控制,但是,我想知道是否有任何方法可以从TACACS+服务器端传递一些信息,让pam_tacplus.so模块允许/拒绝或动态修改用户组[来自pam模块本身] 示例:如果我可以将priv lvl编号从服务器传递到客户端,并且

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

我已经修改了pam_tacplus模块,以满足我的一些定制需求

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

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

PS:我更喜欢不涉及服务器端修改的方法[代码],所有修改都应该在Linux端ie pam_tacplus模块上完成


感谢您的帮助。

根据您打算如何实现这一点,PAM可能不足以满足您的需要。TACACS+的权限级别不是“身份验证”步骤的一部分,而是“授权”步骤。如果您使用PAM\u tacplus,则该授权将作为“帐户”(又名PAM\u acct\u mgmt)的一部分进行然而,不幸的是,*nix系统并没有给您提供很多进行细粒度控制的能力——您可能能够基于无效的“服务”、“协议”甚至“主机”或“tty”等细节拒绝访问,但可能仅此而已。(priv_lvl是请求的一部分,而不是响应,pam_tacplus总是发送“0”。)

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


您可能需要一个NSS(名称服务交换机)模块来完成这一任务——例如,当您到达PAM时,OpenSSH将已经确定您的用户是“伪造的”并将类似的伪造密码发送到服务器。使用NSS模块,您可以根据TACACS+服务器上的AVP为您的用户填充“passwd”记录。有关NSS的更多详细信息,请参阅glibc的文档。“

最终我让它工作起来了

问题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 service=system,这迫使服务返回在配置文件中定义的priv lvl,我使用它来设置用户的特权级别

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


HTH

谢谢你的帮助。我相信一个很好的长期解决方案是让NSS模块来解决这个问题,但到目前为止,我已经找到了一个解决办法。值得一提的是,我已经有了一个可以工作的NSS模块,我正试图让我的公司将其开源。它正在进行中,但我没有明确的时间框架。干杯。