全球主机交流论坛

标题: 为 Linux 服务器 SSH 添加 TOTP 动态验证码以及 Java 实现算法 [打印本页]

作者: 寒冰hanbings    时间: 2021-12-21 19:40
标题: 为 Linux 服务器 SSH 添加 TOTP 动态验证码以及 Java 实现算法
本帖最后由 寒冰hanbings 于 2021-12-24 20:18 编辑



为 Linux 服务器 SSH 添加 TOTP 动态验证码以及 Java 实现算法

0x00 TOTP 动态验证码?

TOTP 基于时间的一次性密码算法(Time-Based One-Time Password)是一种根据预共享的密钥与当前时间计算一次性密码的算法,利用不同设备时间相同的特性,将时间作为特定算法的一部分从而达到无需网络进行安全验证的目的。 该算法有两个输入,一个输出,一个输入是随机生成的密钥,密钥需要被验证方和验证器同时持有,另一个输入即系统时间,通常是 UNIX 时,输出则是两方相同的验证码。一般的验证码有效期为 30 秒,每 30

秒生成一个新的验证码。当前有很多领域和行业在使用 TOTP 作为它们的安全验证,比如银行使用的实体验证器,网易的网易将军令等。

这套算法在 RFC6238 中有详细的说明,在后面的实现算法部分详细说明。

0x01 Linux 服务器安装 Google Authenticator

服务器采用腾讯云轻量服务器 Debian Linux 系统,腾讯云轻量服务器是腾讯云基于 CVM 服务器推出以应用为中心的轻量级服务器,优点在于快速部署应用、价格便宜等。有需要在云环境练习 Linux 技能的推荐购买 【腾讯云】云产品限时秒杀,爆款2核4G云服务器首年74元 【腾讯云】境外1核2G服务器低至2折,半价续费券限量免费领取!






0x02 设置验证码生成设备

目前有很多家验证器客户端 比较流行的有 Google Authenticator 、 Microsoft Authenticator、Authy 等。

Microsoft Authenticator、Authy 相比 Google Authenticator 多了一套云同步系统,能防止意外清除软件数据之后丢失密钥导致的各种问题出现。但请注意,选择了带有云同步功能的应用中使用的同步账号必须设置一个高强度密码,避免同步账号被盗取泄露验证码。

因为各家 Authenticator 都不允许界面截图,所以它欠咱几张图片

这里选用 Google Authenticator 下载安装后进入软件,选择扫描条形码,然后扫描上面保存的图片即可,或选择手动输入,账户为备注名字,可随意,密钥则为保存的密钥。

0x03 算法原理

现有实现了 TOTP 的软件中的算法 本质上就是 HMAC-SHA-1 算法,也就是带有盐值的 SHA-1


举个例子



0x04 使用 Java 实现算法

呜呜呜是不是我太菜了,代码贴上来字数就超了 要不要不,看我发在其它地方的版本吧 qwq 知乎

0x05 最后

文章中可能还有错误的地方,欢迎各位提出。

文中提及的代码均在我的开源 Java 中间件项目 Cynops 中 ,欢迎 Star ,也可以 Follow 我的 Github Hanbings 还请前辈们多多指教。


作者: zzzzzsa    时间: 2021-12-21 19:41
顶 项目很有意思
作者: ukx    时间: 2021-12-21 19:58
Make
作者: 咸鱼咸鱼    时间: 2021-12-21 20:02
一眼腾讯云软文
作者: htazq    时间: 2021-12-21 20:02
Mark一下,技术贴帮顶
作者: darius    时间: 2021-12-21 20:05
技术贴必顶
作者: TvT    时间: 2021-12-21 20:05
感谢楼主分享
作者: 寒冰hanbings    时间: 2021-12-21 20:05
咸鱼咸鱼 发表于 2021-12-21 20:02
一眼腾讯云软文

