一、简介

双因子认证 – Two-factor authenticator(即 2FA),是一种通过组合两种不同的验证方式进行用户验证的机制。
OpenSSH双因子认证是信息安全等级保护中较为重要的安全检测项之一,要求远程登陆核心服务器时必须进行二次认证(指纹、虹膜、动态码等)。
配置免费开源的Google Authenticator动态码认证便是一个不错的双因子认证方案,轻松实现远程登陆核心服务器时,必须正确输入谷歌验证码和系统用户密码后才能正常远程登陆,Google Authenticator是基于TOTP实现的。
TOTP的全称是"基于时间的一次性密码"(Time-based One-time Password)。它是公认的可靠解决方案,已经写入国际标准RFC6238。

认证过程大体如下:
①用户开启双因子认证后,服务器生产一个密钥
②服务器提示用户扫描二维码生成密钥,并保存到用户的手机
③用户登录时输入验证码,服务器会将用户输入的验证码和本地的进行比对,验证通过后则可以登录。验证码周期为30s

二、安装

1、安装依赖包

#安装最新epel源
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm#依赖
yum install -y gcc autoconf automake libtool pam-devel

2、源码编译安装

##下载源代码
cd /usr/local/src/
wget --no-check-certificate https://github.com/google/google-authenticator-libpam/archive/1.07.tar.gz
tar xzf 1.07.tar.gz
cd google-authenticator-libpam-1.07/##编译
./bootstrap.sh
./configure --prefix=/usr/local/google-authenticator
make
make install##创建软链接
ln -s /usr/local/google-authenticator/lib/security/pam_google_authenticator.so /lib64/security/pam_google_authenticator.so##将可执行文件加到环境变量
echo "export PATH=\$PATH:/usr/local/google-authenticator/bin" >> /etc/profile
source /etc/profile

3、rpm包安装

yum -y install google-authenticator

备注:源码编译安装和rpm包安装只需要一种即可,这里我采用的是rpm包安装方式。

三、配置谷歌密钥

# google-authenticator
Do you want authentication tokens to be time-based (y/n)  y   #是否启用基于时间的认证
Do you want me to update your "/home/proot/.google_authenticator" file? (y/n)  y   #将认证信息写入到这个文件内
your chances to notice or even prevent man-in-the-middle attacks (y/n)  y        #每次生成的验证码经过30s自动失效
Do you want to do so? (y/n)  n  #如果输入y,可以在4分钟查看8个有效的验证码,如果输入n,可以在一分半中查看三个有效验证码
Do you want to enable rate-limiting? (y/n)  y     #是否启用速率限制,主要是为了防止攻击

四、下载app创建动态码

首次创建动态码时需要输入secret key进行验证,手机不在身边需要紧急登陆时,则可以使用emergency scratch codes,使用后自动失效。

IOS:https://apps.apple.com/cn/app/google-authenticator/id388497605
Android:https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=zh_CN

五、配置OpenSSH PAM

# sudo sed -i '1a\auth       required     pam_google_authenticator.so' /etc/pam.d/sshd

六、配置OpenSSH并重启

# sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
# sudo systemctl restart sshd

七、登陆测试

目前仅proot用户实现了双因子认证,其他用户不论输入任何动态码都一律视为验证失败而导致无法正常登陆。其他用户配置双因子认证只需拷贝/home/proot/.google_authenticator到对应用户的家目录再赋权即可。

# ssh proot@192.168.147.128
Verification code:
Password:

扩展:

##开启密钥,密码和验证码验证
# /etc/ssh/sshd_config添加
AuthenticationMethods  publickey,password publickey,keyboard-interactive
# /etc/pam.d/sshd 将 auth       substack     password-auth  注释掉

