企业安全建设第9课--实验双因子验证登录SSH

实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!

实验名称

双因子登录SSH

实验目标

实验SSH登录的双因子验证

实验环境

OTP服务器 centos 7.5

SSH服务器 centos7.5

SSH客户端 任意版本

注意事项

centos7 设置时区

sudo timedatectl set-timezone Asia/Shanghai

centos7 NTP服务器同步

sudo timedatectl set-ntp yes

关闭selinux

sudo setenforce 0

实验步骤

一、安装Google Authenticator的依赖环境

sudo yum install -y epel-release
sudo yum install -y  pam-devel qrencode mercurial

二、安装 Google Authenticator

sudo yum -y install google-authenticator

三、生成动态口令文件

执行命令

google-authenticator

输入五个y,依次表示

基于时间的令牌

是否更新当前用户的认证文件

是否允许重复使用口令

设置允许的令牌误差时间,为4分钟

设置口令错误三次,防止暴力破解

生成完文件后,会在当前用户的home路径下,生成一个隐藏的 .google_authenticator文件,如下

cat ~/.google_authenticator 

B4FUKKLCFZVV67QW2HVCZ3LJ34    //导到手机APP里面的密钥
" RATE_LIMIT 3 30            //错误尝试次数
" WINDOW_SIZE 17            //令牌误差
" DISALLOW_REUSE            //重复使用
" TOTP_AUTH                    //基于时间 TOTP
57879096                    //五个紧急口令
21581415
35639171
71429302
73061664

四、修改SSH配置文件

sudo vi /etc/ssh/sshd_config

编辑SSH配置文件,确保以下三行

PasswordAuthentication yes   #默认配置
ChallengeResponseAuthentication yes  #需要改
UsePAM yes #默认配置

五、修改PAM配置文件

sudo vi /etc/pam.d/sshd

在第一行加入

auth       required     pam_google_authenticator.so

验证pam_google_authenticator.so文件是否存在,查找路径

sudo find / -name pam_google_authenticator.so

应该在

/usr/lib64/security/pam_google_authenticator.so

六、重启SSH服务

sudo systemctl restart sshd

七、配置XSHELL登录

新建连接,或修改现有连接

依次点击

属性-->连接-->用户身份验证-->方法 ,将方法修改为Keyboard Interactive

连接登录。

八、手机安装APP

安装APK后,导入~/.google_authenticator文件的第一行内容。

本实验中是,步骤三的

B4FUKKLCFZVV67QW2HVCZ3LJ34

APK在平台课程附件中有

九、登录测试

SSH登录,先输入手机动态口令,再输入服务器登录密码

如有其它问题,可以查询日志诊断

思考:

是否可以结合SSH公钥证书,来实现双因素验证

posted @ 2020-11-17 20:12  码小农的幸福生活  阅读(425)  评论(0编辑  收藏  举报