我需要在 EC2 上为金融机构托管东西。银行希望进行完整的双因素身份验证,因此需要使用带有密码的密钥进行 SSH。SecureID 或类似的东西会很棒。如何通过 SSH 有效地为我的 EC2 环境创建双因素身份验证?
另外,我可以将 OpenVPN 视为双因素加密的一部分吗?
答案1
和duo_unix,您可以为任何 SSH 登录方法添加双因素身份验证,并且使用Duo OpenVPN 集成,您可以为 OpenVPN 添加双因素身份验证。
免责声明,我在 Duo 工作。
答案2
更新
AWS 最近宣布Amazon EC2 和 Amazon RDS 的资源级权限解决下面我原来的回答中提到的 EC2 和 RDS 中 IAM 支持长期存在的缺陷:
今天,我们通过引入资源级权限使 IAM 变得更加强大亚马逊 EC2和亚马逊 RDS。 [...]
在 EC2 端,您现在可以构建和使用 IAM 策略来控制对 EC2 实例、EBS 卷、图像和弹性 IP 地址的访问。[...]
以下仅列举一些您可以做的事情:
- 允许用户在更大的多用户 EC2 环境中对有限的资源采取行动。
- 为“开发”和“测试”资源设置不同的权限。
- 控制哪些用户可以终止哪些实例。
- 在对某些资源采取行动时,需要额外的安全措施,例如 MFA 身份验证。 [重点是我的]
正如所强调的,使用 MFA当对某些资源采取行动时现在 EC2 实例也可以这样做,因此你可以将 EC2 实例的停止和终止限制为通过用户名/密码进行身份验证的用户和来自 MFA 设备的身份验证码。
初步答案
可通过以下方式轻松获得与 SecurID 类似的双因素身份验证AWS 身份和访问管理 (IAM)通过AWS 多重身份验证。这是否实际上适用于您的问题取决于您的特定用例,即您需要使用双因素身份验证保护哪些场景(例如,提到的 SSH 访问与 AWS 管理控制台访问与访问您在 EC2 上托管的网站等)。
具体来说,IAM 涵盖对 AWS 管理控制台的访问,但显然不包括 SSH,此外,EC2 是 AWS 产品之一,其中 IAM 不适用于资源级别,而仅适用于服务级别,请参阅与其他 AWS 产品集成和将 AWS Identity and Access Management 与 EC2 结合使用,尤其是以下免责声明:
重要的
Amazon EC2 使用 SSH 密钥、Windows 密码和安全组来控制谁有权访问特定的 Amazon EC2 实例。您无法使用 IAM 系统允许或拒绝对特定实例的访问。
请注意,无论是否采用多因素身份验证,都强烈建议对任何 AWS 产品使用 IAM。
最后,我想强调一下 IAM 的最新两个新增功能,它们可能对您的用例有帮助:
- AWS 身份和访问管理 – 现已提供身份联合-此新功能允许企业中的现有身份(例如用户)使用 IAM 的细粒度访问控制访问 AWS API 和资源,而无需为每个身份创建一个 IAM 用户。
- AWS 虚拟(软件)多因素身份验证 - RFC 6238 支持-我们支持硬件 MFA 设备,您可以购买该设备来生成 MFA 身份验证代码。[...] 今天,我们很高兴地宣布,我们将推出一个附加选项,即虚拟 MFA 设备。您现在可以在智能手机或平板电脑上生成 MFA 身份验证代码。
答案3
您需要使用双因素身份验证来保护对 EC2 控制台的访问。您只能听天由命了。对于 SSH 访问,您可以做很多选择。您可以使用 SSH 密钥并要求密钥有密码。但是,请注意,没有什么可以阻止某人编写一个谎称证书有密码的 SSH 客户端。从安全角度来看,SSH 很棒,但它并不总是符合监管要求。例如,密钥可能需要定期重新生成。SSH 不支持这一点。
如果您决定使用双因素身份验证系统,PAM radius 就是您的朋友: http://www.wikidsystems.com/support/wikid-support-center/how-to/pam-radius-how-to
嗯,
答案4
EC2 允许您使用您可以创建的不同 SSH 证书来设置您的机器,对您来说最简单的解决方案就是创建一个需要密码的证书。
还要注意 EC2 的安全限制,安全性是外围的,您不知道哪些机器在里面做什么,因此对机器之间的通信设置严格的安全性,为此非常需要一些强加密 VPN(OpenVPN 或 stunnel)。