阿里云安全ACP认证考试实验之用安全组防勒索病毒

实验概述

英国时间五月十二日,各大媒体纷纷爆出NHS英国国家医疗服务系统的电脑被RansomWare勒索病毒黑了,波及到的几乎是全国范围内的40家医院和医疗组织。接下来的几个小时后,这场‘有毒’的网络攻击迅速扩散到了全球超过99个国家和地区,从俄罗斯内政部,到中国大学生的个人电脑系统。这就是前段时间闹得沸沸扬扬的利用Windows端口漏洞勒索比特币的WannaCry病毒事件。
在这里插入图片描述
利用阿里云的安全组配置可以轻松解决端口漏洞问题,能有效防止勒索病毒事件的再次发生。

本实验将新建一个安全组,将云服务器ECS加入到该安全组中,通过观察对ECS的访问,掌握如何在安全组中控制ECS端口的开放和关闭。

实验目标

完成此实验后,可以掌握的能力有:

  1. 熟悉安全组配置方式

  2. 验证安全组的真实有效性及简易性

第 1 章:实验背景

1.1 背景知识

前面我们介绍的Wannacry病毒勒索事件就是Windows系统的主机开放的端口过多导致的。一旦机器连接在互联网上,勒索病毒就会随机确定IP地址扫描445端口的开放情况,如果是开放的状态则尝试利用漏洞进行感染;如果机器在某个局域网里,它会直接扫描相应网段来尝试感染。阿里云的安全组可以控制主机端口的开放和关闭,有效防止勒索病毒的入侵。
在这里插入图片描述

什么是安全组?

安全组是一个逻辑上的分组,这个分组是由同一个地域(Region)内具有相同安全保护需求并相互信任的实例组成。每个实例至少属于一个安全组,在创建的时候就需要指定。同一安全组内的实例之间网络互通,不同安全组的实例之间默认内网不通。可以授权两个安全组之间互访。

安全组是一种虚拟防火墙,具备状态检测包过滤功能。安全组用于设置单台或多台云服务器的网络访问控制,它是重要的网络安全隔离手段,用于在云端划分安全域。

安全组有哪些限制?
1)单个安全组内的实例个数不能超过 1000。如果您有超过 1000 个实例需要内网互访,可以将他们分配到多个安全组内,并通过互相授权的方式允许互访。

2)每个实例最多可以加入 5 个安全组。

3)每个用户的安全组最多 100 个。

4)对安全组的调整操作,对用户的服务连续性没有影响。

安全组是有状态的。如果数据包在 Outbound 方向是被允许的,那么对应的此连接在 Inbound 方向也是允许的。
安全组的网络类型分为经典网络和专有网络。经典网络类型的实例可以加入同一地域(Region)下经典网络类型的安全组。专有网络类型的实例可以加入同一专有网络(VPC)下的安全组。

什么是安全组规则?
安全组规则可以允许或者禁止与安全组相关联的云服务器 ECS 实例的公网和内网的入出方向的访问。

    用户可以随时授权和取消安全组规则。用户变更的安全组规则会自动应用于与安全组相关联的ECS实例上。

    在设置安全组规则的时候,安全组的规则务必简洁。如果用户给一个实例分配多个安全组,则该实例可能会应用多达数百条规则。访问该实例时,可能会出现网络不通的问题。

安全组规则有哪些限制?
每个安全组最多有 100 条安全组规则。

如何更有效的使用安全组?
在安全组的使用过程中,通常会将所有的云服务器放置在同一个安全组中,从而可以减少初期配置的工作量。但从长远来看,业务系统网络的交互将变得复杂和不可控。在执行安全组变更时,您将无法明确添加和删除规则的影响范围。

合理规划和区分不同的安全组将使得您的系统更加便于调整,梳理应用提供的服务并对不同应用进行分层。这里推荐您对不同的业务规划不同的安全组,设置不同的安全组规则。

区分不同的安全组
公网服务的云服务器和内网服务器尽量属于不同的安全组

是否对外提供公网服务,包括主动暴露某些端口对外访问(例如 80、443 等),被动地提供(例如云服务器具有公网 IP、EIP、NAT 端口转发规则等)端口转发规则,都会导致自己的应用可能被公网访问到。

