【ECS】ECS安全组实践——玩转安全组

简介: 本文从授权和撤销安全组规则、加入和移出安全组讲解云服务器ECS的安全组最佳实践。

网络类型

阿里云的网络类型分为经典网络和专有网络VPC,对安全组支持不同的设置规则:

  • 如果是经典网络,您可以设置内网入方向、内网出方向、公网入方向和公网出方向的安全组规则。
  • 如果是专有网络VPC,您可以设置内网入方向和内网出方向的安全组规则。


安全组是区分网络类型的,一台经典网络类型的ECS实例只能加入经典网络的安全组。一台专有网络VPC类型的ECS实例只能加入本VPC的安全组。


安全组内网通讯的概念

本文开始之前,您应知道以下几个安全组内网通讯的概念:

  • 默认只有同一个安全组的ECS实例可以网络互通。即使是同一个账户下的ECS实例,如果分属不同安全组,内网网络也是不通的。这个对于经典网络和专有网络VPC都适用。所以,经典网络类型的ECS实例也是内网安全的。
  • 如果您有两台ECS实例,不在同一个安全组,您希望它们内网不互通,但实际上它们却内网互通,那么,您需要检查您的安全组内网规则设置。如果内网协议存在下面的协议,建议您重新设置。
  • 允许所有端口。
  • 授权对象为CIDR网段(SourceCidrIp):0.0.0.0/0或者10.0.0.0/8的规则。


说明 如果是经典网络,上述协议会造成您的内网暴露给其它的访问。


  • 如果您想实现在不同安全组的资源之间的网络互通,您应使用安全组方式授权。对于内网访问,您应使用源安全组授权,而不是CIDR网段授权。


安全组规则的属性

安全组规则主要是描述不同的访问权限,包括如下属性:

  • Policy:授权策略,参数值可以是accept(允许)或drop(拒绝)。
  • Priority:优先级,根据安全组规则的创建时间降序排序匹配。规则优先级可选范围为1~100,默认值为1,即最高优先级。数字越大,代表优先级越低。
  • NicType:网卡类型。如果只指定了SourceGroupId而没有指定SourceCidrIp,表示通过安全组方式授权,此时,NicType必须指定为intranet。
  • 规则描述:
  • IpProtocol:IP协议,取值:tcp、udp、icmp、gre或all。all表示所有的协议。
  • PortRange:IP协议相关的端口号范围:
  • IpProtocol取值为tcp或udp时,端口号取值范围为1~65535,格式必须是“起始端口号/终止端口号”,如“1/200”表示端口号范围为1~200。如果输入值为“200/1”,接口调用将报错。
  • IpProtocol取值为icmp、gre或all时,端口号范围值为-1/-1,表示不限制端口。
  • 如果通过安全组授权,应指定SourceGroupId,即源安全组ID。此时,根据是否跨账号授权,您可以选择设置源安全组所属的账号SourceGroupOwnerAccount。
  • 如果通过CIDR授权,应指定SourceCidrIp,即源IP地址段,必须使用CIDR格式。


授权一条入网请求规则

在控制台或者通过API创建一个安全组时,入网方向默认deny all,即默认情况下您拒绝所有入网请求。这并不适用于所有的情况,所以您要适度地配置您的入网规则。

例如,如果您需要开启公网的80端口对外提供HTTP服务,因为是公网访问,您希望入网尽可能多访问,所以在IP网段上不应做限制,可以设置为0.0.0.0/0,具体设置可以参见以下描述,其中,括号外为控制台参数,括号内为OpenAPI参数,两者相同就不做区分。

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

说明 上面的建议仅对公网有效。内网请求不建议使用CIDR网段,请参见经典网络的内网安全组规则不要使用CIDR或者IP授权


禁止一个入网请求规则

禁止一条规则时,您只需要配置一条拒绝策略,并设置较低的优先级即可。这样,当有需要时,您可以配置其它高优先级的规则覆盖这条规则。例如,您可以采用以下设置拒绝6379端口被访问。

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


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

对于经典网络类型的ECS实例,阿里云默认不开启任何内网的入规则。内网的授权一定要谨慎。

说明 为了安全考虑,不建议开启任何基于CIDR网段的授权。


对于ECS实例来说,内网的IP经常变化,另外,这个IP的网段是没有规律的,所以,建议您通过安全组授权对经典网络内网的访问。

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

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


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


将需要互相通信的ECS实例加入同一个安全组

一个ECS实例最多可以加入5个安全组,而同一安全组内的ECS实例之间是网络互通的。如果您在规划时已经有多个安全组,而且,直接设置多个安全组规则过于复杂的话,您可以新建一个安全组,然后将需要内网通讯的ECS实例加入这个新的安全组。

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

