google-authenticator 简介

totp 基于时间变化,每隔一定的时间 如google-authenticator的是30秒 ; 根据token产生一次新的hash,也就是说在30秒内 hash的值是固定.

修改 dropbear监听端口

dropbear 不提供pam认证模块 因此不能使用totp认证,openssh-pam提供了该功能,因此以下操作为了使用openssh而禁用dropbear

默认的 dropbear 监听在22端口 为了不和下面的openssh 混淆,先改到其他端口,等openssh配置正确再关闭dropbear服务,这样是为了在openssh配置不正确时,而dropbear停止服务,没有任何ssh的方法进入系统


如上图 dropbear监听在2222端口

创建google-authenticator令牌

在linux系统下载
ubuntu
sudo apt-get install libpam-google-authenticator libpam0g-dev
centos
sudo yum install google-authenticator

如果你使用win10 可以 下载ubuntu20子系统 然后下载
sudo apt-get install libpam-google-authenticator
运行
google-authenticator
手动根据提示选择
或者指定选项
google-authenticator -t -d -r 3 -R 30 -W -Q UTF8 -l root@openwrt -f -s /tmp/root@openwrt
说明
-l root@openwrt 用户名@设备名 这是显示在 freeotp 或 手机端 google-authenticator 的名称


1.手机端可以下载
Google Authenticator APK for Android
freeotp 推荐这个
https://freeotp.github.io/
将app打开扫描上面产生的二维码 点开该项 可以看到产生的一次性数字密码
2. 处理 /tmp/root@openwrt

将 /tmp/root@openwrt 的内容复制到 openwrt
192.168.2.1 为路由器地址
上面改了ssh端口为 2222
scp -o Port=2222 /tmp/root@openwrt root@192.168.2.1:~/.google_authenticator
并且设置访问权限
chmod 600 ~/.google_authenticator

openwrt18安装openwrt19的软件包

硬件 newifi3-d2 系统 OpenWrt 18.06.5
openwrt18没有google-authenticator的包, 19版本才有,但18版本的系统可以安装19版本的包

从软件源 手动下载两个包 google-authenticator-libpam 和 libqrencode

url 根据你的设备决定,这里是 newifi3-d2 使用 mipsel_24kc,如果不知道,可以查阅
/etc/opkg/distfeeds.conf
类似于
src/gz openwrt_base http://downloads.openwrt.org/releases/18.06.5/packages/mipsel_24kc/base
可以得知为mipsel_24kc平台的 因此对应到openwrt19也是一样的路径

ssh登录到openwrt

cd /tmp
wget https://mirrors.cloud.tencent.com/openwrt/releases/19.07.6/packages/mipsel_24kc/packages/google-authenticator-libpam_1.06-1_mipsel_24kc.ipk

wget
https://mirrors.cloud.tencent.com/openwrt/releases/19.07.6/packages/mipsel_24kc/packages/libqrencode_4.0.2-2_mipsel_24kc.ipk

安装本地包
opkg install /tmp/libqrencode_4.0.2-2_mipsel_24kc.ipk
opkg install /tmp/google-authenticator-libpam_1.06-1_mipsel_24kc.ipk

安装配置openssh

opkg update
opkg install openssh-server-pam
注意,需要带pam的openssh 因为google-authenticator需要pam模块认证
创建连接
ln -s /usr/lib/security/pam_google_authenticator.so /lib/security/pam_google_authenticator.so
配置 sshd
编辑 /etc/ssh/sshd_config
指定端口
Port 22
#启动口令认证
ChallengeResponseAuthentication yes
#启动pam模块
UsePAM yes
#允许root登录到ssh ,openwrt默认使用root登录系统的
PermitRootLogin yes

配置 pam
编辑 /etc/pam.d/sshd
可以在第一行插入 内容如下
auth requisite pam_google_authenticator.so
或者 放在最后一行
效果是 如果在第一行 则登录ssh式 首先验证totp口令再验证用户shadow口令
如果放在最后一行 则先验证用户shadow口令 再验证totp口令
重启openssh
/etc/init.d/sshd enable
/etc/init.d/sshd restart

同步ntp时间

google_authenticator 以utc时间作为计算源,确保客户端(如手机使用的freeotp)和服务器(ssh)的utc时间误差不超过30秒,否则不能得到正确的结果导致ssh无法登录
跟大多数路由器一样,新3路由器没有内置的电池保存时钟,每次重启后时间记录会丢失

