亚马逊AWS官方博客

VPC 安全的十个最佳实践

随着越来越多的企业选择AWS之类的云计算服务,与此同时云计算环境也变得越来越复杂,因此企业必须制定全面、主动的安全策略,并从开始就建立起安全策略,并要随着基础架构的扩展而发展以保持系统和数据的安全。

AWS基础架构的安全性已被设计为当今最具灵活、最安全的云计算环境之一。它的设计目标就是提供一个高度可扩展、高度可靠的平台,使客户能够快速安全地部署应用程序和数据。AWS运行在“责任共担”的安全模型之下。AWS负责底层的云基础设施的安全,其用户负责保护部署在AWS上的工作负载。

 

在AWS的提供的基础设施之中,Amazon Virtual Private Cloud (VPC)承担了非常重要的角色。VPC为我们带来了强大的网络功能,包括静态私有的IP地址、弹性网络接口、安全的Bastion(堡垒)主机设置、DHCP选项、高级网络访问控制、VPN连接、内部IPs和NICs在实例之间的转移等等。在网络安全方面,Amazon VPC 提供了安全组和网络访问控制列表等高级安全功能,可在实例和子网级别启用入站和出站筛选功能。了解更多关于使用Amazon VPC的最佳实践,对于无论正在维护现有的VPC网络,还是计划迁移到AWS环境的企业,都将是有益的。

一、选择满足需求的VPC配置

VPC 是网络架构的基础。设计一个良好的VPC网络架构需要考虑子网、互联网网关、NAT网关、虚拟私有网关、对等连接、VPC终端节点等等的合理配置与安全管理,并要满足具体业务的需求。尽管已经有了更改VPC大小的手段,但考虑到VPC的复杂性以及对于系统的重要程度,强烈建议在规划VPC的时候,建议根据至少两年后的扩展需求来设计Amazon VPC的具体实施

今天,当我们在AWS 管理控制台的“Amazon VPC”页面并选择“启动 VPC 向导”时,
您将会看到用于网络架构的四个基本选项:

  1. 仅带有一个公有子网的 Amazon VPC
  2. 带有公有和私有子网的 Amazon VPC
  3. 带有公有和私有子网以及提供 AWS 站点到站点 VPN 访问的 Amazon VPC
  4. 仅带有一个私有子网以及提供 AWS 站点到站点 VPN 访问的 Amazon VPC

我们要仔细的考虑之后再去选择最适合当前和将来要求的配置。

 

二、为VPC选择恰当的CIDR块

在设计Amazon VPC实例时,您必须考虑所需的IP地址数量以及与数据中心的连接类型,然后再选择CIDR块,其中包括 RFC 1918 或公有可路由 IP 范围。到目前为止,我们还无法更改或修改Amazon VPC设定的CIDR,因此最好选择具有更多IP地址的CIDR块。此外,在设计混合架构实现Amazon VPC与本地数据中心通信时,务必确保Amazon VPC中使用的CIDR范围不重叠或不会与本地数据中心中的CIDR块发生冲突。对于更改VPC大小的需求,可以通过向现有 VPC 添加4个辅助 IPv4 CIDR 来扩展 VPC。还可以通过删除已添加到 VPC 的辅助 CIDR 块来缩小 VPC。但是不能更改 VPC 的 IPv6 地址范围的大小。

 

三、隔离VPC环境

本地环境中存在的物理隔离也应该是云环境实践的一个重要原则。许多最佳实践表明,最好为开发、生产和预发布(Staging)创建一个独立的Amazon VPC。有许多人习惯在一个VPC中管理预发布、生产和开发等环境,不过管理之这样具有不同安全性/子网/隔离权重的Amazon VPC其难度之大时可想而知的。相比之下,我更建议为不同的环境使用独立的VPC

 

四、增强对AWS VPC的保护

运行具有关键任务工作负载的系统需要多个层次的安全性。通过遵循以下一些有用的方法,可以有效的保护Amazon VPC:

  • AWS WAF 是一种 Web 应用程序防火墙,可帮助保护部署在VPC上的Web 应用程序或 API 免遭常见 Web 漏洞的攻击,这些漏洞可能会影响可用性、损害安全性或消耗过多的资源。
  • Amazon Web Services Marketplace提供了第三方提供的Web应用程序防火墙、防火墙以及可用于保护Amazon VPC的其他一些工具。
  • 为了防止未经授权使用或入侵网络,可以配置入侵检测系统(IDS)和入侵防御系统(IPS)。
  • 借助“ 配置特权身份”访问管理,可以审核和监视管理员对VPC的访问。
  • 为了在不同区域之间的Amazon VPC之间或在Amazon VPC之间安全地将信息传输到本地数据中心,可以配置Site-to-Site VPN
  • 安全传输信息的另一种选择是将AWS Transfer用于安全的文件(AWS SFTP)。借助AWS SFTP,可以使用VPC终端节点,并避免使用公共IP地址或通过互联网。此外,AWS SFTP的VPC终端节点通过AWS PrivateLink利用安全功能,该功能在VPC和AWS服务之间提供专用连接。

五、理解VPC上的网络防火墙 – 安全组

AWS通过“安全组”提供了一种虚拟防火墙功能,可在实例级别控制入站和出站的数据流。但是管理AWS网络安全的方式与传统网络防火墙的使用方式有所不同。AWS防火墙的中心组件是“安全组”,基本上是其他防火墙供应商称为策略(或者规则的集合)的组。但是,需要了解安全组和传统防火墙策略之间的关键区别。

