Linux下SSH登录设置双因素身份验证(Google Authenticator)

1年前 (2022-12-20)阅读2回复1
披着凉皮的糖
披着凉皮的糖
  • 管理员
  • 注册排名4
  • 经验值468997
  • 级别管理员
  • 主题93799
  • 回复1
楼主

一、概述

SSH (平安外壳协议)为 Secure Shell 的缩写,由 IETF 的收集小组(Network Working Group)所造定;SSH 为成立在利用层根底上的平安协议。SSH 是较可靠,专为长途登录会话和其他收集办事供给平安性的协议。操纵 SSH 协议能够有效避免长途治理过程中的信息泄露问题。SSH最后是UNIX系统上的一个法式,后来又敏捷扩展到其他操做平台。SSH在准确利用时可填补收集中的破绽。SSH客户端适用于多种平台。几乎所有UNIX平台—包罗HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

Linux下SSH登录设置双因素身份验证(Google Authenticator)

谷歌身份验证器Google Authenticator是谷歌推出的一款动态口令东西,处理各人各平台账户遭到歹意进攻的问题,一般在相关的办事平台登岸中除了用一般用户名和密码外,需要再输进一次谷歌认证器生成的动态口令才气验证胜利,相当于输进二次密码,以到达账户的高平安性。例如交易所、金融平台、以及一些钱包等项目等等,城市利用谷歌身份验证器Google Authenticator来做二次认证。

谷歌身份验证器Google Authenticator就像银行的像U盾、电子口令卡一样,当你网银转账时候,除了输进银行密码还不可,再次输进U盾、或电子口令卡展现的数字确认完成转账。谷歌身份验证器Google Authenticator的动态码是30秒变更一次的,所以读取到之后要尽快输进。

Google Authenticator项目地址:

参考材料:/

二、情况阐明

OS:CentOS7.8 x64 内核:3.10.0-1160.15.2.el7.x86_64

测试办事器IP:192.168.168.100

封闭selinux

所需组件软件:mercurial、pam、pam-devel、libpng、libpng-devel、chrony(时间同步软件,或者利用ntp)

三、依靠组件安拆

1.根底依靠组件

rpm -ivh

yum -y install gcc make mercurial pam pam-devel zlib zlib-devel libpng libpng-devel

2.时间同步软件chrony

因为动态口令在验证时用到了时间,所以要连结时间上的一致性。简单说下:chrony 是收集时间协议的(NTP)的另一种实现,与收集时间协议后台法式(ntpd)差别,它能够更快地更准确地同步系统始末。假设要利用ntp 需要零丁安拆。

假设时区不合错误的话,能够拷贝你当前地域所在地的时区到系统运行的时区,如下:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

## 安拆

yum -y install chrony

## 修改设置装备摆设文件,删除原有的server设置装备摆设,添加如下设置装备摆设

vim /etc/chrony.conf

server 0.cn.pool.ntp.org iburstserver 1.cn.pool.ntp.org iburstserver 2.cn.pool.ntp.org iburst## 启动办事并利用号令查看同步

systemctl start chronyd

chronyc sources

## chrony办事治理

启动:systemctl start chronyd

重启:systemctl restart chronyd

封闭:systemctl stop chronyd

开机启动:systemctl enable chronyd

查看形态:systemctl status chronyd

四、安拆google-authenticator

办法一:YUM安拆,安拆的版本比力老,但不影响利用。

yum -y install google-authenticator

办法二:源码编译安拆

cd /data/tools

git clone

cd google-authenticator-libpam/

wget

tar xf 1.09.tar.gz

cd google-authenticator-libpam-1.09/

./bootstrap.sh

./configure

make && make install

cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security/

ln -s /usr/local/lib/security/pam_google_authenticator.so /usr/lib64/security/pam_google_authenticator.so

五、设置装备摆设

1.设置PAM组件

编纂pam.d下的sshd文件,在文件末尾添加如下内容

