企业安全建设第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公钥证书,来实现双因素验证