2 种场景的云服务器所属的安全组规则要采用最严格的规则,建议拒绝优先,默认情况下应当关闭所有的端口和协议,仅仅暴露对外提供需要服务的端口,例如 80、443。由于仅对属于对外公网访问的服务器编组,调整安全组规则时也比较容易控制。

对于对外提供服务器编组的职责应该比较明晰和简单,避免在同样的服务器上对外提供其它的服务。例如 MySQL、Redis 等,建议将这些服务安装在没有公网访问权限的云服务器上,然后,通过安全组的组组授权来访问。

例如:当前有公网云服务器已经和其它的应用在同一个安全组 SG_CURRENT。用户可以通过下面的方法来进行变更。

1)梳理当前提供的公网服务暴露的端口和协议,例如 80、443。

2)新创建一个安全组,例如 SG_WEB, 然后添加相应的端口和规则。

授权策略:允许,协议类型:ALL, 端口: 80/80,授权对象: 0.0.0.0/0, 授权策略:允许,协议类型:ALL,端口: 443/443 授权对象: 0.0.0.0/0。

3)选择安全组 SG_CURRENT, 然后添加一条安全组规则,组组授权,允许 SG_WEB 中的资源访问SG_CURRENT。

授权策略:允许,协议类型:ALL,端口:-1/-1,授权对象:SG_WEB,优先级:按照实际情况自定义[1-100]。

4)将一台需要切换安全组的实例 ECS_WEB_1 添加到新的安全组中。

a. 在 ECS 控制台中,选择 安全组管理。

b. 选择 SG_WEB > 管理实例 > 添加实例,选择实例 ECS_WEB_1 加入到新的安全组 SG_WEB 中,确认 ECS_WEB_1 实例的流量和网络工作正常。

5)将 ECS_WEB_1 从原来的安全组中移出。

a. 在 ECS 控制台中,选择 安全组管理。

b. 选择 SG_CURRENT > 管理实例 > 移出实例,选择 ECS_WEB_1 ,从 SG_CURRENT 移除,测试网络连通性,确认流量和网络工作正常。

c. 如果工作不正常,将 ECS_WEB_1 仍然加回到安全组 SG_CURRENT 中,检查设置的 SG_WEB 暴露的端口是否符合预期,然后继续变更。

6)执行其它的服务器安全组变更。

不同的应用使用不同的安全组

在生产环境中,不同的操作系统大多情况下不会属于同一个应用分组来提供负载均衡服务。提供不同的服务意味着需要暴露的端口和拒绝的端口是不同的,建议不同的操作系统尽量归属于不同的安全组。例如,对于 Linux 操作系统,可能需要暴露 TCP(22)端口来实现 SSH,对 Windows 可能需要开通 TCP(3389) 远程桌面连接。

除了不同的操作系统归属不同的安全组,即便同一个镜像类型,提供不同的服务,如果之间不需要通过内网进行访问的话,最好也划归不同的安全组。这样方便解耦,并对未来的安全组规则进行变更,做到职责单一。在规划和新增应用时,除了考虑划分不同的虚拟交换机配置子网,也应该同时合理的规划安全组。使用网段+安全组约束自己作为服务提供者和消费者的边界。

具体的变更流程参见上面的操作步骤。

生产环境和测试环境使用不同的安全组

为了更好的做系统的隔离,在实际开发过程中,您可能会构建多套的测试环境和一套线上环境。为了更合理的做网络隔离,您需要对不同的环境配置使用不通的安全策略,避免因为测试环境的变更刷新到了线上影响线上的稳定性。

通过创建不同的安全组,限制应用的访问域,避免生产环境和测试环境联通。同时也可以对不同的测试环境分配不同的安全组,避免多套测试环境之间互相干扰,提升开发效率。

仅对需要公网访问子网或者ECS实例分配公网IP
不论是经典网络还是专有网络 (VPC) 中,合理的分配公网 IP 可以让系统更加方便地进行公网管理,同时减少系统受攻击的风险。在专有网络的场景下,创建虚拟交换机时,建议您尽量将需要公网访问的服务区的 IP 区间放在固定的几个交换机(子网 CIDR)中,方便审计和区分,避免不小心暴露公网访问。

在分布式应用中,大多数应用都有不同的分层和分组,对于不提供公网访问的云服务器尽量不提供公网IP,如果是有多台服务器提供公网访问,建议您配置公网流量分发的负载均衡服务(SLB)来公网服务,提升系统的可用性,避免单点。