您可以在控制台上将一台实例加入安全组,具体操作,请参见ECS实例加入安全组

如果您对阿里云的OpenAPI非常熟悉,您可以通过OpenAPI进行批量操作,具体操作,请参见查询ECS实例。对应的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)


将ECS实例移出安全组

如果ECS实例加入不合适的安全组,将会允许本该拒绝的访问或者拒绝本该允许的访问,这时您可以选择将ECS实例从这个安全组中移出。但是在移出安全组之前必须保证您的ECS实例已经加入其它安全组。

说明 将ECS实例从安全组移出,将会导致这台ECS实例和当前安全组内的网络不通,建议您在移出之前做好充分的测试。


对应的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)


定义合理的安全组名称和标签

合理的安全组名称和描述有助于您快速识别当前复杂的规则组合。您可以通过修改名称和描述来帮助自己识别安全组。

您也可以通过为安全组设置标签分组管理自己的安全组。您可以在控制台直接设置标签,具体操作请参见设置标签,也可以通过API设置标签。


删除不需要的安全组

安全组中的安全组规则类似于一条条白名单和黑名单。所以,请不要保留不需要的安全组,以免因为错误加入某台ECS实例而造成不必要的麻烦。

相关实践学习
基于ECS搭建FTP服务
本教程介绍如何在Linux实例上安装并配置vsftpd,在被动模式下,使用本地用户访问FTP服务器的配置方法。。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
监控 安全 Ubuntu
从零开始学安全:服务器被入侵后的自救指南
在信息爆炸时代,服务器安全至关重要。本文针对黑客入侵问题,从应急处理、系统恢复到安全加固全面解析。发现入侵时应冷静隔离服务器,保存日志证据,深入排查痕迹;随后通过重装系统、恢复数据、更改密码完成清理;最后加强防火墙、更新软件、部署检测系统等措施防止二次入侵。服务器安全是一场持久战,需时刻警惕、不断优化防护策略。
1325 1
|
7月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1312 1
|
8月前
|
人工智能 安全 算法
长擎安全操作系统:构筑企业级服务器安全的坚固基石
长擎安全操作系统,以自主可控内核为基础,构建七层纵深防御体系,全面支持国密算法与可信计算,适配能源、金融、制造等关键行业,为企业服务器提供全方位安全保障,助力数字化转型安全发展。
|
8月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
2056 0
|
存储 弹性计算 安全
阿里云服务器付费类型、地域、镜像、存储、带宽和安全组设置与选择注意事项参考
在我们通过自定义购买的方式购买阿里云服务器器ECS时,会有多个选项,有的新手用户可能并不是很清楚这些选项是什么,选择或设置时需要注意什么,本文将从付费类型、地域与可用区、镜像、存储、带宽和安全组等多个方面,为您详细解析云服务器购买过程中各个参数与配置的选择注意事项,以供参考。
578 66
|
8月前
|
云安全 弹性计算 安全
阿里云服务器安全功能解析:基础防护与云安全产品参考
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题。阿里云服务器除了提供基础的防护之外,还提供了一系列安全防护类云产品,以确保用户云服务器的安全。本文将详细介绍阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品,帮助用户更好地理解和使用阿里云服务器的安全功能。
|
11月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
791 28
|
人工智能 安全 Linux
安全体检 | 服务器的终极卫士
阿里云的安全体检是为用户提供的一项免费安全检测工具,旨在通过调用云安全中心和配置审计中的安全检测能力,汇总检测结果,涵盖病毒攻击、风险配置和服务器漏洞三方面。该服务帮助用户及时发现并解决潜在的安全问题,提升云上安全水平。与云服务诊断不同,安全体检更侧重于深层次的安全检测,确保服务器的安全稳定运行。
安全体检 | 服务器的终极卫士
|
弹性计算 Linux 云计算
阿里云操作系统控制台——ECS操作及云计算应用实践
本文详细介绍了云服务器ECS的使用流程,包括开通服务、系统配置、权限管理、组件安装及内存全景诊断等关键步骤。通过开通阿里云操作系统服务、授予RAM用户权限和安装必要组件,可实现对服务器的有效管理与维护。在内存诊断部分,展示了如何发起诊断并解析结果,帮助精准定位内存问题。此外,文章还讲解了利用ECS训练模型的操作方法,从上传文件到终端命令执行,直至完成模型训练。最后总结指出,掌握这些技能不仅提升了对云服务器架构的理解,还为实际业务提供了高效解决方案,展现了ECS在数据处理与分析中的重要价值。
阿里云操作系统控制台——ECS操作及云计算应用实践