我有一个 FreeBSD 托管服务器,我希望能够从任何地方访问它。通常我使用 SSH 公钥登录,或者如果我没有可用的 SSH 私钥,那么我可能会通过 SSH 使用常规密码。但是,当从不受信任的计算机登录时,键盘记录程序始终存在在我键入密码时捕获我的密码的风险。
FreeBSD 已经有了支持 OPIE这是一种一次性密码方案。这很好用,但是一次性密码是仅有的需要身份验证。如果我打印出一份一次性密码列表供以后使用,那么如果我丢失了该列表,那么这就是某人所需要的。
我想设置身份验证,以便需要一个一次性密码加我知道的东西(密码,除了我常用的登录密码)。我有一种感觉,答案与聚丙烯酰胺(和/etc/pam.d/sshd
)但我不确定细节。
在需要两种方法的情况下如何设置身份验证?
答案1
由于您想要使用与普通帐户不同的密码,请尝试security/pam_pwdfile
从端口树中尝试。
基本上,它允许您使用备用文件(格式username:crypted_password
:)进行身份验证。
要使用它,请将以下行放入/etc/pam.d/sshd
就在之前该行pam_opie
:
auth required /usr/local/lib/pam_pwdfile.so pwdfile /path/to/pwd/file
答案2
Duo Security(我们公司)提供开源包支持 OTP、电话回拨、SMS 和智能手机推送身份验证,可使用密码、公钥或任何主要身份验证机制进行 SSH(无论是否有 PAM):
http://blog.duosecurity.com/2011/04/announcing-duos-two-factor-authentication-for-unix/
答案3
假设使用 pam,它应该像将两个所需的模块放入 /etc/pam.d/ 中一样简单。一份给 Opie,一份给您的其他授权。 (例如,普通的 UNIX 密码)
答案4
考虑使用 pam-radius。它应该在 BSD 上编译。所有企业级双因素身份验证系统都支持 Radius。半径是一个非常标准的标准,因此您将获得很大的灵活性。
HTH。