对于不需要公网访问的云服务器尽量不要分配公网 IP。专有网络中当您的云服务器需要访问公网的时候,优先建议您使用 NAT 网关,用于为 VPC 内无公网 IP 的 ECS 实例提供访问互联网的代理服务,您只需要配置相应的 SNAT 规则即可为具体的 CIDR 网段或者子网提供公网访问能力,具体配置参见 SNAT。避免因为只需要访问公网的能力而在分配了公网 IP(EIP) 之后也向公网暴露了服务。

最小原则
安全组应该是白名单性质的,所以需尽量开放和暴露最少的端口,同时尽可能少地分配公网 IP。若想访问线上机器进行任务
日志或错误排查的时候直接分配公网 IP 或者挂载 EIP 虽然简便,但是毕竟会将整个机器暴露在公网之上,更安全的策略是建议通过跳板机来管理。

使用跳板机
跳板机由于其自身的权限巨大,除了通过工具做好审计记录。在专有网络中,建议将跳板机分配在专有的虚拟交换机之中,对其提供相应的 EIP 或者 NAT 端口转发表。

首先,创建专有的安全组 SG_BRIDGE,例如开放相应的端口,例如 Linux TCP(22) 或者 Windows RDP(3389)。为了限制安全组的入网规则,可以限制可以登录的授权对象为企业的公网出口范围,减少被登录和扫描的概率。

然后,将作为跳板机的云服务器加入到该安全组中。为了让该机器能访问相应的云服务器,可以配置相应的组授权。例如在 SG_CURRENT 添加一条规则允许 SG_BRIDGE 访问某些端口和协议。

说明:使用跳板机 SSH 时,建议优先使用 SSH 密钥对而不是密码登录。

总之,合理的安全组规划使用户在扩容应用时更加游刃有余,同时让用户的系统更加安全

第 2 章:实验详情

2.1 实验资源

在弹出的左侧栏中,点击 创建资源 按钮,开始创建实验资源。
资源创建过程需要1-3分钟。完成实验资源的创建后,用户可以通过 实验资源 查看实验中所需的资源信息,例如:阿里云账号等。

2.2 创建安全组

  1. 通过如下步骤,进入阿里云管理控制台。

1)点击页面左侧的 实验资源 ,并展开 实验资源 小节。点击 前往控制台 ,进入阿里云管理控制台登录界面

2)在阿里云RAM用户登录页面,输入本实验提供的 子用户名,子用户密码,并点击 确定 。
在这里插入图片描述
3)在阿里云管理控制台,点击顶部 产品与服务 ,在弹出的下拉菜单中,依次点击 云计算基础服务 ,弹性计算,云服务器ECS,进入云服务器ECS的管理页面。
在这里插入图片描述
2. 通过如下步骤,新建一个安全组。

1)点击左侧栏的 安全组 ,右侧页面展示安全组列表。

2)在右侧页面顶部的地域栏,选择本次 实验资源 中分配的 地域 ,例如:华北2 等。

说明:用户可以查看到当前账号下已有一个或多个安全组,且有1台相关ECS实例。这是因为ECS实例至少属于一个安全组。

3)点击右上角的 创建安全组。
在这里插入图片描述
4)在弹出的对话框中,输入 安全组名称 。例如: lab-sg ;网络类型 设为 专有网络,并选择 专有网络 与已有安全组 所属专有网络 相同的 专有网络 。

5)完成如上信息配置后,点击 确定。

在这里插入图片描述
页面弹出提示对话框,点击 确定 。
6)此时,可以在安全组列表中,查看到新建安全组 lab-sg 。
在这里插入图片描述

2.3 使用安全组屏蔽所有开放的端口

  1. 通过如下步骤,验证当前ECS的访问情况。

1)打开浏览器,并输入沙箱提供的 Linux服务器 ECS实例 弹性IP ,页面如下图所示。
在这里插入图片描述
2)通过本地远程连接服务,远程登录到 实验资源 中的 Linux服务器 ECS实例,用户可以正常远程登录到ECS实例。

说明:远程连接的详细操作步骤,请参考 帮助文档 。登录时,请使用 实验资源 提供ECS实例的 外网地址 ,用户 和 密码
说明:实验提供的ECS实例,默认访问规则:对所有访问地址开放ECS实例的全部对外端口。因此,用户可以直接访问部署在ECS上的网站,且可以远程登录到ECS实例上。

  1. 通过如下步骤,将平台提供的云服务器ECS添加到新建安全组 lab-sg 中。

