标签: VPC

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(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文化,可以概括为“提高组织的安全文化”
  • 全员进行安全培训。

    安全是每个人的工作—不仅仅是那些工作头衔上有安全的人的工作。

  • 在企业中确立“人+责任 = 安全”的意识

文章来源:https://aws.amazon.com/cn/blogs/china/ten-best-practices-for-vpc-security/?nc1=b_rp

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

本文转自AWS官方博客《VPC安全的十个最佳实践

云网互联之What篇

引言

《百喻经》中有这样一个故事:有个富翁见到别人的三层楼高大壮观、宽敞漂亮,很是羡慕,于是叫来工匠建造这样的房子。但是当工匠开始丈量土地、打造土坯、准备建楼时,富翁却表示不能理解,说“我用不着下面的两层楼,现在只要你给我造第三层”。当时的人听了,都觉得好笑:“这世上哪有空中楼阁啊”?这个段子你觉得好笑吗?还是无趣? 

说回当代,有个5W1H分析法,相信很多人都听过。度娘说,这是1932年美国政治学家拉斯维尔开始提出的,对一件事物要从何因、何事、何地、何时、何人、何法(Why、What、Where、When、Who、How)等六个方面提出问题进行思考,才能全面把握。

回到21世纪20年代、天朝、如火如荼的IT本行,我国经济迅猛发展、科技奋起直追;从企业到个人、从首富到草根,普遍心浮气躁,希望一步登天、一夜暴富、一口吃成胖子。不对不对,是一下瘦成闪电。IT发展本就日新月异,新技术、新概念、新事物层出不穷。笔者注意到很多从业者对待IT技术和产品,都抱着速成心态,对What、Why一知半解,但却信心满满地认为自己能快速把产品搭起来(How),用起来。看官稍微想一下,这跟那个只要三层楼的富翁比,谁是小巫,谁是大巫呢?

当然,这第一、二层的What和作为地下地基的Why,掌握起来费时费力费脑,就像建造1、2层楼花钱费事也是一样的。所以笔者对富翁们表示充分理解、不觉得好笑。本系列文章争取在笔者能力范围内,简单直观地科普一些What方面概念,希望读者尽量轻松地掌握全貌,以便在锤炼自己的know-how时看到森林、知道方向,有章法、不露怯。多说一句,AWS服务手册很全、准确性很高,如果Know What、Know Why掌握了,Know How还是相对容易的。

本文说的是云网互联,不需要读者懂云,但要懂点网。如果您看来下段描述的传统网络,也是一头雾水,那也不用浪费时间往下看了,毕竟网络基础的水也挺深。

最后声明,本人能力一般、水平有限、贻笑大方、敬请谅解。特别是哪些对云网的5W都了如指掌的专家,全当饭后消遣就好了。当然如有谬误,欢迎指正,以免误人子弟。

典型企业网络

传统企业网一般是一栋大楼、一片园区以至于全国多地数据中心互联组成的,里面有各种设备和软件,接入了很多员工。

上图是个典型的企业网络,如您对企业网络环境有了解,那么图中内网环境是私有IP地址空间、公网环境就是互联网、DMZ区是内外网的缓冲地带、对外的服务器一般放在这里、内网里的服务器群主要对内服务、多地之间专线互联需要路由器交换机一堆复杂网络设备、员工通过办公网访问内网、上外网要走NAT转换、客户通过互联网访问DMZ中的对外访问、外出员工通过互联网回来需要VPN等等,应该是比较熟悉的。

如果您对类似环境心知肚明、讲的头头是道,如果您打算/正在/已经上云、但对云中网络了解不多,那看完本文,您会有一些收获的。

云中网络概念

林子大了什么鸟儿都有,领域深了就有专用术(hei)语(hua)。对传统网络熟悉的小伙伴,对于专线、互联网专线、子网/掩码、交换机、路由器、接口、路由等概念肯定不陌生(如果陌生、全当我没说),到了公有云,就像从百货商场转到超市,虽然大同、可是小异也不少。这儿给初入云的网络老鸟普及一下黑话。

VPC

企业网络不管大小,一般使用统一的私有网络空间。也就是说整个网络内部的IP地址均不重叠,均有可能互通。较大复杂网络环境还会进行专门的IP空间规划设计。这样一个统一的网络空间,一般是一个IGP域,也常被叫做一张网络。

云中理念有些不同,一般会在云中每个区域(比如AWS北京、AWS宁夏)都建一个、甚至几个独立的私有网络空间,这个叫做VPC。实际上,AWS为每个用户、在每个区域都设置了一个默认的VPC,重叠使用172.31.0.0/16这段IP地址。通常情况下,客户在云中不同区域部署不同的应用,相互之间没有关系,所以使用多个重叠的私有空间也没什么不便。

但是,传统企业上云往往作为内网的延伸,不同的VPC之间、与内网之间都需要通信。此时就需要提前对VPC及IP地址空间做好规划,保证地址不重叠。让后再设法打通相互间的路由。

子网(Subnet)

云中子网跟传统子网概念基本相同,可粗略对应为三层交换机的一个VLAN,有自己的网址和掩码,路由表、网络ACL、流日志也都长在上面。

每个子网都可以开启流日志,会把包含五元组统计的xflow日志写入到云存储S3中。需要注意的是,开启流日志、设置ACL都会对网络性能带来不小影响,除非必须,一般都不做。

网关(Gateway)

传统语义里的网络设备,像路由器、交换机、NAT、VPN等,在云里一般都叫网关。比如NAT Gateway,VPN gateway,Internet Gateway, Direct Connect Gateway,Transit Gateway等等。前两个语义自明,Internet Gateway基本就是互联网出口路由器。后两种下文专门介绍。

路由(Route)

传统网络中理解的路由,是路由器/三层交换机的一组配置数据;因为云中淡化了路由器、交换机的概念,所以把路由表定位成了一个独立对象,包含一组路由表的对象。这个对象可以关联到子网/网段上,表示这些网段可使用其包含的路由表。

特别说明的是,上图右侧AWS的路由对象里,除了代表默认路由的0.0.0.0/0路由项之外,一般还包含一个target是local的路由表项,使得同一VPC里的所有网段可以互通。这种表述方式在传统网络里也是没有的。

除此之外,子网互通的路由设法跟传统网络是一致的:要上公网,就把默认路由指到Internet Gateway上,有这个路由的子网就叫做公有子网;没有公网IP的虚机要上公网,就把默认路由指到NAT Gateway上。当然,这个NAT 网关得先起到能上公网的公有子网里。

弹性IP地址(Elastic IP)

您对公网地址、私网地址一定不陌生,还恍惚记得公网地址是一个叫做IANA的组织负责的,把10.0.0.0/8、172.16.0.0/12, 192.168.0.0/16三段保留下来,不会分配到公网中。所以企业内部组网的IP规划都选在这三个空间内。否则万一跟公网IP地址冲突、基本NAT也无法访问。

云中组网,VPC内同样使用这些私网地址。需要公网访问的,可以使用公网地址,这个概念跟传统网络中是一样的。只是AWS公网地址资源较为丰富,如果您愿意,可以让您的每台虚机都使用公网地址,也不收额外费用。

不过,云中有个弹性IP地址的新概(hei)念(hua),不少上云新手都把弹性IP地址等同于公网地址了。虽然技术上弹性IP地址确实是公有IP地址,但是含义还是有两点关键区别的。

实践中,因不熟悉两者区别,大量使用弹性IP带来繁琐操作及成本浪费的,公有IP变化影响业务生产的情况,还是经常遇到的。

云主机IP和网卡

云上开的虚机,大家都叫云主机。不管开在公有子网还是私有子网,默认都给云主机通过DHCP分配一个私网IP,绑定在主网卡上。不知您注意到没有,即便是在公有子网上开的具有公网地址或者弹性地址的云主机,登进去用ifconfig看,也只能看到私网地址(敲黑板啦)。只有在AWS控制台上、或者通过特定方法取元数据,才能看到公有地址。

透过这个现象,网络老炮们不难猜出,其实公有地址/弹性地址在云的底层实现上,还是配置在公网出口路由器的NAT表里面的。弹性地址和公网地址的区别,也只是云平台的底层业务逻辑不同而已(跑题了哈)。

老炮们可能还会疑惑:自有网络里我可以给服务器配多个IP、可以加多块网卡,可以设置浮动IP、HA切换自动飘过去,上了云还行吗?黎叔负责任地告诉大家,在云里:

  • 给云主机加多个网卡;
  • 给一块网卡配多个IP地址;
  • 私网IP地址自己指定;
  • 不同网卡长在不同的子网上,构成多穴主机;
  • 浮动地址按需自动飘走

所有这些都是不允许的。哈哈!开个玩笑,所有这些都是可以的,而且比物理服务器上设置更简单容易,起码不用开机箱、插拔网卡。只是有一点需要注意,这些操作要在AWS控制上或者通过AWS命令行/API执行,只通过ip add命令在操作系统内增改是不生效的。

所以,老炮们用多台云主机DIY一套HA数据库,是可以搭建起来的。只是这种场合大部分人都选用云中托管服务。

安全组Security Group

上面提到,一般不建议在子网上设置太多的ACL(哦,忘了说一句,AWS里的黑话叫NACL),那网络访问控制咋整呢?

这里AWS又整出了一句黑话,叫做安全组。其实这个安全组基本就是本机防火墙策略,也就是针对云主机的ACL列表。这个概念在云中非常基础、也非常重要。用云新手十个中有八个在这上面栽过跟头,因为AWS的安全组默认没有策略,也就是默认云主机是完全不通的。Ping不通、80等服务端口也统统不通。

据说有的云是默认全通的,虽然开始方便,但方便惯了,很可能忘了设置,被黑、被挂马在公网上是分分钟的事儿。这个跟企业内网环境差别很大(不好意思又扯远了哈)。

安全组的概念比较好理解,就是从哪些IP范围来,到哪个端口的流量允许进来,没配置的一律不让进。把设定的安全组绑到哪些云主机上,策略就对哪些云主机生效。而且,一个安全组可以绑到多台虚机、一台需要可以绑上多个安全组,还是比较方便灵活的。

很多人不太了解的是上图中红框内写法。从哪儿来,不是设IP范围吗?写成IP V6虽然眼生,还可以理解。写成sg-xxxx是个什么鬼?其实只是一种非常方便和有效的写法,指的是允许sg-xxxx这个安全组绑定的所有云资源进来。这样,云主机动态伸缩时连通关系就可以既简单又严谨了。

云网干吗互联

这里的云,指的是公有云。本文以AWS公有云为例,相信是具有典型和普遍意义的;这里的网,指的是上述传统企业网络。云中VPC是独立的私网,企业网也多为独立私网,这些私网都可以设法通过NAT上公网,也可以设法把内部服务开放给公网访问。这样,无论私网还是公网上的用户,都可以访问发布到公网的服务。私网中的应用,当然也可以访问发布到公网的服务,如下图各虚线路径所示。

既然这样,干吗还要搞什么云网互联呢?这个看似不是问题的问题,其实是值得考虑一下的。不同的原因,带来的不同的互联方案。稍微想一下,需要额外搞云网互联的动机,大致又两个:

一是担心数据安全,毕竟公网上啥人都有,通过公网的流量要是包含机密信息,被人偷听怎么办?内网服务暴露到公网,被人黑了怎么办?基于这样担心的,大多选择云网VPN互联的省钱方式。

二是担心公网带宽不足、时快时慢。公共毕竟是公用的,啥时塞车企业控制不了,要是需要带宽时塞车了,影响关键业务可不行。这种大带宽、高SLA要求大多选择拉专线互联,反正不差钱。

云中网络互联

要做云网互联,先要把云内私网互联搞搞清楚。VPC是局限与云中的某个区域的独立网络空间,相同区域的多个VPC之间,不通区域的VPC之间怎么互联呢?

AWS云大致提供三种互通的方法,分别叫做终端节点、对等连接、中转网关。实现互通效果程度不同。

终端节点(Endpoint)

除了VPC内的私网云资源外,AWS还提供很多公网云资源,比如AWS的云存储S3就是公网访问的。VPC内的云主机访问自己的云存储,就得从公网转一圈儿。同样,VPC内的云主机访问另一VPC暴露到公网的服务,也得从公网转一圈儿。如果您不差钱,不在乎性能,这样绕着走也没什么。而且很多云用户就是这么绕着走的。但您要是追求完美,还是有既省钱、又高效、又安全的办法的。这就是设置终端节点和终端节点服务(Endpoint Service)。方法就是把需要别的VPC直接访问的访问设置为终端节点服务,在对方的VPC里为终端节点服务和AWS的公网服务设置个终端节点,原理上是在VPC上长个网卡/网关连着对端服务。

对等连接(VPC Peering)

终端节点方式允许VPC通过内网访问其他VPC发布的服务,但并不是两个VPC内任意虚机可以互通。而且可以是跨区域、跨AWS账户互通的。

中转网关(Transit Gateway)

VPC Peering实现了两个VPC的互通,如果N个VPC都要互通咋办?只能两两之间设置VPC Peering。需要n*(n-1)/2个VPC Peering。如果n=10,要设45个;n=20呢,要设190个。傻了吧?之所以这么傻,笔者认为是以前多VPC互通的需求并不多。

随着传统企业大规模上云,此类需求当然会增多。所以AWS新推出了Transit Gateway。这个东西基本上就是个路由器,哪些VPC需要互联,相互之间路由怎么设置,您随意。有了Transit gateway,云中VPC互联,基本上跟传统网络互联一样、随您设置了。

云网VPN互联

主要担心服务和数据安全,对网络带宽和质量要求不是很高的情况下,使用VPN实现云网互联是高性价比的选择。这是在云中VPC和企业网这两个私有网络之间,透过现有的互联网专线、在互联网上搭建一个VPN通道实现的。

客户网关就是传统的VPN设备、支持VPN的路由器或者软件,如果云端也部署云主机,自行安装VPN软件的话,就是传统的VPN方案,跟云没有一毛钱关系,网络老炮们对此应不陌生。

当然,云端的VPN软件,您也可以从AWS云市场中选用熟悉的思科、Juniper之类的VPN软件,实现一键安装部署。大部分客户更常见的选择是,使用AWS提供的VPN网关服务。

云网专线互联

使用专线实现云网互联相对复杂,云上概念和云下施工都较复杂,是本文Know What的重点。

先说云下看得见摸得着的部分,这个需要一定的广域网集成经验,大多数传统客户也是请集成商协调运营商搞的。

  1. 您要首先确定云网专线的两端(运营商黑话叫AZ端)的地点,比如从某市某区某楼某层某处,到AWS指定的某市某区某楼某层某处;然后确定所需的带宽和质量要求。
  2. 然后找运营商询价买专线。总体说来带宽越高、距离越远就越贵,不同运营商、不同省份、不同线路、不同购买渠道价格差异还是挺大的,一般大企业才买(又扯远了)。
  3. 买好专线,配合运营商施工,要运营商保证专线AZ端连通,集成商保证A端(企业网)到Z端(AWS指定机房内)的路由器互通。

上面过程可能耗时上月、花费不菲,但敲黑板了,这个与AWS没有一毛钱关系,AWS文档也不会提。与AWS的云网互联操作及费用,是从AWS指定的某市某区某楼某层某处的这个路由器开始的:

  1. 在AWS Direction Connect服务中,提交专线开通申请,等待AWS线下批准(这个服务黑话叫DX,别问我为什么,我也不知道);
  2. 然后与AWS配合,从上面那个路由器上拉条光纤进AWS。

对了,路由器及相关设备占的机房和机柜不属于AWS云,您可能需要自己找这个IDC租机位。还有,要是您所需带宽小于1G,还得找AWS授权的网络合作伙伴接线。

到此为止,物理网络施工完成。下面是云内逻辑部件及服务,还是比较复杂,概述如图:

这里涉及到的AWS术语包括VPG、TG、DXG、VIF、DX Connection,笔者糊涂了一阵的是TG和DXG的区别:他们都能跨AWS账户、跨区域实现VPC和DX连接,啥时候用哪一种呢?

鲁迅说,凡是需要研究、才能明白。他从历史中研究出来吃人的道理,我研究半天,发现用DXG连接多个VPC时,实现的是VIF到VPC的连通,而两个VPC之间是不通的;而TG作为云内路由器,就没有这个缺陷。而且DX要连TG,必须使用中转VIF和DXG才行。

如需进一步协助或服务,请留言,泰岳云业务会提供详细资料及专业服务。

VPC配置指南

本文主要包含以下内容

  • 公有子网和私有子网的区别
  • 如何新建IGW,如何更改路由表
  • 如何创建NAT网关,如何更改路由表
  • 合理的网络拓扑
  • VPC Wizard

公有子网与私有子网

  • 子网:VPC是跨可用区的.在创建VPC后需要为每个可用区添加一个或多个子网,子网不可跨可用区。
  • 公有子网:子网的关联路由表包含指向Internet网关的路由的子网。
  • 私有子网:子网的关联路由表不包含指向Internet网关的路由的子网。
  • 仅限VPN的子网:特别的,一个子网没有通向Internet网关的路由,但其流量会被路由到虚拟专用网关以进行VPN连接,则这个子网就是仅限VPN的子网。

image-20180821103147315

如上图

  • Subnet1:有通向Internet网关的路由,因此它是公有子网
  • Subnet2:没有通向Internet网关的路由,因此它是私有子网
  • Subnet3:没有通向Internet网关的路由,但流量可达VPN,因此它是仅限VPN的子网

InternetGateways

使用Internet网关(InternetGateways,igw),可实现VPC中的实例与Internet之间的通信。

Internet网关有两个用途:

  1. 在VPC路由表中为Internet可路由流量提供目标
  2. 为已经分配了公有IPv4地址的实例执行网络地址转换(NAT)

当生成AWS账户的时候,AWS系统会默认的在每一个区域内都生成一个默认的VPC,并且这个默认的VPC已经绑定了一个Internet网关;一个Internet网关一次只能绑定一个VPC;当VPC中有EC2实例等AWS资源的时候,Internet网关是不能手动和相结合的VPC相分离的

路由表

每个子网都会和路由表相结合使用,并且只能使用一个路由表;VPC中的子网是共有子网还是私有子网是由该子网使用的路由表决定的

如果该路由表中有Internet网关路由条目,那么该子网就是共有子网;

路由表由一系列的路由规则组成,决定了子网的访问权限;默认情况下,同一个VPC之间的子网之间是可以相互通信的;当路由表和子网已经结合的情况下,该路由表是不能被删除的。

配置Internet网关

Internet网关在配置时需要具有对应的子网,在配置之前请确保您已经添加了所需的子网

  • 创建Internet网关并将其附加到VPC
    • 打开AmazonVPC控制台https://console.aws.amazon.com/vpc/
    • 在导航窗格中,选择Internet网关,然后选择创建Internet网关。 image-20180821114813780
    • (可选)为Internet网关命名,然后选择创建
    • 选择刚刚创建的Internet网关,然后选择操作,附加到VPC。 image-20180821114052114
    • 从列表中选择VPC,然后选择附加。

image-20180821114448728

  • 创建自定义路由表
    • 打开AmazonVPC控制台https://console.aws.amazon.com/vpc/
    • 在导航窗格中,选择RouteTables,然后选择CreateRouteTable。 image-20180821115416967
    • 在CreateRouteTable对话框中,可以选择命名您的路由表,选择您的VPC,然后选择Yes,Create。

image-20180821135611911

    • 选择您刚刚创建的自定义路由表。详细信息窗格中会显示选项卡,以供您使用其路径、关联和路线传播。
    • 在Routes选项卡中,依次选择Edit、Addanotherroute,然后根据需要添加以下路由。完成此操作后,选择Save。
      • 对于IPv4流量,在Destination(目的地)框中指定0.0.0.0/0,然后在Target(目标)列表中选择Internet网关ID。
      • 对于IPv6流量,在Destination(目的地)框中指定::/0,然后在Target(目标)列表中选择Internet网关ID。

image-20180821140205194

    • 在SubnetAssociations选项卡上,选择Edit,选中子网的Associate复选框,然后选择Save。

image-20180821140326210

NAT网关

使用网络地址转换(NAT)网关允许私有子网中的实例连接到Internet或其他AWS服务,但阻止Internet发起与这些实例的连接。在创建NAT网关时需要指定与该网关关联的弹性IP地址。创建NAT网关之后,必须更新与您的一个或多个私有子网关联的路由表,以将Internet绑定流量指向该NAT网关。这使您的私有子网中的实例可以与Internet通信。

配置NAT网关

image-20180821152642033

    • 指定要在其中创建NAT网关的子网,并选择要与该NAT网关关联的弹性IP地址的分配ID。完成后,选择CreateaNATGateway。

image-20180821160503177

    • NAT网关会显示在控制台中。片刻之后,其状态会更改为Available,此后它即准备好供您使用。

image-20180821160905824

  • 为NAT网关配置路由表
    • 打开AmazonVPC控制台https://console.aws.amazon.com/vpc/
    • 在导航窗格中,选择RouteTables。
    • 选择与私有子网关联的路由表,然后依次选择Routes、Edit。
    • 选择Addanotherroute。对于Destination,键入0.0.0.0/0。对于Target,选择NAT网关的ID。

image-20180821162613752

    • 在SubnetAssociations选项卡上,选择Edit,选中子网的Associate复选框,然后选择Save

image-20180821171757732

    • 选择Save。

为确保NAT网关可以访问Internet,与NAT网关所在子网关联的路由表必须包含使Internet流量指向Internet网关的路由。如果删除NAT网关,则NAT网关路由会保留为blackhole状态,直到您删除或更新这些路由。

合理的网络拓扑

image-20180821171757732

一个合理的网络拓扑应该包含有以下几部分:

  • Internet Gateway
  • Elastic Load Balancing

Elastic Load Balancing可以在多个目标(如AmazonEC2实例、容器和IP地址)之间自动分配传入的应用程序流量,实现负载均衡。它可以在单个可用区内处理不断变化的应用程序流量负载,也可以跨多个可用区处理此类负载。ElasticLoadBalancing提供三种负载均衡器,它们均能实现高可用性、自动扩展和可靠的安全性,因此能让您的应用程序获得容错能力。

Elastic Load Balancing:

    • 直接与InternetsGateway连接
    • 与AutoScalingGroup连接
  • 堡垒机/NAT网关

通常情况下,堡垒机(也称为“跳转机”)是在系统中访问私有主机的一个最佳实践。例如,您的系统可能包含一个不希望被公开访问的应用服务器,当需要在这台服务器上进行产品的更新或系统补丁程序的管理时,您通常会登录到堡垒机,然后从那里访问(即“跳转到”)应用服务器。

在本拓扑中,Web实例以及数据库实例位于私有子网中,无法被直接访问。因此,您需要通过堡垒机来访问并管理这些实例。

堡垒机:

    • 最好仅向特定的IP地址范围开放
    • 直接与InternetsGateway连接
    • 位与公有子网,通常情况下,AutoScaling会与ELB结合使用,之后实例在启动后会自动加入ELB的目标组,在终止实例前会先等待ELB连接耗尽。
    • 为了保证实例的安全与可用性,实例应分别位于多个可用区的私有子网中

数据库实例:

    • 为了保证您数据的安全,数据库实例不应能直接从外网访问,数据库实例应位于私有子网中。
    • 使用主从架构:

将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈

主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发

    • 为了保证可用性,主数据库与从数据库应位于不同的可用区中

VPC Wizard

VPC控制台中提供了四种VPC向导用于创建常用场景下的VPC的创建

image-20180822135511214

实例在 AWS 云的专用隔离部分中运行,该部分可直接访问 Internet。可使用网络访问控制列表和安全组对您实例的入站和出站网络流量提供严格控制。适用于运行单层、面向公众的Web应用程序(如博客或简单网站)的VPC。

除了包含公有子网之外,此配置还添加了一个私有子网,该子网的实例无法从 Internet 寻址。私有子网中的实例可以使用 Network Address Translation (NAT) 通过公有子网与 Internet 建立出站连接。适用于运行面向公众的Web应用程序的VPC,同时仍在第二个子网中保留非公开访问的后端服务器。

此配置在 Amazon VPC 和数据中心之间添加了 IPsec VPN 连接,可有效地将数据中心扩展到云中,同时为 Amazon VPC 中的公有子网实例提供面向 Internet 的直接访问。适用于将数据中心扩展到云中的VPC,并实现从VPC直接访问Internet。

实例在 AWS 云的专用隔离部分中运行,该部分带有一个私有子网,该子网的实例无法从 Internet 寻址。您可以通过 IPsec 虚拟专用网 (VPN) 隧道将此私有子网连接到您的企业数据中心。适用于将数据中心扩展到云中的VPC,无需将您的网络连接到Internet即可使用Amazon基础设备。