如何安全地配置 AWS EC2 实例

AWS EC2 是 AWS 最受欢迎和使用最广泛的服务之一 。在本文中,了解一些有助于安全配置我们的 EC2 实例的方法 。 
Ayush Priya 的这篇文章最初发表在Kloudle 博客上 。
AWS 的 Elastic Compute Cloud(通常称为 EC2)是一项服务,允许组织启动可用于托管和运行应用程序、数据库等的虚拟机 。EC2 实例具有多种选项,从选择 CPU 内核数量到磁盘空间、内存和操作系统等等 。EC2 服务还包含不同的配置选项和设置,供实例使用 。本叔说过,“能力越大,责任越大”,在这种情况下,有很多设置可供选择,就会出现很多错误配置 。因此,本文将介绍如何安全地配置我们的 EC2 实例 。
 
EC2 实例的安全配置 
尽管这不是为保护您的实例而采取的详尽操作列表,但这些配置是一个很好的起点,因为它们易于理解和实施 。随着人们熟悉 AWS 及其各种其他服务,可以采取其他(高级)措施来进一步加强 EC2 实例的安全性 。目前,我们将坚持直接适用于 EC2 实例的安全设置列表 。
 
启用 IMDSv2 
实例元数据服务 (IMDS) 提供有关实例的信息以及与其关联的各种参数,例如在启动时指定的用户数据 。IMDSv1 将凭证存储在端点中,可以检索这些凭证,然后使用这些凭证通过 AWS CLI 执行操作 。在凭据被渗透的情况下,这可能是毁灭性的 。因此,引入了 IMDSv2 来阻止针对滥用元数据端点的各种攻击 。IMDSv2 使用会话但不将会话令牌作为信息存储在端点本身中,因此在后续调用中生成令牌后无法检索令牌 。
 
通过控制台为新实例启用 IMDSv2 
启动实例时,在“配置实例详细信息”页面下,导航到“高级详细信息”部分,然后:
 

  1. 为“元数据可访问”选项选择“启用” 。
  2. 为“元数据版本”选项选择“V2(需要令牌)” 。
 
如何安全地配置 AWS EC2 实例

文章插图
 
使用 AWS CLI 为新实例启用 IMDSv2 
要在使用 AWS CLI 启动实例时启用 IMDSv2,请在命令中使用以下标志:
aws ec2 run-instances --image-id \--metadata-options "HttpEndpoint=enabled,HttpTokens=required"
 
使用 AWS CLI 为现有实例启用 IMDSv2 
运行以下 AWS CLI 命令以修改实例并启用 IMDSv2:
aws ec2 modify-instance-metadata-options --instance-id --http-tokens required --http-endpoint enabled
 
实施最小许可安全组规则 
安全组是定义允许的入站和出站可访问性以及从实例到各种其他资源、在公共互联网上以及在 VPC 内的防火墙 。重要的是要确保我们只公开在实例上运行的那些需要的服务,并将访问权限限制在需要它的用户/组 。为此,我们需要添加尽可能明确的安全组规则 。例如,不使用 0.0.0.0/0 作为 SSH 协议的允许源,我们可以指定需要访问实例的团队明确使用的通用 VPN 作为源 。
AWS 有大量文档用于创建和管理可用的安全组和规则 。
 
定期修补 
修补是指将软件更新应用到操作系统以进行性能升级、错误修复和由维护操作系统的供应商发布的安全修复的活动 。
修补的步骤因操作系统而异,但基本思路是相同的:使用操作系统的机制检查是否有可用的补丁/更新并应用它 。某些补丁程序还需要重新启动系统,尽管情况并非总是如此 。
例如,可以执行以下步骤来修补运行 Ubuntu 18.04 作为操作系统的 EC2 实例:
 
  1. SSH 进入 EC2 实例
  2. 运行sudo apt update 。
  3. 运行sudo apt upgrade 。
  4. 运行sudo reboot 。
使用 SSM 代理并行修补多台计算机 
如果我们处理的实例数量很少,手动应用补丁就可以了;比如说,10 。但在大多数现实生活中,这个数字通常比这个大,因此手动修补成为一项相当艰巨的任务 。值得庆幸的是,AWS 有一项名为 Systems Manager 的服务,简称 SSM 。SSM 可以同时在多台机器上执行命令,省去了一次手动访问一台机器的麻烦,使其成为一个非常有用的工具 。
“如何在云上修补 Pwnkit 漏洞 (CVE-2021-4034)”在“使用 SSM 修补 AWS 和 GCP 上的多台机器 > AWS”部分下解释了如何使用 AWS SSM 修补多个 EC2 服务器 。
 
为 EBS 卷启用定期备份 


推荐阅读