当前位置:   article > 正文

Linux、CentOs SSH 登录集成 Google Authenticator (MFA、2FA)_google authenticator linux

google authenticator linux

SSH 登录集成 Google Authenticator (MFA、2FA)介绍

在本节中,展示如何安装实现谷歌双因素协议的可插拔验证模块(PAM)。使用这个模块,用户必须输入一个2FA令牌才能登录。当用户的密码或SSH密钥被盗时,这额外的保护可以帮助提高安全性。这个模块将工作在任何利用SSH的Linux操作系统上。虽然我只在运行Raspbian操作系统的Raspberry Pi上测试了本教程,但它应该可以在任何操作系统上工作。

  • 效果图
    在这里插入图片描述

测试登录,(保持上面的登录session不要断开,重新打开一个session,以防配置有问题时,无法登录设备)

步骤1:安装 Google Authenticator (MFA、2FA) 和相关依赖包

enable the epel repo in AL2,install the google-authenticator package

  • AWS LINUX
sudo amazon-linux-extras install epel -y
sudo yum install google-authenticator -y
  • 1
  • 2
  • CentOS
sudo yum install epel-release
sudo yum install google-authenticator -y
  • 1
  • 2

步骤2:创建 google-authenticator(MFA、2FA) ,初始化配置

Now run the google-authenticator command and give the following responses
下面这些设置将被存储在用户的〜/.google_authenticator文件中,emergency scratch codes 中的5个代码是紧急代码,务必牢记,这是在你的动态口令无法使用的情况下使用的,记住,用一个失效一个。后期可以登陆上去后,重新生成!!

google-authenticator   
----------------------------
Do you want authentication tokens to be time-based (y/n) y
  
上述共需回答5个y   
第1个:问你是否想做一个基于时间的令牌  y
第2个:是否更新你的google认证文件,由于第一次设置,所以一定选  ????????  
第3个:是否禁止口令多用,这里选择y,禁止它,以防止中间人欺骗。 y  
第4个:默认情况,1个口令的有效期是30s,这里是为了防止主机时间和口令客户端时间不一致,设置的误差,可以选择y,也可选n,看要求严谨程度    y
第5个:是否打开尝试次数限制,默认情况,30s内不得超过3次登陆测试,防止别人暴力破解。 y
----------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

步骤3:设置 sshd 登录鉴权规则

编辑 /etc/pam.d/sshd 添加如下内容, 需要注意位置,pam(Pluggable Authentication Modules)执行是有先后顺序的,因此下面内容放置位置不同,会有不同表现,比如放在common-auth前的话,用户登录是会先要求输入验证码,在做后续的验证;

sudo vim /etc/pam.d/sshd
----------------------------
# 新增
auth	required	pam_google_authenticator.so nullok
# 注释
# auth substack password-auth
----------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

步骤4:设置 sshd_config 登录鉴权规则

# 编辑 sshd_config 文件,修改规则
sudo vim /etc/ssh/sshd_config

----------------------------
# 编辑 /etc/ssh/sshd_config, #修改如下配置为
ChallengeResponseAuthentication yes 

# 关闭密码登录,备注:debian中比较特殊,仅开启sshkey+verification code方式时,需要设置AuthenticationMethods publickey,keyboard-interactive  并注释掉 @include common-auth。
PasswordAuthentication no

# 如果需要使用秘钥+验证码的登录方式,添加如下配置 
AuthenticationMethods publickey,keyboard-interactive
----------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

步骤5:重启 sshd 服务,服务生效,记录多开一个窗口重新登录可以测试效果,测试失败可以回退 步骤3和步骤4 的设置后重启 sshd,想想哪里配置错了,如果用印象笔记的之类的,空格是有乱码的,需要手动复制参数后手动清除空格乱码(肉眼看不出来的)

sudo systemctl restart sshd
  • 1

扩展:多台 EC 机器设置相同的 google_authenticator

默认在执行google-authenticator时,会在当前用户目录下生成.google_authenticator的文件,里面存储这 key 和备用 code。如若需要为其他用户开启2FA,可以已另外用户的身份来执行,或者已当前用户的身份执行,执行后移动到其他用户的目录下,注意要修改对应的权限。 此外登录时遇到问题,可以查看/var/log/auth, /var/log/messages等日志,或者使用journalctl -xe来查看出错信息。

复用之前的.google_authenticator文件,无需执行 google-authenticator 命令生成 .google_authenticator 文件,直接拷贝其他机器,然后复制修改登录账号对应的google_authenticator 文件权限

# 在登录用户目录下创建 google_authenticator 文件
sudo touch /home/ec2-user/.google_authenticator
# 编辑
sudo vim /home/ec2-user/.google_authenticator
# 需要设置 400 目录权限
sudo chmod -R 400 /home/ec2-user/.google_authenticator
# 如果创建的文件不是登录用户,需要改成对应用户
sudo chown -R ec2-user:ec2-user /home/ec2-user/.google_authenticator
# 查看下权限是否正确
ll /home/ec2-user/.google_authenticator
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/610000
推荐阅读
相关标签
  

闽ICP备14008679号