带你读《从基础到应用云上安全航行指南》——来上课!一文掌握守住ECS网络安全的最佳方法(2)

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 带你读《从基础到应用云上安全航行指南》——来上课!一文掌握守住ECS网络安全的最佳方法(2)

带你读《从基础到应用云上安全航行指南》——来上课!一文掌握守住ECS网络安全的最佳方法(1):https://developer.aliyun.com/article/1441583


三、控制网络流量

首先,学习一下什么是网络ACL,设想一个典型的场景,交换机AECS部署着重要的服务,不希望被其他交换机下的ECS访问到,这就引入了阿里云专有网络的产品能力,网络ACL,只需要给交换机A绑定一个网络ACL,同时设置网络ACL的规则,阻断其他交换机的访问,即可满足自己的需求。

 

image.png

 

再来介绍一下网络ACL的概念,网络ACL是专有网络中的网络放置、网络访问控制功能,网络ACL的作用范围是专有网络下的虚拟交换机上,您可以自定义设置网络ACL规则,并将网络ACL与交换机进行绑定,实现对交换机中云服务器ECS实例流量的访问控制。

 

网络ACL的几点特性:

 

∙        第一是无状态,设置入方向规则的允许请求后,必须要同时设置出方向的规则,否则就可能导致请求出去了回不来,或者是能进来回不去。

∙        第二点是网络ACL内没有任何规则时,会拒绝所有出入方向的访问,默认是拒绝所有访问的。

∙        第三点也是需要注意的,从交换机下的ECS流量不受网络ACL的限制,左图中大概描述了网络ACL的作用原理,需要说明的是,本节只讲解网络ACL,没有考虑安全组的影响。整个图片分为两部分,左侧表示所有交换机没有绑定网络ACL的场景,在这种场景下,整个专有网络的ECS都不受网络ACL的限制,是可以互相访问的。图片的右侧,表示两个交换机都绑定了网络ACL,左侧交换机内的ECS可以彼此互相访问,不受网络AC的控制,右右侧交换机访问左侧交换机需要受到网络ACL规则的限制。

 

本节讲解了网络ACL的基本概念,下面深入学习一下网络ACL的规则。

 

image.png

 

ACL规则由以下要素构成,生效顺序、策略、协议类型、源地址、目的地址、目的端口范围等。生效顺序表示生效的优先级,值越小,规则的优先级越高。

系统从生效顺序为一的规则开始判断,只要有一条规则与流量匹配及应用该规则,并忽略其他规则。例如,交换机B中的IP172.16.0.1ECS。通过TCP协议访问交换机C中的ECS,再经过如表所示的ACL规则配置后,172.16.0.1的匹配生效顺序2和生效顺序3中规则的源地址。

 

由于生效顺序2的优先级高于生效顺序3,所以会根据生效顺序2的规则拒绝该请求。策略,针对特定流量选择允许或拒绝。协议类型,指定数据流的协议类型,阿里云的ACL协议支持ALLICMPGRETCPUDP五种。第一种是ALL,即所有协议,当选择所有协议类型时,端口的范围是没办法设置的,必须为-1/-1,表示不限制端口,ICMP协议,网络控制报文协议,当选择该协议类型时。

 

端口范围无法设置,为-1/-1,表示无限制端口,GRE通用路由封装协议,当选择该封装协议时,端口范围无法设置,为-1/-1,表示不限制端口,TCP传输控制协议,当选择该协议类时,端口范围为1~65535,设置格式可以为1/20080/80,并且不能设置为-1/-1UDP是用户数据报协议,当选择该协议类型时,端口范围为1~65535,设置格式为1/20080/80,且不能设置为-1/-1

 

源地址,是用于限制入方向的规则,数据流的源地址,目的地址,是用于限制出方向的规则,表示数据流的目的地址,目的端口的范围,是用于限制入方向规则作用的端口范围,这个就是ACL构成要素的一些详解。

 

image.png

 

通过网络ACL限制流量,主要分为三步:

 

∙        第一步是创建网络ACL

∙        第二步是将创建的网络ACL关联到交换机;

∙        第三是设置网络ACL的规则。

 

设置后所有的规则会自动对交换机下的ECS的生效,创建网络ACL是首先在的控制台专有网络ACL的页面点击创建网络ACL,也可以通过OpenAPI CreateNetworkAcl 创建ACL,第二步是关联交换机,可以在VPC的控制台、专有网络、网络ACL、网络ACL详情的页面点击关联交换机,也可以通过 OpenAPI AssociateNetworkAcl 绑定ACL到交换机。

 