vi /etc/pam.d/sshd

auth required pam_google_authenticator.so

或利用号令

echo "auth required pam_google_authenticator.so" /etc/pam.d/sshd

2.设置SSH设置装备摆设文件

编纂/etc/ssh/sshd_config,修改如下三个选项键值

PasswordAuthentication yesChallengeResponseAuthentication yesUsePAM yes重启SSH办事或从头导进SSH设置装备摆设

systemctl restart sshd.service 或 systemctl reload sshd.service

3.设置装备摆设google-authenticator

## 施行如下号令

google-authenticator

## 会呈现以下提醒:(看不懂请之后选项都输进y回车;)

Do you want authentication tokens to be time-based (y/n) y

(能否基于时间的认证,为了避免差别跨时区的问题)

## 输进y后,会呈现一个二维码和几组数字,请通过身份验证器APP扫描添加。

## 那里的几组数字,那就是告急密码,能够通过那个来登岸办事器,记住,一个只能用一次,可登岸办事器后从头生成。

## 下面的提醒能够根据本身需要来设置y或者n,假设不清晰若何抉择,定见全数设置为y即可。

第一个选项:能否更新用户的 Google Authenticator 设置装备摆设文件,抉择 y 才气使上面操做对当前 root 用户生效,其实就是在对利用户的 Home 目次下生成了一个 .google_authenticator 文件,假设你想停用那个用户的 Google Authenticator 验证,只需要删除那个用户 Home 目次下的 .google_authenticator 文件就能够了。

第二个选项:您能否要制止屡次利用统一身份验证令牌? 如许一来,您每30秒只能登录一次,但那种情状会增加您发现以至阻遏中间人进攻的时机。

第三个选项:默认情状下,挪动利用法式每30秒生成一个新令牌。为了抵偿客户端和办事器之间的时间误差,我们容许在当前时间前后添加一个额外的令牌。 那容许身份验证办事器和客户端之间的时间误差最多为30秒。 假设你碰着时间同步不良的问题,能够增加窗口(默认值为3个容许的代码)(前一个代码,代码,下一个代码)到17个容许的代码(前8个代码,当前代码,以及接下来的8个代码)。 那将容许长达4分钟的时间误差在客户端和办事器之间。您要那么做吗?

第四个选项:假设您正在登录的计算机没有针对暴力登录测验考试停止加强,则能够为验证模块启用速度限造。默认情状下,那将限造进攻者每30秒不超越3次登录测验考试。能否要启用速度限造?

六、手机客户端利用

手机客户端利用本文中不做介绍,安拆好APP后,扫描二维码或利用密钥添加账号。

google-authenticator安卓客户端下载:

七、验证

本文中利用SSH客户端是xshell。在左侧栏中展开“毗连”→“用户身份验证”,然后验证办法抉择“Keyboard Interactive验证”,单击“”毗连“。如下图

## 输进用户名,勾选"记住用户名",如下图:

## 输进用户密码。

## 输进google-authenticator利用APP上生成的验证码。

## 重视输进用户密码和验证码两个窗口的提醒会呈现挨次改变,我们根据提醒信息输进相关信息即可。

如下图所示,即登录胜利。

## 查看办事端的平安日记文件,能够看到停止了google动态密码认证

八、特殊阐明

1.用password + google authenticator,假设利用公钥登录的话,会跳过google authenticator验证间接登录办事器的。

2.务必重视办事器时间需要和当地时间一致,不然登岸认证会呈现问题,一般我们都是利用国外机器,时区相差较大,请利用前操纵date查询当前时间,若时间和当地纷歧致,请停止时间矫正:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

0
回帖

Linux下SSH登录设置双因素身份验证(Google Authenticator) 相关回复(1)

优雅小王子
优雅小王子
沙发
设置双重验证可确保账户安全,有助于增加防护屏障。
2周前 (12-17 06:26)回复00
取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息