云服务器ECS安全组实践(二)

云服务器ECS安全组实践(一)中我们简单介绍了安全组的一些规则和约束和实践,在创建一台云服务的时候,它作为几个必选参数之一,可见它的重要性。本文将继续安全组的介绍,本篇涉及到下面的几个内容:

  • 授权和撤销安全组规则
  • 加入安全组和离开安全组

阿里云的网络类型分为经典网络和VPC,他们对安全组支持不同的设置规则。对于经典网络你可以设置下面的几个规则: 内网入方向、内网出方向、公网入方向、公网出方向。对于VPC网络可以设置: 内网入方向、内网出方向。

在开始本篇之前描述几个安全组内网通讯的概念:

  • 默认情况下只有同一个安全组的机器可以网络互通,即便同一个用户的两个安全组的机器内网网络也不通。这个对于经典网络和VPC网络都适用。所以经典网络的云服务器也是内网安全的。
  • 如果您的非同一个安全组的两台云服务网络内网可以互通而这又不符合您的预期,请检查您的安全组内网规则设置。如果内网协议存在下面的协议,建议您重新设置。如果是经典网络这样会导致您的内网暴漏给其它的访问。
    • 允许所有端口
    • 授权对象为CIDR网段 (SourceCidrIp): 0.0.0.0/0 或者 10.0.0.0/8的规则
  • 如果资源创建在不同的安全组内,想实现网络互通就需要通过安全组进行授权。对于内网访问,我们建议您使用源安全组授权不要使用CIDR网段。

安全规则主要是描述不同的访问权限,主要有下面的属性:

  • Policy: 授权策略 accept or drop
  • Priority: 优先级根据创建的时间降序排序匹配。规则优先级可选范围为1-100,默认值为1,即最高优先级。数字越大,代表优先级越低。
  • NicType:当对安全组进行相互授权时(即指定了SourceGroupId且没有指定SourceCidrIp),必须指定NicType为intranet。
  • 规则描述,通过安全组授权,NicType只能选择intranet,和通过CIDR授权只能二选一
    • SourceGroupId: 通过安全组,默认对SourceCidrIp授权
    • IpProtocol: tcp | udp | icmp | gre | all
    • PortRange: 例如 80/80
    • SourceGroupOwnerAccount 非可选,仅为跨帐号授权的时候
  • 通过CIDR授权规则:
    • SourceCidrIp: CIDR的网段
    • IpProtocol: tcp | udp | icmp | gre | all
    • PortRange: 例如 80/80
    • SourceGroupOwnerAccount 非可选,仅为跨帐号授权的时候

授权一条入网请求规则

当在控制台或者API创建一个安全组,是不存在任何的安全规则,意味着默认情况下您的入网请求全部是拒绝的。所以您要适度的配置您的入网规则。

如果需要开启公网的80端口对外提供HTTP服务,由于公网访问,我们期望的是入网尽可能多访问,所以在IP网段上不做限制,设置为 0.0.0.0/0。可以参考下面的属性,括号外为控制台参数,括号内为OpenApi参数,两者相同就不做区分。

  • 网卡类型(NicType):公网(internet)如果是VPC类型的只需要填写intranet, 通过EIP实现
  • 授权策略(Policy):允许(accept)
  • 规则方向(NicType):入网
  • 协议类型(IpProtocol):TCP(tcp)
  • 端口范围(PortRange):80/80
  • 授权对象(SourceCidrIp): 0.0.0.0/0
  • 优先级(Priority): 1

上面的建议仅对公网有效,内网请求严格不建议使用CIDR网段,请参加下文

禁止一个入网请求规则

禁止一条规则就比较简单。只需要配置一条拒绝策略,但是同时设置较低的优先级即可,这样当需要的时候您可以通过配置其它的高优先级的规则覆盖这条规则即可。例如下面就设置了拒绝6379端口被访问。

  • 网卡类型(NicType):内网(intranet)
  • 授权策略(Policy):拒绝(drop)
  • 规则方向(NicType):入网
  • 协议类型(IpProtocol):TCP(tcp)
  • 端口范围(PortRange):6379/6379
  • 授权对象(SourceCidrIp): 0.0.0.0/0
  • 优先级(Priority): 100

经典网络的内网安全组规则不要使用CIDR或者IP授权

对于经典网络的服务器,阿里云默认不开启任何内网的入规则。内网的授权一定要谨慎。为了安全考虑,非常不建议开启任何基于CIDR网段的授权,对于弹性计算来说内网的IP经常变化的,其次这个IP的网段是没有规律的,所以对于经典网络的内网我们只建议您通过安全组授权内网的访问。

