我正在使用TACACS +使用pam_tacplus.so PAM模块对Linux用户进行身份验证,它可以正常运行。
我修改了pam_tacplus模块以满足我的一些自定义要求。
我知道默认情况下,TACACS +没有任何方法可以支持linux组或通过linux bash命令访问级别控制,但是,我想知道是否有任何方法可以从TACACS +服务器端传递一些信息让pam_tacplus .so模块,可用于允许/拒绝或动态修改用户组[来自pam模块本身]。
示例:如果我可以将priv-lvl号码从服务器传递到客户端,并且可以用于PAM模块的某些决策。
PS:我更喜欢一种在服务器端没有修改的方法[代码],所有的修改都应该在Linux端完成,即pam_tacplus模块。
感谢您的帮助。
答案 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