1)点击左侧栏的 实例 。

2)在右侧页面顶部的地域栏,选择本次实验资源中分配的 地域 ,例如:华北2 等。

3)点击实例右侧的 管理 ,进入ECS实例的管理页面。
在这里插入图片描述
4)在实例页面,点击左侧栏的 本实例安全组 。

5)在右侧安全组列表的主页面,点击右上角的 加入安全组 。
在这里插入图片描述
6)弹出对话框,选择安全组 lab-sg 。完成后,点击 确定。
在这里插入图片描述
此时,当前实例的安全组列表中,存在两个安全组。

  1. 通过如下步骤,将云服务器ECS从原有安全组移出,避免访问规则受到原有安全组的访问规则影响。

说明:若是没有移出当前安全组列表,则当前实例会同时使用两个安全组中的配置规则。

1)在实例的安全组列表页面,点击 原有安全组 右侧的 移出 。
在这里插入图片描述
在这里插入图片描述
2)此时,ECS实例仅使用新建安全组 lab-sg 中的访问规则。
在这里插入图片描述
5. 通过如下步骤,验证当前云服务器ECS无法通过公网访问。

1)在浏览器中,新建一个标签页,再次访问沙箱提供的 Linux服务器 ECS实例 弹性IP 。等待一段时间后,页面提示 无法访问 等信息。这是因为新的安全组中没有添加任何安全规则,导致无法访问。

说明:若仍正常显示,可能是由于浏览器的缓存导致页面没有更新,请清理浏览器缓存或更换浏览器。
在这里插入图片描述
2)通过本地远程连接服务,远程登录 实验资源 中的 Linux服务器 ECS实例。此时,页面将提示 Operation Time out 或者 超时 等错误,连接失败。

说明:远程连接的详细操作步骤,请参考 帮助文档 。登录时,请使用 实验资源 提供ECS实例的 外网地址 ,用户 和 密码 。

Mac用户
在这里插入图片描述

2.4 配置安全组规则允许特定端口的访问

1.执行以下步骤创建安全组规则:

1) 返回阿里云ECS管理控制台,并进入ECS实例的 本实例安全组 页面。

2) 点击安全组 lab-sg 右侧的 配置规则 ,页面跳转到安全组规则页面。
在这里插入图片描述
3) 在安全组规则页面,点击右上角的 添加安全组规则 。
在这里插入图片描述
4) 在弹出的对话框中,输入以下信息,配置安全组规则。完成后,点击 确定 。

协议类型 为 HTTP(80) ,开放 HTTP 80 端口,也就是说用户可以通过HTTP协议的80端口访问ECS实例上部署的网站。
授权对象 为 0.0.0.0/0 ,所有IP地址都可以访问该安全组下实例(端口为80)。
在这里插入图片描述
2.此时,可以在页面中,查看到新建的安全组规则。

2.5 验证ECS安全组规则是否生效

  1. 在浏览器中,新建一个标签页,再次访问沙箱提供的 Linux服务器 ECS实例 弹性IP 。等待一段时间后,页面将显示网站 LAB ROOM 等信息。证明,用户可以正常访问ECS实例中部署的网站。

说明:默认通过HTTP协议的80端口访问。所以不用输入端口号。
在这里插入图片描述
2. 通过本地远程连接服务,再次尝试远程登录 实验资源 中的 Linux服务器 ECS实例。此时,页面仍提示 Operation Time out 或者 超时 等错误,连接失败。

说明:此时远程登录的 22端口 没有开放,无法登录到ECS实例,这样可以提高前端服务器的安全性。同样地,就能有效规避类似勒索病毒事件的发生。
在这里插入图片描述

第 3 章:课后作业

Q:为什么在购买ECS实例的时候选择安全组?

在购买 ECS 实例之前,必须选择安全组来划分应用环境的安全域,授权安全组规则进行合理的网络安全隔离。选择特定的安全组来创建 ECS 实例就非常方便了。否则购买 ECS 实例都会分配到一个固定的安全组下面,还需要重新加入新的安全组,移出安全组来实现您的需求。

Q:为什么无法访问25端口?

端口25默认受限,并且不能通过安全组规则打开。

猜你喜欢

转载自blog.csdn.net/wyn_365/article/details/107226714