1.如果在能连接网络的情况下 可以使用 时间同步 来设置路由器的时间
例如 编写一个开机同步ntp时间服务器的脚本
opkg install ntpdate

/etc/rc.local

PROCNAME=`which ntpdate`[ -n $PROCNAME  ] && ntpdate ntp1.aliyun.com>/dev/null 2>&1 &

2.使用 非对称算法 rsa dsa 的认证方式验证 作为保留的登录方式,例如在固定的电脑使用免密登录,而在其他场合使用口令+totp登录

最后

关闭dropbear服务 但不卸载
/etc/init.d/dropbear disable

openwrt 使用google-authenticator为openssh做totp登录认证相关推荐

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

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

  2. java用户的登录图片_Java 如何用 token 做用户登录认证

    1.什么是 token??? Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌. 2.token 做用户登录认证 ● 流程 3. Java 实现 ● 用户登录生成 token,保存到 ...

  3. java+登录window域认证网页_Java 如何用 token 做用户登录认证

    1.什么是 token??? Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌. 2.token 做用户登录认证 ● 流程 3. Java 实现 ● 用户登录生成 token,保存到 ...

  4. python调用api做用户登录认证_(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌...

    x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RE ...

  5. python调用api做用户登录认证_Python使用用户名、密码和API密钥连接到API

    您似乎正在使用IG Labs REST Trading API:文档说明有两种身份验证模式,具体取决于您指定的API版本.您引用的标题文档是所涉及的不同标题的概述.这一节对于实际理解身份验证/授权如何 ...

  6. java通过ldap添加用户后_ldap连接不上改用户_JAVA通过LDAP做用户登录认证,怎么做业务的异常处理?...

    通过java.namming包实现LDAP用户登录认证,怎么区分账号被冻结.停用.不存在等异常的业务情况呢? 参考的是:网上普遍流传的LDAP连接的代码 public boolean auth(Str ...

  7. Linux下使用Google Authenticator配置SSH登录动态验证码

    说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个 验证码,只有输入正确的验证码之后,再输入 密码才能登录.这样就增强了ssh登录的安全性. 3.账 ...

  8. google authenticator 工作原理

    Google authenticator 介绍 Google authenticator是一个基于TOTP原理实现的一个生成一次性密码的工具,用来做双因素登录,市面上已经有很多这些比较成熟的东西存在, ...

  9. 【Linux】使用Google Authenticator 实现ssh登录双因素认证

    一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...

最新文章

  1. jedate-开始使用一款好用的时间插件
  2. VTK:图像迭代器用法实战
  3. 案例_文件下载_代码实现
  4. jep290涉及jdk版本_JDK 14 / JEP 305模式匹配“ Smart Casts”实例
  5. LeetCode - Easy - 119. Pascal‘s Triangle II
  6. Tomcat性能优化总结
  7. java1.8输出语句_[【小白学Java——干货】1.初学Java,认识语法、变量与输出语句...
  8. PCB原理图导入的2种方法,小白也能看懂!
  9. 学习总结5.0 Linux tar打包命令
  10. 一体机(广告投放机)开发
  11. iOS -- 播放本地音频文件 (Swift)
  12. PHR-search:一个基于预测蛋白质层次关系的蛋白质远程同源性检测搜索框
  13. 一些个人感觉很不错的特效
  14. 关于电话电子邮件诈骗的骨感
  15. MAC | svn: E175002: DAV request failed: 411 Content length required.
  16. pr零基础晋升笔记(学习复习用)
  17. 【linux运维】还在为访问服务器工具犯愁吗?这六款Linux常用远程连接工具你肯定得知道
  18. iThoughtsX for mac(优秀的思维导图软件)
  19. 高等数学(第七版)同济大学 习题12-1 个人解答
  20. 磨金石教育分享:43款字体设计工具大集合,超赞!

热门文章

  1. IDEA编译项目提示程序包不存在,Maven不拉包问题解决办法
  2. 老龄化社会,“免验”的验证码更重要
  3. 日本公共廁所不爲人知的新功能
  4. 如何维系人脉?快点进来看看吧!
  5. 基于 RabbitMQ 的实时消息推送
  6. 深度补全文章详读系列
  7. OPPOA53_官方线刷包_救砖包_解账户锁
  8. 旋转矩阵转化成四元数的三种算法
  9. 社交系统ThinkSNS品牌10周年庆
  10. java入门中心_Java初学者怎么入门