例如您在安全组 sg-redis上构建了一个redis的集群,为了只允许特定的机器访问这个redis的服务器编组,例如 sg-web,您不需要配置任何的CIDR,只需要添加一条入规则即可,指定相关的安全组id即可。

  • 网卡类型(NicType):内网(intranet)
  • 授权策略(Policy):允许(accept)
  • 规则方向(NicType):入网
  • 协议类型(IpProtocol):TCP(tcp)
  • 端口范围(PortRange):6379/6379
  • 授权对象(SourceGroupId): sg-web
  • 优先级(Priority): 1

对于VPC类型的如果您已经通过多个VSwitch规划好了自己IP范围设置,您可以通过CIDR设置,但是如果您的VPC网段不够清晰的话也建议优先考虑使用安全组作为入规则。

将需要互相通信的云服务器加入同一个安全组

在上一篇中我们提到,一个云服务器最多可以属于5个安全组。还有一条原则是同一安全组之间的云服务器是网络互通的,如果您在规划的时候已经有多个安全组,而直接设置多个安全规则过于复杂的话,您可以选择需要内网通信的机器,将它们加入同一个安全组即可。

安全组是区分网络类型的,对于一个经典类型的云服务器只可以选择加入经典网络的安全组,对于VPC类型的云服务器只可以加入本VPC的安全组。

这里也不建议您将所有的云服务器都加入一个安全组,将会使得您的安全组规则设置变成梦魇。对于一个中大型应用来说,每个服务器编组的角色不同,要合理的规划自己的入方向请求和出方向请求是非常有必要的。

加入一个安全组非常简单,您可以在控制台选择一个云服务器,然后点击更多->选择安全组管理即可,或者选择实例详情,进入本实例安全组查看进行操作。

如果您对阿里云的OpenApi非常熟悉,您可以参考使用OpenApi弹性管理云服务器ECS,您可以通过OpenApi方便的进行批量操作, 对应的python片段如下:

def join_sg(sg_id, instance_id):
    request = JoinSecurityGroupRequest()
    request.set_InstanceId(instance_id)
    request.set_SecurityGroupId(sg_id)
    response = _send_request(request)
    return response

# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)

将云服务器移除安全组

如果云服务器加入不合适的安全组,将会导致暴漏或者Block您的服务,这个时候你可以选择将服务器从这个安全组中移除。由于云服务器必须属于一个安全组,您需要另外一个安全组。

加入一个安全组非常简单,您可以在控制台选择一个云服务器,然后更多->选择安全组管理即可,或者选择实例详情,进入本实例安全组查看进行操作。

将云服务器从安全组移出,将会导致这个云服务器和当前安全组内的网络不通,建议您做好充分的测试。

对应的python片段如下

def leave_sg(sg_id, instance_id):
    request = LeaveSecurityGroupRequest()
    request.set_InstanceId(instance_id)
    request.set_SecurityGroupId(sg_id)
    response = _send_request(request)
    return response

# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)

定义合理的安全组名称和TAG

合理的安全组名称和描述非常有助于您快速的识别当前的复杂的规则的组合含义。所以您可以在通过修改名称和描述来,同时安全组也支持TAG标签来设置。您可以通过TAG来分组管理自己的安全组。您可以在控制台直接设置,或者通过API来设置TAG。

删除不需要的安全组

我们提到,安全组中的安全规则类似于一条条的白名单和黑名单。对于不需要的安全组请不要保留,以免错误的加入某个云服务器而造成不必要的麻烦。

时间: 2025-01-30 06:40:21

云服务器ECS安全组实践(二)的相关文章

云服务器ECS安全组实践(一)

应用上云除了对资源生命周期管理和应用交付是一个转变,更重要是思维方式的转变.本篇文章就简单介绍下上云的一个重要概念安全组(Security Group).本文是安全组系列的第一篇,主要介绍安全组的基本概念.约束和如何配置入网规则. 安全组的基本概念和约束 安全组在云端提供类似虚拟防火墙功能,用于设置单个或多个 ECS 实例的网络访问控制,它是重要的安全隔离手段.在创建 ECS 实例时,必须选择一个安全组.您还可以添加安全组规则,对该安全组下的所有 ECS 实例的出方向和入方向进行网络控制. 安全

云服务器ECS安全组实践(三)Tips篇

在使用安全组的过程中,一个常见的错误是将所有的云服务器放置在一个安全组之中,这样虽然减少了初期配置的工作量,但是长期来看将会使得您的业务系统网络交互变得复杂和不可控,在执行安全组变更的时候没办法明确的知道添加和删除规则的影响范围. 合理的规划和区分不同安全组将使得您的系统更加便于调整,同时可以梳理应用的提供的服务和不同的应用进行分层.所以我们推荐您对不同的业务规划不同的安全组,设置不同的安全组规则. 例如对于是否提供公网访问和内网的应用使用不同的安全组,避免不小心疏忽暴露了不需要的服务到公网.同

云服务器 ECS > > 快速入门(二)

