我正在尝试作为客户端在 freebsd 盒子上实现 tacacs 身份验证。该盒子实际上是一个网络设备,应该将此配置内置到其 cli/ui 中,但没有。由于它是基于 freebsd 构建的,因此它具有pam_tacplus.so内置库。
我的问题是我希望对我们的 tacacs 服务器进行身份验证,但我不想在设备上配置本地帐户。这是 pam.conf 文件:
su auth sufficient pam_rootok.so
su auth sufficient pam_unix.so
login auth required pam_unix.so
login account required pam_unix.so
login password required pam_permit.so
login session required pam_permit.so
ftpd auth required pam_unix.so
sshd auth sufficient pam_tacplus.so template_user=testuser
sshd auth required pam_unix.so
sshd account required pam_unix.so
sshd password required pam_permit.so
sshd session required pam_permit.so
telnetd auth required pam_unix.so
passwd password required pam_unix.so no_warn try_first_pass nullok
other auth required pam_unix.so
tacacs 服务器的 IP 地址存储在 /etc/tacplus.conf 中,并且由于我在 tacacs 服务器的日志中看到失败,因此我相信通信是成功的。此外,我可以在端口 49 上建立与服务器的 TCP 会话。
当我尝试通过 ssh 作为 jimbob 登录时,这是我在 /var/log/auth.log 中看到的内容:
<auth.info> Lab-2 sshd[4952]: Invalid user jimbob from 10.0.0.1
<auth.info> Lab-2 sshd[4952]: input_userauth_request: invalid user jimbob
<auth.info> Lab-2 sshd[4952]: Failed none for invalid user jimbob from 10.0.0.1 port 52069 ssh2
<auth.info> Lab-2 sshd[4952]: Failed publickey for invalid user jimbob from 10.0.0.1 port 52069 ssh2
<auth.info> Lab-2 sshd[4952]: Postponed keyboard-interactive for invalid user jimbob from 10.0.0.1 port 52069 ssh2
<auth.info> Lab-2 sshd[4952]: Postponed keyboard-interactive/pam for invalid user jimbob from 10.0.0.1 port 52069 ssh2
<auth.err> Lab-2 sshd[4953]: error: ssh_msg_send: write
四处搜寻后,这似乎适用。然而,这里讨论的是 NSS,它由 nsswitch.conf 控制,而该系统上不存在该 NSS。 NSS 似乎没有 tacacs 插件;我不确定,就我而言,如果有的话,这是否重要。
那么,有没有办法在访问 pam_tacplus.so 库之前跳过检查用户的本地密码文件?我猜测如果有的话, template_user= 选项会启动并尝试使用“testuser”,它确实作为本地用户存在:
pw user show testuser
testuser:*:1003:1003::0:0:User &:/home/testuser:/usr/bin/bash
答案1
你可以像我一样轻松实现这一点。你是对的,你应该使用 nsswitch.conf 文件。但是,您必须安装第三方程序 libnss-ato,它代表 All-To-One。它将根据配置的 tacacs+ 服务器验证非本地用户,然后完全按照您的意愿行事。
您可以在此处获取该包及其详细信息: https://github.com/donapieppo/libnss-ato