Centos SSH双因子认证相关推荐

  1. SSH通过“运维密码”小程序实现 SSH 双因子认证

    一.什么是双因子认证 GitHub:https://github.com/LCTT/WeApp-Password 双因子认证(即 2FA),是一种通过组合两种不同的验证方式进行用户身份验证的机制. 在 ...

  2. SSH加固配置谷歌双因子认证+更换手机方式

    SSH加固配置谷歌双因子认证+更换手机方式 注:为某一用户配置双因子认证,需切换到该用户下进行操作 1.更换yum源为阿里源 下载wget,用以更换yum源使用: sudo yum -y instal ...

  3. SSH 登录添加 Google Authenticator 两步验证 双因子认证

    SSH 登录添加 Google Authenticator 两步验证 双因子认证 安装 Google Authenticator # 时间与客户端进行校验,确保服务器时间与手机时间一致,避免时差导致严 ...

  4. CentOS 安装OTPW 一次性密码双因子认证

    optw 双因子认证 1.安装otpw 2.参数配置 3.重启测试 4.拓展用法 5.批量部署懒人脚本 官方网站:https://www.cl.cam.ac.uk/~mgk25/otpw.html 软 ...

  5. Google-Authenticator双因子认证

    简介:Google-authenticator是基于时间的一次性密码算法(TOTP)是一种根据预共享的密钥与当前时间计算一次性密码的算法.它已被互联网工程任务组接纳为RFC 6238标准[1],成为主 ...

  6. linux c语言 密码,Linux 双因子认证(密码+PIN)C语言版

    Linux 双因子认证(密码+PIN)C语言版.md 关键字 Linux C语言 PAM SSH 2 Two Multi Factor Authentication Login 双因子 多因子 密保 ...

  7. 强制禁用gitlab的双因子认证:Two-Factor Authentication

    (一)问题描述: 此博客解决如下问题:禁用gitlab的双因子认证 禁用前,如图(此时,你在gitlab中什么也干不了) (二)思路分析: 百度了很多方法,都不可靠(如不可靠的说明:https://s ...

  8. 【等保】等保测评中双因素认证是什么意思?等于双因子认证吗?

    等保测评中双因素认证是什么意思?等于双因子认证吗?很多朋友们对于这两个问题不是很清楚,今天我们小编就来给大家回答一下,加深大家的了解. 等保测评中双因素认证是什么意思? [回答]"双因素&q ...

  9. 如何通过企业微信、飞书、钉钉消息通知接收双因子认证动态密码?

    使用宁盾双因子认证H5令牌的用户每次登录时要切回到企业微信.飞书.钉钉工作台中,找到H5令牌小程序,点进去看动态码.记住或复制动态码后再切回登录界面输入验证. 路径合理,但实际使用场景下不够便捷.用户 ...

最新文章

  1. LotusScript类的继承
  2. 语言 读ini文件_让C语言的调试更加高大上
  3. 30个图片浏览插件收集
  4. iOS判断是模拟器还是真机
  5. iOS 项目经验以及APP上架流程 _Dylan
  6. 黑马程序员-JavaSE核心知识-03第一个Java程序
  7. 栈、队列 java代码实现
  8. 数聚新动能 数创大未来——2016中国国际大数据大会
  9. 风湿病年鉴 | scRNA-seq研究揭示骨关节炎患者的半月板退变新机制
  10. POJ NOI0105-44 第n小的质数
  11. 每日算法系列【EOJ 3031】二进制倒置
  12. 新手php环境一键安装包,PHP运行环境一键安装包(phpStudy2013)
  13. Maven项目中父子项目互相找不到的解决方法
  14. Ubuntu 重装显卡驱动(因内核升级导致失效后)
  15. 【LeetCode - 379】电话目录管理系统
  16. 酷睿i3 10105f参数 i310105f属于什么水平 i3 10105f性能怎么样
  17. deepin 更新企业微信最新版本方法
  18. Android模拟器启动报错:gpu found. vendor id 1002 device id 0x
  19. CF417D--- Cunning Gena(排序+状压dp)
  20. 程序员离职后跳到国企,每天主动加班到10点,结果试用期没过?

热门文章

  1. 单片机并行口I/O接口扩展
  2. TensorFlow 之基于Inception V3的多标签分类 retrain
  3. eclipse中改变字体大小的快捷键
  4. 一元分类、二元分类、多类分类、多标签学习
  5. docker镜像迁移/移植
  6. OpenStack在线安装笔记
  7. 编写程序模拟两个村庄共用同一口井水,编写一个Village类
  8. SAP 会计凭证 BAPI_ACC_DOCUMENT_POST 客户/供应商/资产 使用说明 传参数案例
  9. sqlYog-mysql工具下载安装
  10. 对于充分必要条件的理解