跳到主要内容

两步验证

两步验证是目前比较常用的安全手段,通过设置两步验证,我们可以有效的避免账户密码可能的泄露导致的账户信息泄露,因为每次登录前我们都需要获取一个一次性验证码,没有验证码就无法成功登录。所以决定在我们服务器上配置使用两步验证登录来提升一定的安全性。下面来简单介绍下如何配置使用两步验证。

安装配置 Google Authenticator

安装 Google Authenticator

sudo apt install libpam-google-authenticator

初始化配置:

google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30 

image-20220301085819471

配置参数说明:

  • -t : 使用 TOTP 验证
  • -f : 将配置保存到 ~/.google_authenticator
  • -d : 不允许重复使用以前使用的令牌
  • -w 3 : 允许的令牌的窗口大小。 默认情况下,令牌每 30 秒过期一次。 窗口大小 3 允许在当前令牌之前和之后使用令牌进行身份验证以进行时钟偏移。
  • -e 10 : 生成 10 个紧急备用代码
  • -r 3 -R 30 : 限速,每 30 秒允许 3 次登录

更多帮助信息可以使用 --help 选项查看。

程序运行后,将会更新配置文件,并且显示下面信息:

  • 二维码,您可以使用大多数身份验证器应用程序扫描此代码。
  • 一个秘密的钥匙,如果您无法扫描二维码,请在您的应用中输入此密钥。
  • 初始验证码,该验证码将在30秒后失效。
  • 6 个一次性使用紧急代码的列表

配置SSH

  • 修改 SSH pam_google_authenticator文件,

追加auth required pam_google_authenticator.so nullok内容到文件中

sudo vim /etc/pam.d/sshd
echo 'auth required pam_google_authenticator.so nullok' >>

禁用密码登录

# @include common-auth

保存并退出。

  • 修改 SSH 配置文件:
$ sudo vim /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

保存并退出

重启ssh

sudo systemctl restart ssh

扩展

配置sudo 二次验证

$ sudo vim /etc/pam.d/common-auth
...
...
auth required pam_google_authenticator.so nullok

恢复

修改 /etc/ssh/sshd_config

# 找到并移除 ,keyboard-interactive
AuthenticationMethods publickey

# 重启ssh
sudo systemctl restart ssh