第三是设置规则,在VPC的控制台,选择专有网络、网络ACL、网络ACL详情及出入方向的规则进行设置,也可以通过 OpenAPI UpdateNetworkAclEntries 更新网络ACL规则,注意第二步中的OpenAPI 是一个义务的操作,可以通过OpenAPI DescribeNetworkAclAttributes 查询网络ACL的规则的更新状态,更新结果,这就是要讲解的网络ACL详情,下面我们会重点讲解一下,阿里云ECS安全组。

 

image.png

 

什么是安全组,设想几个常见的安全场景:

 

∙        有一个Mysql集群,并且只想对内网放开3306端口的访问

∙        有一个web集群,只想放80/443端口的外部访问

∙        有一个AB两个服务集群,彼此之间不希望他们进行通信

∙        同交换机下的两台ECS不允许彼此访问

 

前三条都可以通过网络ACL实现,但是最后一个场景不行,只能用安全组实现,因为前文提到过,同交换机下的 ECS是不受网络ACL 的限制的。

 

安全组的概念:安全组是一种网卡粒度的虚拟防火墙,能够控制ECS实例的出入站流量。安全组的入方向规则控制ECS实力的入站流量,出方向规则控制ECS实力的出站流量。通俗的讲,就像是一个小区的门卫,只放行允许的访问,对于不允许访问会拒绝掉。

 

上个章节讲解了网络ACL,安全组和它有什么不同?

 

首先是作用范围,网络ACL的作用范围是交换机下的所有ECS,而安全组的生效范围是安全组中的所有ECS

 

安全组是有状态的,网络ACL没有状态,举个例子,源端的ECS出方向的安全组规则允许访问目的端的ECS,即使源端入方向的不允许目地端的ECS放外,出方向的返回请求也不会被拦截。简单概括是安全组能出去就一定能回来,能进去也一定能回来。

需要注意的是,由目的端主动发起的对源端的访问会被拦截掉。而网络ACL则是无状态的,出入方向必须同时配置允许方向的规则才可以放行允许访问。

第三点是同交换机下的ECS受安全组规则的限制,但是不受网络ACL的限制。

第四点是同安组的ECS可以允许互相访问,也可以关闭互相访问的功能。第五是安全组支持组组授权,并且也支持跨账号的数据授权,这一点在功能上是非常强大的,下一节会重点介绍安全组的作用原理。

 

image.png

本节主要介绍安全组的作用原理,要想安全组生效,需要进行如下操作:

 

∙        创建安全组;

∙        根据自己的需求设置安全组的规则;

∙        ECS或者弹性网卡加入安全组。当一台ECS加入安全组后,该安全组的所有规则会自动对该ECS生效,流入或者流出ECS所有流量都要受到这些规则的限制。

 

例如,图中下方的ECS,加入一个安全组,该安全组配置了一条规则,允许来源IP192.168.1.100的访问,访问22端口,对于来自于192.168.0.100的流量,就是不允许访问的,来自192.168.1.100的流量,对于22个端口的访问会被放行,这就是安全组的作用原理。下一节会重点讲解一下安全组ACL的一个规则。

 

image.png

首先是单条自定义的安全组规则由以下的组成元素,第一是协议类型,第二是端口范围,第三是授权对象,第四是授权策略,第五是优先级,第六是规则方向,第七是规则ID

 

详细的介绍一下各个元素,首先是协议类型,匹配流量的协议类型,支持TCPUDPICMP(IPv4)ICMP(IPv6)GRE,端口的范围,匹配流量的目的端口,对于TCPUDP协议,可以指定一个斜线(/)分隔的端口范围,比如8000/9000,或22/22。对其他协议,该字段取值-1/-1表示所有端口。

 

授权对象:入方向规则中匹配流量的源地址,出方向规则中匹配流量的目的地址。支持CIDR地址块(或IP地址)、安全组、前缀列表三种类型。

 

具体如下,举个例子,IPv4地址:例如192.168.0.100IPv4 CIDR地址块:例如192.168.0.0/24,掩码是24位的地段,IPV6地址和IPV6地址段就不再去详细的介绍,还有一个是安全组的ID。支持当前账号下的安全组,或者是跨账号的安全组,还有前缀列表的ID,前缀列表是一些网络前缀。比如CIDR地址块的一些集合,授权对象为前缀列表时,注意该条规则会占用安全组规则的配额数,该条规则占用安全组规则的配额数量,为前缀列表最大条目数,与前缀列表中已有条目数量无关。这一点是需要注意的,下一个是授权策略,可以是允许或者是拒绝,优先级后面会重点去介绍。

 

