前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RHEL CentOS 8 SSH双因素认证

RHEL CentOS 8 SSH双因素认证

作者头像
Kevin song
发布2020-06-09 11:55:24
1.6K0
发布2020-06-09 11:55:24
举报

双因素认证

  双因素认证就是通过 用户已知信息(用户名和密码)+用户预先未知信息 二要素组合到一起实现双因素身份认证。双因素认证是一种采用时间同步技术的系统,采用了基于时间、事件和密钥三变量而产生的一次性密码来代替传统的静态密码。每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间、事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的身份认证。

TOTP

Time-Based One-Time Password Algorithm,基于时间同步的一次性口令,动态口令。

TOTP认证步骤

  • ① 用户开启双因素认证后,服务器生成一个密钥。
  • ② 服务器提示用户扫描二维码,把密钥保存到用户的手机。也就是说,服务器和用户的手机,现在都有了同一把密钥。
  • ③ 用户登录时,手机客户端使用这个密钥和当前时间戳,生成一个哈希,有效期默认为30秒。用户在有效期内,把这个哈希提交给服务器。
  • ④ 服务器也使用密钥和当前时间戳,生成一个哈希,跟用户提交的哈希比对。只要两者不一致,就拒绝登录。

身份验证器 (本次使用Google Authenticator)

Google Authenticator

Microsoft Authenticator

TOTP Authenticator

阿里云身份宝

时间同步

在 CentOS 8 中,dnf install ntp 时提示没有ntp安装软件。

代码语言:javascript
复制
#添加wlnmp的yum源
rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
#安装时间同步软件
yum install wntp
#同步事件
ntpdate  192.168.99.107
#时间同步计划任务
crontab   -e
*/10 * * * * /usr/sbin/ntpdate 192.168.99.107; /sbin/hwclock -w 
#重启计划任务
systemctl   restart crond

google-authenticator

epel仓库

代码语言:javascript
复制
dnf install  epel-release

google-authenticator

代码语言:javascript
复制

dnf install google-authenticator

google-authenticator版本

代码语言:javascript
复制
rpm -qa |grep google-authenticator
google-authenticator-1.07-1.el8.x86_64

二维码生成工具

不安装二维码生成工具,google-authenticator将无法生成二维码,但可以将生成的链接复制到浏览器中生成二维码。

代码语言:javascript
复制
dnf  install qrencode

运行 google-authenticator

google-authenticator 参数介绍

  第1个:问你是否想做一个基于时间的令牌,先择y

  第2个:是否更新你的google认证文件,由于第一次设置,所以一定选y 

  第3个:是否禁止口令多用,这里选择y,禁止它,以防止中间人欺骗。

  第4个:默认情况,1个口令的有效期是30s,这里是为了防止主机时间和口令客户端时间不一致,设置的误差,可以选择y,也可选n,看要求严谨程度

  第5个:是否打开尝试次数限制,默认情况,30s内不得超过3次登陆测试,防止别人暴力破解。

注意:

参数设置将被存储在用户的〜/.google_authenticator文件中,emergency scratch codes 中的5个代码是紧急代码,务必牢记!在你的动态口令无法使用的情况下使用的,记住,用一个失效一个。后期可以登陆系统重新生成。

手机 Google Authenticator

手机上的Google Authenticator应用扫描二维码

PAM SSH

配置系统PAM 模块中 sshd 支持google_authenticator的认证

代码语言:javascript
复制

vim /etc/pam.d/sshd
#在文件最底部添加如下行(先进行密码认证再进行google_authenticator的认证):
auth required pam_google_authenticator.so
-----------------------------------------------------------------------
#在文件第一行添加如下行(先进行google_authenticator认证再进行密码的认证):
auth required pam_google_authenticator.so no_increment_hotp

SSH 服务

代码语言:javascript
复制
vim /etc/ssh/sshd_config 
PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes

重启ssh服务

代码语言:javascript
复制
systemctl restart sshd

登陆验证

身份验证优化

局域网内特定网段访问主机不进行google-authenticator验证,其他网段访问需要进行google-authenticator验证。。。

PAM SSH配置

代码语言:javascript
复制
#在文件顶部添加如下行:vim /etc/pam.d/sshd
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-localhost.conf
auth       required pam_google_authenticator.so no_increment_hotp

添加access-localhost.conf文件

代码语言:javascript
复制
cat /etc/security/access-localhost.conf
+ : ALL : 192.168.99.0/24
+ : ALL : LOCAL
- : ALL : ALL

重启ssh服务

代码语言:javascript
复制
systemctl restart sshd

登陆验证

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档