openwrt 使用google-authenticator为openssh做totp登录认证
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登录认证相关推荐
- SSH 登录添加 Google Authenticator 两步验证 双因子认证
SSH 登录添加 Google Authenticator 两步验证 双因子认证 安装 Google Authenticator # 时间与客户端进行校验,确保服务器时间与手机时间一致,避免时差导致严 ...
- java用户的登录图片_Java 如何用 token 做用户登录认证
1.什么是 token??? Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌. 2.token 做用户登录认证 ● 流程 3. Java 实现 ● 用户登录生成 token,保存到 ...
- java+登录window域认证网页_Java 如何用 token 做用户登录认证
1.什么是 token??? Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌. 2.token 做用户登录认证 ● 流程 3. Java 实现 ● 用户登录生成 token,保存到 ...
- python调用api做用户登录认证_(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌...
x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RE ...
- python调用api做用户登录认证_Python使用用户名、密码和API密钥连接到API
您似乎正在使用IG Labs REST Trading API:文档说明有两种身份验证模式,具体取决于您指定的API版本.您引用的标题文档是所涉及的不同标题的概述.这一节对于实际理解身份验证/授权如何 ...
- java通过ldap添加用户后_ldap连接不上改用户_JAVA通过LDAP做用户登录认证,怎么做业务的异常处理?...
通过java.namming包实现LDAP用户登录认证,怎么区分账号被冻结.停用.不存在等异常的业务情况呢? 参考的是:网上普遍流传的LDAP连接的代码 public boolean auth(Str ...
- Linux下使用Google Authenticator配置SSH登录动态验证码
说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个 验证码,只有输入正确的验证码之后,再输入 密码才能登录.这样就增强了ssh登录的安全性. 3.账 ...
- google authenticator 工作原理
Google authenticator 介绍 Google authenticator是一个基于TOTP原理实现的一个生成一次性密码的工具,用来做双因素登录,市面上已经有很多这些比较成熟的东西存在, ...
- 【Linux】使用Google Authenticator 实现ssh登录双因素认证
一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...
最新文章
- jedate-开始使用一款好用的时间插件
- VTK:图像迭代器用法实战
- 案例_文件下载_代码实现
- jep290涉及jdk版本_JDK 14 / JEP 305模式匹配“ Smart Casts”实例
- LeetCode - Easy - 119. Pascal‘s Triangle II
- Tomcat性能优化总结
- java1.8输出语句_[【小白学Java——干货】1.初学Java,认识语法、变量与输出语句...
- PCB原理图导入的2种方法,小白也能看懂!
- 学习总结5.0 Linux tar打包命令
- 一体机(广告投放机)开发
- iOS -- 播放本地音频文件 (Swift)
- PHR-search:一个基于预测蛋白质层次关系的蛋白质远程同源性检测搜索框
- 一些个人感觉很不错的特效
- 关于电话电子邮件诈骗的骨感
- MAC | svn: E175002: DAV request failed: 411 Content length required.
- pr零基础晋升笔记(学习复习用)
- 【linux运维】还在为访问服务器工具犯愁吗?这六款Linux常用远程连接工具你肯定得知道
- iThoughtsX for mac(优秀的思维导图软件)
- 高等数学(第七版)同济大学 习题12-1 个人解答
- 磨金石教育分享:43款字体设计工具大集合,超赞!