Image

知识库 → 在 Centos 7 上使用 Google Authenticator 在 SSH 中配置双因素身份验证

[虚拟服务器]
出版日期: 29.11.2022

SSH 服务是密码猜测攻击次数最多的服务,您刚刚启动服务器,几小时后在日志中您可以 查看来自未知 IP 地址的连接尝试。 为了减少尝试次数,我们立即建议更改 sshd 设置中的端口号。 当然,您应该使用字母、符号和数字指定一个复杂度高且区分大小写的密码。 对于 linux 服务器,通常需要记住 2 个密码,第一个用于普通用户,第二个用于 root。 如果有多个服务器,那么它们通常会使用各种应用程序来存储会话设置(主机、登录名和密码),这很正常,直到攻击者获得对您工作站的访问权限。 无论如何,都有受感染的网站、软件等。 事实证明,您无法完全确定此数据是否安全且仅供您使用。 这种情况有一个解决方案。

双因素授权 - 您手机上的一个应用程序被添加到登录名和密码中,它根据时间和唯一密钥生成问题和数字形式的问题答案。 输入您的登录名和密码后,系统会提示您输入验证码,可在应用程序中访问 Google Authenticator.

安装必要的包

yum install pam pam-devel google-authenticator 

安装手机应用程序

 

环境

默认情况下,最好在 sshd 设置中禁用用户登录,因此如果您刚刚开始设置新服务器,请创建一个用户。 为其设置密码并使用以下命令登录:

adduser username
passwd username
su username


从您要为其设置双因素身份验证的用户下运行命令:

google-authenticator

在第一条消息中按“y”,系统将询问您是否要更新 ./google_authenticator 文件。 当提示防止多次使用时,再次按“y”以防止其他用户使用您的代码。 对于其余选项,请按“y”,因为它们都会增强该软件的性能。

确保您已将密钥和紧急恢复代码复制在一张纸上。 将此信息保存在离线状态,因为即使有人找到此信息,您仍然需要找出主机、登录名和密码才能进入。

现在让我们配置 PAM 以将我们所有的设置应用到 SSH 服务,这些操作已经需要由用户完成 root

vi /etc/pam.d/sshd

将行添加到文件的最开头,使其看起来像这样:

#%PAM-1.0
auth required pam_unix.so no_warn try_first_pass 
auth required pam_google_authenticator.so

文件中的剩余行被保留,它们在下面没有变化。 让我们保存文件并继续配置 SSH 服务。

vi /etc/ssh/sshd_config

找到“ChallengeResponseAuthentication no”参数并将“no”更改为“yes”。保存更改并重新启动服务。

service sshd restart

现在在您的移动设备上设置应用程序。 找到“手动输入密钥”选项并单击它。 输入您之前记下的密钥并保存。 现在将出现一个代码,您需要在输入密码后在验证码字段中输入该代码。

修改:

  • 更改输入顺序:

我们专门设置了登录-密码顺序,然后是验证码。 如果您想先输入应用程序的代码,然后再输入密码,只需删除第一行,文件如下所示:

#%PAM-1.0
auth required pam_google_authenticator.so
  • 以 root 身份登录时的双因素身份验证

例如,您想使用登录名和密码以普通用户身份登录服务器,并在输入 su 命令 时输入根密码和应用程序代码。 像以前一样以 root 身份运行 ./google_authenticator 应用程序。 使用新代码设置移动应用程序并添加到文件中:

vi /etc/pam.d/su

到该行的最开头:

#%PAM-1.0
auth required pam_unix.so no_warn try_first_pass 
auth required pam_google_authenticator.so


大功告成,服务不需要重启。 现在,当尝试以 root 身份登录时,该命令将需要来自应用程序的验证码。


附言 我们建议您检查另一个 ssh 会话以避免错误,您将有机会返回并修复它。





暂时没有评论