下一个是规则的方向,就是出方向或者是入方向,还有规则的ID是表示是唯一组件,安全组规则基于协议类型、端口范围、授权对象来匹配流量,并基于授权策略来允许或拒绝放通流量。对于一般的入方向规则,授权对象匹配流量的来源地址、端口范围、匹配流量的目的地址,对于一般的出方向规则,授权对象匹配流量的目的是端口范围,匹配流量的目的端口,这一点是需要好好的去理解一下。本节重点讲解了安全组ACL的一个构成。下一节会讲解规则的排序策略。

 

image.png

 

安全组规则的排序依据,可以归纳成两点,第一点是考虑规则的优先级,优先级数值越小的规则,优先级越高,而高优先级的规则总是排在低优先级规则的前面;第二是考虑授权的策略,遵循拒绝规则优先的原则,在两条规则优先级行同时,授权策略的不拒绝的规则是排在授权策略允许的规则之前。

 

来举一个例子,直观理解一下,上面的图中,是有一个ECS加入了安全组A和安全组B,安全组AB分别有两条入方向的规则,安全组A和安全B的规则都对该ECS生效,所以访问ECS流量都会受到这些规则的约束,AB的两个安全组的规则排序后的结果。

 

首先,是按照优先级进行排序,所以是优先级为1的规则,sgr-4排在最前面,优先级为100的规则,sgr-2排在最后面,由于sgr-2sgr-3的优先级都是二,所以是按照策略进行排序,即拒绝优先,策略为拒绝的排在策略为允许的前面,由于sgr-3是拒绝,所以sgr-3它排在了sgr-2前面,100.0.0.0/8100.0.1.0/24的顶端不允许访问该ECS22端口,该断定的其他地址段可以访问该ECS22端口,也就是右侧图中蓝色线条中这个橙色的部分不允许访问,不允许访问该ECS,其他的部分都是允许的,本节讲解了安全组规则的排序策略,下一节讲解安全组规则的授权对象前缀列表。

 

image.png

 

有一种特殊的需求场景,比如,您在线下的 IDC 有大量的物理机通过公网IP访问服务,左图,最左边框里代表一个线下 IDC 的服务集群,这里面可能有 100 多个公网 IP,他们通过官网访问云上的两个集群,这两个集群分别位于安全组 A 和安全组 B,安全组和 A B 都需要放行这 100 多个公网 IP

 

现在有两种方案,第一种方案,不使用前缀列表的方案,要做的操作是为安全组 A B,分别添加允许线下 100 多个公共 ID 访问的入方向规则,这种方案的缺点是,第一运维成本高,需要做IP数乘以安全组数的次操作,也就是100 乘以 2200多次操作。第二个是每新增一个IP,需要维护每个安全组的规则,每新增一个IP需要有两次操作。

 

第二种方案,是使用前缀列表,使用前缀列表需要做如下操作:

∙        创建前缀列表。

∙        将线下IDC100IP加入到前缀列表中

∙        为安全组AB分别添加一条入方向允许访问的规则,规则的授权对象是在1中创建的集用列表

 

第二个方案极大的降低了运维成本,运维操作数就等于IP的数量,只需要去操作100次。并且攻击事件发生时,可以快速封禁恶意 IP。举个例子,假设线下IDC的这些公网IP是一些恶意的IP,对它进行封禁,发现一个恶意IP,只需要维护一下前缀列表就可以,它就会对所有的IP组都会生效,可以达到快速平定的目的。这就是使用安全组使用前缀列表的场景和介绍。

 

在云上的实践中,逐渐总结出来一套设置安全组规则的最佳实践,接下来会进行一下分享。

 

image.png

 

第一点规划,您可以为安全组设置名称描述,也可以设置安全组的标签资源组,便于进行分类运维,建议您合理设置这些信息,方便快速识别安全组用途,在管理较多安全组时,更加清晰。

 

第二点是以白名单的方式访问安全组,即默认拒绝所有访问,添加允许规则来放通指定的端口范围或者是授权对象。

 

第三是最小授权的原则,避免设置0.0.0.0的全通对象,第二是仅开放允许放开的IP段端口协议,开放 Linux 实例的 22 端口用于远程登录时,建议仅允许特定的 IP (如跳板机 IP)访问,而非所有IP0.0.0.0/0),减少被非法侵入风险。按照用途将规则维护在多个安全组中,并将实例关联到这些安全组。单个安全组的规则数量越多,会增加管理的复杂度,

 