首先,在AWS中,安全组的规则中没有特定的“操作”来声明流量是允许还是丢弃。这是因为与传统的防火墙规则不同,AWS安全组中的规则缺省都是允许的的。

第二,AWS安全组规则可以指定流量来源或流量目的地,但不能在同一规则上同时指定两者。对于入站规则,有一个来源可以说明流量的来源,但没有目的地告诉流量该去向。对于出站规则,反之亦然:我们可以设定目标,但不能指定源。这样做的原因是,AWS安全组始终将未指定的一面(源或目的地)设置为使用该安全组的EC2实例。

AWS在允许应用这些安全组规则方面非常灵活。可以将传统安全策略应用于多个防火墙的方式相同,我们可以将单个安全组应用于多个实例。AWS还允许执行与之相反的操作 – 将多个安全组应用于单个EC2实例,这意味着该实例从与其关联的所有安全组中继承规则。这是AWS独特功能之一,使我们可以为特定功能或操作系统创建安全组,然后对其进行混合和匹配以适应业务需求。

六、如无需要,请勿打开0.0.0.0/0(::/0)

通过在安全组中开放0.0.0.0/0(IPv6下为::/0)的端口来允许VPC中的实例是很多专业人员在配置安全组时最常见错误。用户最终打开了他们的云网络,并将其云资源和数据暴露于外部威胁。制定安全组中的策略时需要遵循“最小权限原则”(POLP),仅开放所需的端口,而不是为了简化管理而此让网络暴露在威胁之下。

同样,我们还要关闭不必要的系统端口。

 

七、启用和配置VPC流日志

我们现在可以为VPC或子网或网络接口(ENI)级别启用AWS VPC流日志,可以捕获有关传入和传出 VPC 中网络接口的 IP 流量的信息。我们通常可以将AWS VPC流日志配置为捕获流经EC2、ELB和一些其他服务的ENI和安全组的接受和拒绝条目。通过扫描这些VPC流日志的条目,用以检测攻击模式,警告VPC内部异常活动和信息流。

我们不必担心VPC流日志对于生产环境网络的影响,流日志数据的收集是在VPC网络流量路径之外,因此不会影响网络吞吐量或延迟。

八、用好VPC对等 (VPC Peering)

VPC 对等连接是两个 VPC 之间的网络连接,通过此连接,您可以使用私有 IPv4 地址或 IPv6 地址在两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。

AWS 使用 VPC 的现有基础设施来创建 VPC 对等连接;该连接既不是网关也不是 VPN 连接,并且不依赖某一单独的物理硬件。没有单点通信故障也没有带宽瓶颈。

从安全性上来说,VPC对等的网络流量保留在私有 IP 空间中。所有区域间流量都经过加密,没有单点故障或带宽瓶颈。流量一直处于全球 AWS 骨干网中,不会经过公共 Internet,这样可以减少面临的威胁,例如常见漏洞和 DDoS 攻击。通常,VPC对等可满足许多需求,例如:

  • 互连的应用程序需要在AWS内部进行私有和安全访问。通常,这可能发生在在单个区域中运行多个VPC的大型企业中
  • 系统已由某些业务部门部署在不同的AWS账户中,并且需要共享或私有使用。某些大型组织为各个业务部门,部门和/或团队拥有不同的AWS账户,并且各组之间的通信需求也有所不同。
  • 更好的系统集成访问,例如客户可以将其VPC与核心供应商的VPC对等

九、最廉价的安全工具标签(Tag)!

没看错,我说的就是“标签”。 在VPC中对资源的标记非常重要。 我们可以,并非常希望这样做,使用标记策略来有效地组织用于管理、报告、分析的的资源。 对于大型的复杂的网络基础设施,我们的管理会有很多角度,对安全问题尤其如此。 考虑到这一点,请通过使用任何标记策略来保持最佳做法,并在变化时及时进行修改。 当我们的采用越来越多自动化的工具的时候,你会意识到一个良好的标签设计将会为VPC的安全性、可管理性起到何种重要的作用。

 

十、将安全性集成到DevOps中

无可否认,云计算是一个全新的领域,云计算的安全面临的风险与挑战与日俱增。市场上没有足够的安全计算安全专家,企业也很难找到精通最新云计算技术的专业人员。即使团队雇用了优秀的安全人员,那些可以编写代码的人员也经常被用于开发而不是安全管理。

一个好的经验是,无论企业是否拥有安全运营中心(SOC)或者信息安全(Infosec)专家,都可以使实现安全。在现代化的组织中,安全性不仅应由安全专家或者SecOps团队负责,而应该是整个团队、自上到下的共同努力的目标。请记住这一点,团队中的工具和流程越好,所需的安全专家就越少。我的建议是:

  • 建立具有安全性的DevOps文化,可以概括为“提高组织的安全文化”
  • 全员进行安全培训。安全是每个人的工作—不仅仅是那些工作头衔上有安全的人的工作。
  • 在企业中确立“人+责任 = 安全”的意识

 

到这里,我们已经一起讨论了十个VPC上的安全实践,我希望你已经在你的工作中应用了它们。如果你有关于这篇文章的反馈,请发邮件给我,我的邮箱是lianghon@amazon.com,谢谢!

本篇作者

费良宏

费良宏,AWS Principal Developer Advocate。在过去的20多年一直从事软件架构、程序开发以及技术推广等领域的工作。他经常在各类技术会议上发表演讲进行分享,他还是多个技术社区的热心参与者。他擅长Web领域应用、移动应用以及机器学习等的开发,也从事过多个大型软件项目的设计、开发与项目管理。目前他专注与云计算以及互联网等技术领域,致力于帮助中国的 开发者构建基于云计算的新一代的互联网应用。