SSH 安全加固篇:通过“运维密码”小程序实现 SSH 双因子认证

简介:

背景

近来很多知名企业都出现了密码泄露,通过单一的密码对敏感和重要信息进行保护已经面临越来越多的挑战,因此业内对多重认证的呼声也越来越高,而其中的双因子认证得到了业界的普遍认可。

什么是双因子认证

双因子认证Two-factor authentication(即 2FA),是一种通过组合两种不同的验证方式进行用户身份验证的机制。

在这种多重认证的系统中,用户需要通过两种不同的认证程序:

  • 提供他们知道的信息(如用户名/密码)
  • 再借助其他工具提供用户所不知道的信息(如用手机生成的一次性密码)

SSH 双因子认证实现思路

在 SSH 服务器端安装 Google 身份验证器服务器端组件,这样,在使用密码或密钥登录 SSH 服务器时,同时通过与 Google 身份验证器相匹配的客户端所提供的验证信息来确认登录者的身份和权限。这里的客户端可以使用Google 身份验证器Google Authenticator应用,也可以使用我们开发的、采用同一个 RFC 规范的“运维密码”微信小程序。

Google 身份验证器所采用的算法规范基于 TOTP RFC 草案

(题外话,RSA 硬件令牌,也是采用了类似的机制,只不过客户端是硬件的;而最近 Apple 公司的一些服务所需要的双因子认证也是一样的,但是其用于呈现验证信息的是手机或平板上的 iOS 内部组件,非独立应用。)

关于Google 身份验证器

为了鼓励广泛采用双因子认证的方式,Google 公司发布了Google 身份验证器Google Authenticator,这是一款开源的、可基于开放规则(如 HMAP/ 基于时间)生成一次性密码的软件。它是一款跨平台软件,可运行在 Linux、Android、iOS 上。Google 公司同时也支持插件式鉴别模块pluggable authentication module PAM ,使其能和其它适用于 PAM 进行验证的工具(如 OpenSSH)协同工作。

Google 身份验证器分为两个部分,分别是服务器端组件和客户端应用,都称之为“Google 身份验证器”,这里,我们为了澄清起见,会在说明时指明。

关于运维密码

Google 公司所开发的身份验证器以简洁著称,但也因此缺乏一些必要的特性,比如备份功能——这使得使用该身份验证器的人时时处于手机丢失的恐慌之中。(虽然 Google 提供的服务器端和自身的服务也提供了紧急验证码,以用于这种情况下的自救,但是很多采用 Google 身份验证器的服务并不支持和提供紧急验证码)

作为一家紧密关注于运维安全、积极倡导信息安全的技术社区,Linux 中国 久已有开发一个新的替代品的想法。恰逢微信推出小程序平台,我们感觉到这正是一个良机,可以充分利用到微信和小程序的便利之处,又适合小程序的使用情境。

原文发布时间为:2017-03-30

本文来自云栖社区合作伙伴“Linux中国”

相关文章
|
29天前
|
安全 Shell Linux
ssh密码忘记了怎么办
通过上述措施,不仅能够有效应对SSH密码遗忘的挑战,还能全方位加固SSH连接的安全,确保数据传输的无忧。
20 2
|
2月前
|
运维 安全 网络安全
常用的运维工具:SSH和远程连接工具详解
常用的运维工具:SSH和远程连接工具详解
110 3
|
3月前
|
安全 Shell 网络安全
告别繁琐密码,一键解锁GitHub高效秘籍!SSH配置大揭秘,让你的代码托管之旅飞起来!
【8月更文挑战第4天】在使用GitHub时,频繁输入账号密码颇为不便。采用SSH协议可提升安全性并简化流程。本文以问答形式指导你快速配置GitHub SSH:了解SSH优势、学会生成与添加SSH密钥及测试连接。通过简单的步骤,即可实现无缝代码推送与拉取,享受高效、安全的开发体验。记得保护好私钥并根据需要设置多个密钥对。
64 7
|
3月前
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
125 0
|
5月前
|
安全 Linux Shell
SSH服务器拒绝密码登录的解决方法
SSH服务器拒绝密码登录的解决方法
1311 1
|
4月前
|
网络安全 数据安全/隐私保护
服务器密码登录出现了:SSH connection failed: connect ECONNREFUSEDxxxxxxxx:22 * Xshell提示 SSH connection fa
服务器密码登录出现了:SSH connection failed: connect ECONNREFUSEDxxxxxxxx:22 * Xshell提示 SSH connection fa
|
4月前
|
JSON 小程序 JavaScript
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
132 0
|
4月前
|
安全 Linux 网络安全
ssh中的密码登录和密钥登录
ssh中的密码登录和密钥登录
|
4月前
|
Linux 网络安全 数据安全/隐私保护
如何在Linux中设置SSH无密码登录
这样,你就设置了SSH无密码登录。但请注意,这种方式虽然方便,但如果你的私钥落入他人手中,他们就能访问你的服务器,所以要妥善保管你的私钥。
75 0
|
6月前
|
小程序 JavaScript 数据安全/隐私保护
分享全栈开发医疗小程序 -带源码课件(课件无解压密码),自行速度保存
看到好多坛友都在求SpringBoot2.X + Vue + UniAPP,全栈开发医疗小程序 - 带源码课件,我看了一下,要么链接过期,要么课件有压缩密码。特意整理了一份分享给大家,个人认为还是比较全面的。希望对大家有所帮助!课程仅供大家学习交流使用!
106 1
分享全栈开发医疗小程序 -带源码课件(课件无解压密码),自行速度保存
下一篇
无影云桌面