第四点做好隔离,不同类型应用的实例,加入到不同的安全组,分别维护安全组的规则,例如将允许公网访问的实例关联到同一个安全组,仅放通对外提供服务端口,例如80/443,默认拒绝其他的所有访问,避免在允许公网访问的实例上提供一些微信的服务。内部比如 MySQLRedis 等,建议将这些内部的服务部署在不允许公网访问的实例上,并关联其他的安全组。

 

image.png

 

第五点避免直接修改线上环境使用的安全组,可以先克隆一个安全组在测试环境调试,能确保修改后流量是正常的,在对安全组的线上规则去进行变更。

 

第六点是利用组内互通,同一个安全组的ECS默认是可以互相访问的,可以将需要互相通信的ECS实例加入到同一个安全组,避免复杂的 ACL 维护。

 

第七点是利用组组授权,以安全组为授权对象添加规则,安全组规则中五元组中的来源和目的,都可以使用安全组,用户可以把部署相同服务的ECS统一放入到同一个安全组A中,将安全组A作为另外一个安全组规则B的来源并设置放行,安全组A中的ECS都可以访问B中的ECS,这样可以非常便捷的做好服务的隔离。

 

第八是使用前缀列表,正如上一节提到的,安全组规则,元素来源和目的都可以使用前缀列表,这样能够极大的降低运维成本,当攻击来临时,运维的越快,风险和损失就越小,讲解完原理和建议,接下来是一个实践环节。

 

image.png

 

 

可以通过控制台管理安全组的规则和成员:

 

第一是管理安全组规则,在ECS控制台安全组列表页选择具体的安全组,点击安全组详情,设置安全组的规则;

 

第二是管理安全组内的ECS或者弹性网卡。在ECS控制台,安全组列表页,选择具体的安全组,在实际列表页或者是网卡列表tab页面上管理安全组页的成员;

 

第三是更换ECS安全组,可以在ECS控制台实例列表页面选择具体的实例,有一个安全组的tab,点击修改安全组就可以更换ECS安全组,也可以使用OpenAPI管理安全组的规则和成员,下一节会讲解。

 

image.png

 

阿里云提供了管理安全组规则合成的六个核心API,他们可以添加安全组入方规则,添加安全组出方向规则,删除安全组入方规则,删除安全组出发规则,ECS或弹性网卡加入到安全组中,ECS或弹性网卡点击开安全组,右侧是一个请求的实例,可以通过common request或者是阿里云提供的SDK,对这些API进行调用,这就是流量控制的完整内容。


带你读《从基础到应用云上安全航行指南》——来上课!一文掌握守住ECS网络安全的最佳方法(3):

https://developer.aliyun.com/article/1441580

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
1月前
|
弹性计算 监控 数据可视化
ECS网络流量监控
ECS网络流量监控
63 2
|
1月前
|
Linux Shell 网络安全
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
52 1
|
1天前
|
机器学习/深度学习 算法 TensorFlow
【视频】神经网络正则化方法防过拟合和R语言CNN分类手写数字图像数据MNIST|数据分享
【视频】神经网络正则化方法防过拟合和R语言CNN分类手写数字图像数据MNIST|数据分享
|
19天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
1月前
|
机器学习/深度学习 存储 供应链
【软件设计师备考 专题 】运算基本方法:预测与决策、线性规划、网络图、模拟
【软件设计师备考 专题 】运算基本方法:预测与决策、线性规划、网络图、模拟
57 0
|
1月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
32 0
|
1月前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
162 1
|
1月前
|
弹性计算 人工智能 物联网
挖掘阿里云ECS的潜力:创意应用和未来可能性
在云厂商中,我觉得开发者更信赖阿里云的云产品,而且随着阿里云最近宣布云产品降价的消息,会有更多的开发者和企业选择阿里云的云产品。这里拿阿里云的云服务器来做说明,阿里云的云服务器ECS为用户提供了强大的计算资源和灵活的扩展性,使其成为搭建各种有趣和创意应用的理想平台。除了已知的小游戏、小程序和个人网盘等应用案例之外,本文还会进一步探讨ECS在特定场景下的实践经验,并挖掘其在其他领域的潜力,为大家带来更多创意和启发。
557 3
挖掘阿里云ECS的潜力:创意应用和未来可能性
|
1月前
|
机器学习/深度学习 存储 算法
6 种 卷积神经网络压缩方法
6 种 卷积神经网络压缩方法
29 0

相关产品

  • 云服务器 ECS