仅要求某些客户端进行双因素 ssh 身份验证

仅要求某些客户端进行双因素 ssh 身份验证

我即将强制使用 进行 ssh 登录时进行双因素身份验证libpam_google_authenticator。我希望能够在用户从某些 IP 地址登录时免除此要求。

我有这个/etc/pam.d/sshd

身份验证需要 pam_google_authenticator.so

这是/etc/ssh/sshd_config

ChallengeResponseAuthentication 是

我考虑过使用Match中的指令sshd_config,但手册页建议ChallengeResponseAuthentication不能这样使用。无论如何,我不确定这是否能满足pam要求。

有没有办法免除具有特定 IP 地址的客户端的质询-响应?

答案1

我没有专门使用 google auth 执行此操作,但我使用 pam_access 和 substack 执行了类似操作。我执行的操作是在 /etc/pam.d 中创建一个名为 yubi-auth 的文件。它包含:

auth sufficient pam_yubico.so 
auth required pam_combo.so 

然后在 password-auth 中,我使用auth substack yubi-auth。结果是,如果用户来自 acceess.conf 中批准的 ip 地址,他们不必使用 yubikey,否则他们必须使用它。(如果他们愿意,他们可以随时使用它)。

我还没有用 google auth 测试过这种方法,但我认为相同的逻辑应该可行。

答案2

您可以运行具有不同配置的两个 sshd 实例。在极端情况下:使用一个修补版本(因为通过配置文件可能无法实现),该版本使用与 ssh 不同的 PAM 字符串,以便您可以为两个实例创建不同的 PAM 配置。或者,您可以在 chroot / lxc 中启动一个实例,以便它看到不同的 PAM 配置。这可能更容易(维护)。

然后可以通过 iptables (DNAT) 进行客户端选择。只需将相应的客户端发送到第二个实例的端口(或 lxc IP)。

相关内容