阿巴阿巴阿巴 也不是很软吧 要不是代码发不上来
作者: moehentai2333    时间: 2021-12-21 20:10
你出寒冰?鹅鹅出火拳!
作者: Marlene    时间: 2021-12-21 20:40
很有意思 但对sshd不是很熟悉 生产环境怕一不小心就改坏了
如果有稳定的shell一键脚本就更好了
作者: 二氧化碳    时间: 2021-12-21 20:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: Eric.c    时间: 2021-12-21 20:51
sftp可用?
作者: konololi    时间: 2021-12-21 20:52
增加密码泄漏风险
作者: 875    时间: 2021-12-21 20:57
想问下 这个动态跟密钥相比哪个更好?
作者: rem    时间: 2021-12-21 21:16
花里胡哨
作者: HOH    时间: 2021-12-21 21:20
自找麻烦,还不如自己写一个挑战码登录简单
作者: Meocat    时间: 2021-12-21 21:32
这下可安全了
作者: 在線    时间: 2021-12-21 21:33
现在新注册的都这么厉害吗 比90%MJJ强
作者: 腿毛飘飘    时间: 2021-12-21 21:38
脱裤子放屁,是证书登录不香了还是证书登录不香了?
作者: 寒冰hanbings    时间: 2021-12-21 21:50
本帖最后由 寒冰hanbings 于 2021-12-21 22:01 编辑
875 发表于 2021-12-21 20:57
想问下 这个动态跟密钥相比哪个更好?


密钥安全 如果没有密码要求上密钥 密钥也可以再加这个动态码 不过相比密钥的安全性没什么必要就是了
作者: 寒冰hanbings    时间: 2021-12-21 21:52
在線 发表于 2021-12-21 21:33
现在新注册的都这么厉害吗 比90%MJJ强

呜呜呜 这坛子很过分 昨天我连带图的帖子都发不出来
作者: 寒冰hanbings    时间: 2021-12-21 21:56
腿毛飘飘 发表于 2021-12-21 21:38
脱裤子放屁,是证书登录不香了还是证书登录不香了?

哈哈哈 密钥登录更安全 上了密钥登录也不是很必要加动态验证码了 不过给密码登录多一个保护嘛 需求还是有的
作者: 875    时间: 2021-12-21 22:37
寒冰hanbings 发表于 2021-12-21 21:50
密钥安全 如果没有密码要求上密钥 密钥也可以再加这个动态码 不过相比密钥的安全性没什么必要就是了 ...

哈哈 那还不错  刚研究两天瞎写整合了个密钥脚本,你这出了个动态验证,吓得我以为白忙活了
作者: 笑花落半世琉璃    时间: 2021-12-21 23:06
这v佬还是谁的文章我记得    里面的两步验证内容内容我现在还记得大概

记得以前操作直接吧自己也给锁外面
作者: 寒冰hanbings    时间: 2021-12-21 23:18
笑花落半世琉璃 发表于 2021-12-21 23:06
这v佬还是谁的文章我记得    里面的两步验证内容内容我现在还记得大概

记得以前操作直接吧自己也给 ...

嘿嘿 原创的哦 是我自己的
作者: fmbfmb    时间: 2021-12-22 04:02
mark
作者: Romeoiii    时间: 2021-12-22 07:41
这教程我早就在其它地方看过,是另一个作者发布的,当时看了,觉得还可以,多了一层保护,vps上有特别重要的东西,就可以用这个,防患于未然
作者: biubiu    时间: 2021-12-22 08:08
有没有给win上这个的方法,感觉也听有必要
作者: amao000765    时间: 2021-12-22 08:26
这么说吧 绝大多数机器被黑,并不是应为密码太弱被爆破,而是因为各种程序漏洞导致机器失陷。
作者: 寒冰hanbings    时间: 2021-12-24 20:22
amao000765 发表于 2021-12-22 08:26
这么说吧 绝大多数机器被黑,并不是应为密码太弱被爆破,而是因为各种程序漏洞导致机器失陷。 ...

是这么回事 但防患于未然嘛 多一个防护也没什么不好的
作者: 寒冰hanbings    时间: 2021-12-24 20:24
Marlene 发表于 2021-12-21 20:40
很有意思 但对sshd不是很熟悉 生产环境怕一不小心就改坏了
如果有稳定的shell一键脚本就更好了 ...

有想法弄一个 但是脚本其实风险也挺大的 好多不确定因素 :D
作者: philsilver    时间: 2021-12-26 02:10
战略mark,回头有时间弄一下
作者: SmallL_U    时间: 2021-12-26 22:33
寒冰 是不是你(Doge 难道遇到熟人了
作者: 寒冰hanbings    时间: 2021-12-26 23:03
SmallL_U 发表于 2021-12-26 22:33
寒冰 是不是你(Doge 难道遇到熟人了

是我
作者: Function    时间: 2021-12-26 23:12
优秀,详细实用的技术贴
作者: caizi    时间: 2021-12-27 01:51
本帖最后由 caizi 于 2021-12-27 01:53 编辑

好几年前就上两步验证了,增加了一层,反正想暴力破解ssh是不可能了。

腾讯云的软广?两步验证是随便一台机器都能上的,不是非要这破腾讯云的才行的。




欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/) Powered by Discuz! X3.4