pam_tacplus.so 和 sshd:跳过用户验证?

pam_tacplus.so 和 sshd:跳过用户验证?

我正在尝试作为客户端在 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

相关内容