“安全外壳”SSH 是一种用于在主机之间建立安全连接的网络协议,通常通过端口 22(最好更改)。 SSH 客户端和 SSH 服务器适用于大多数操作系统。 几乎任何其他网络协议都可以在 SSH 内工作,也就是说,您可以在另一台计算机上远程工作、通过加密通道传输音频或视频流等。 除了,
身份验证使用密码进行,但开发人员和系统管理员传统上使用 SSH 密钥。 问题是私钥可能被盗。 添加密码理论上可以防止私钥被盗,但实际上,在转发和缓存密钥时,它们
如何实现双因素认证
Honeycomb 的开发人员最近发布了
这些说明假设您有一个对 Internet 开放的基本主机(堡垒)。 您希望通过互联网从笔记本电脑或计算机连接到该主机,并访问位于其后面的所有其他设备。 2FA 可确保攻击者即使获得对您笔记本电脑的访问权限(例如通过安装恶意软件)也无法执行相同的操作。
第一个选项是 OTP
OTP - 一次性数字密码,在本例中将与密钥一起用于 SSH 身份验证。 开发人员写道,这不是一个理想的选择,因为攻击者可能会建立一个假堡垒,拦截您的 OTP 并使用它。 但总比没有好。
在这种情况下,在服务器端,以下行将写入 Chef 配置中:
metadata.rb
attributes/default.rb
(的attributes.rb
)files/sshd
recipes/default.rb
(复制自recipe.rb
)templates/default/users.oath.erb
客户端安装任何 OTP 应用程序:Google Authenticator、Authy、Duo、Lastpass、已安装 brew install oath-toolkit
или apt install oathtool openssl
,然后生成一个随机的base16字符串(key)。 它被转换为移动身份验证器使用的 Base32 格式并直接导入到应用程序中。
因此,您可以连接到 Bastion 并看到它现在不仅需要密码,还需要 OTP 代码进行身份验证:
➜ ssh -A bastion
Enter passphrase for key '[snip]':
One-time password (OATH) for '[user]':
Welcome to Ubuntu 18.04.1 LTS...
第二个选项是硬件身份验证
在这种情况下,用户不需要每次都输入OTP码,因为第二因素变成了硬件设备或生物识别。
这里Chef的配置稍微复杂一点,客户端的配置取决于操作系统。 但完成所有步骤后,MacOS 上的客户端可以使用密码并将手指放在传感器上确认 SSH 中的身份验证(第二个因素)。
iOS 和 Android 用户确认登录
在 Linux/ChromeOS 上,可以选择使用 YubiKey USB 令牌。 当然,攻击者可以窃取您的令牌,但他仍然不知道密码。
来源: habr.com