步骤 1:配置选型 针对个人用户和企业用户的不同需求,阿里云分别为您推荐了不同的架构. 适合个人用户的配置 入门型: 1 vCPU 1 GB 1 MB,适用于访问量较小的个人网站初级阶段. 基础型: 1 vCPU 2 GB 1 MB,适用于流量适中的网站.简单开发环境.代码存储库等. 通用型: 2 vCPU 4 GB 1 MB,能满足 90% 云计算用户,适用于企业运营活动.并行计算应用.普通数据处理. 进阶型: 4 vCPU 8 GB 1 MB,用于对计算性能要求较高的业务,如企业运营活动.批

【推荐】如何使用好阿里云的网络安全隔离?深入分享阿里云ECS安全组实践经验

近期针对安全的话题非常火爆.特别邀请阿里云专家撰写一组文章,深入分享阿里云ECS安全组实践经验. 阿里云的ECS有经典网络和专有网络(VPC)两种网络类型.经典网络基于阿里云基础网络,通过安全组(类似虚拟防火墙)的一系列数据链路层.网络层访问控制策略实现资源隔离.安全组策略是白名单的方式,不同租户的服务器会处于不同的安全组,默认情况下安全组仅会放行同租户同安全组内的访问请求. 因此安全组和防火墙一样,一般建议配置最小开放原则,关闭不需要外部访问的端口,仅放行必要的入网地址,避免配置的过于开放而给

云服务器 ECS 安全:ECS安全组实践(二)

ECS安全组实践(二) 本文将介绍安全组的以下几个内容: 授权 和 撤销 安全组规则. 加入安全组 和 离开安全组. 阿里云的网络类型分为 经典网络 和 VPC,它们对安全组支持不同的设置规则: 如果是经典网络,您可以设置以下几个规则:内网入方向.内网出方向.公网入方向和公网出方向. 如果是 VPC 网络,您可以设置:入方向 和 出方向. 安全组内网通讯的概念 本文开始之前,您应知道以下几个安全组内网通讯的概念: 默认只有同一个安全组的 ECS 实例可以网络互通.即使是同一个账户下的 ECS 实

云服务器 ECS 安全:ECS安全组实践(一)

ECS安全组实践(一) 在云端安全组提供类似虚拟防火墙功能,用于设置单个或多个 ECS 实例的网络访问控制,是重要的安全隔离手段.创建 ECS 实例时,您必须选择一个安全组.您还可以添加安全组规则,对某个安全组下的所有 ECS 实例的出方向和入方向进行网络控制. 本文主要介绍如何配置安全组的入网规则. 安全组相关的信息 在配置安全组的入网规则之前,您应已经了解以下安全组相关的信息: 安全组限制 安全组默认规则 设置安全组 In 方向的访问权限 设置安全组 Out 方向的访问权限 安全组实践的基本

云服务器 ECS 安全 > ECS安全组实践(三)

ECS安全组实践(三) 在安全组的使用过程中,通常会将所有的云服务器放置在同一个安全组中,从而可以减少初期配置的工作量.但从长远来看,业务系统网络的交互将变得复杂和不可控.在执行安全组变更时,您将无法明确添加和删除规则的影响范围. 合理规划和区分不同的安全组将使得您的系统更加便于调整,梳理应用提供的服务并对不同应用进行分层.这里推荐您对不同的业务规划不同的安全组,设置不同的安全组规则. 区分不同的安全组 公网服务的云服务器和内网服务器尽量属于不同的安全组 是否对外提供公网服务,包括主动暴露某些端

云服务器 ECS 安全 > ECS数据安全最佳实践

ECS数据安全最佳实践 本文档从云服务器ECS使用的角度出发,结合相关产品和运维架构经验,介绍如何打造云端的数据安全. 适用对象 本文档适用于刚开始接触阿里云的个人或者中小企业用户. 主要内容 定期备份数据 合理设计安全域 安全组规则设置 登录口令设置 服务器端口安全 系统漏洞防护 应用漏洞防护 安全情报收集 定期备份数据 数据备份是容灾的基础,目的是降低因系统故障.操作失误.以及安全问题而导致数据丢失的风险.云服务器ECS自带有快照备份的功能,合理运用ECS快照功能即可满足大部分用户数据备份的

云服务器 ECS 数据恢复:磁盘空间满的问题处理(Windows /Linux ) 及最佳实践

磁盘空间满的问题处理(Windows /Linux ) 及最佳实践 磁盘空间满的问题处理(Windows /Linux)及最佳实践 本文主要介绍window.Linux系统磁盘空间不足时对应的处理方法. 适用对象 适用于使用阿里云ECS的用户. 主要内容 云服务器 ECS Linux磁盘空间满排查处理 云服务器 ECS window磁盘空间满排查处理 ECS Linux磁盘空间满排查处理 Windows磁盘空间满排查处理 解决Windows磁盘空间满的问题,有以下处理方式: 释放磁盘空间 扩充磁