本文通过实操,介绍了EC2的基本使用,并在功能、安全性上与其他厂商进行对比。
什么是EC2
EC2(Elastic Compute Cloud)是AWS云中的服务器,提供按需、可扩展的计算能力。本文以Linux为例。下图是EC2的位置。
Instance就是EC2,它被Security group(安全组)保护着,持久性存储使用了EBS( Elastic Block Store)。在安全组外面是子网,子网外面是VPC,VPC通过网关与外部通信。
启动一个EC2实例
名称随意,上面默认,创建一个密钥对。
点击启动实例,之后可以在控制台看到实例信息。
连接一个实例
前面为了快速创建,都是默认的,默认的安全组是不同的,需要先创建一个安全组,开通22端口。
添加入站规则
选择新建的安全组即可
控制台
ssh
给密钥权限后使用ssh登录即可。
Security groups
安全组是云服务器级别的防火墙,一个云服务器可以绑定多个安全组,一个安全组也可以被多个云服务器绑定。安全组由入站规则和出站规则组成。
规则
规则主要由以下字段组成:
- 协议:允许的协议。最常见的协议是 6 (TCP)、17 (UDP) 和 1 (ICMP)。
- 端口范围:对于 TCP、UDP 或自定义协议,允许的端口范围。您可以指定单个端口号(例如22)或端口号范围(例如 7000-8000)或all。
- 源或目标:允许的流量的源(入站规则)或目标(出站规则)。指定以下选项之一:
- 单个 IPv4 地址。您必须使用/32前缀长度。例如, 203.0.113.1/32。
- 以 CIDR 块表示法表示的 IPv4 地址范围。例如, 203.0.113.0/24。
- 单个 IPv6 地址。您必须使用/128前缀长度。例如, 2001:db8: 1234:1a00::123/128.
- IPv6 地址范围,采用 CIDR 块表示法。例如, 2001:db8: 1234:1a00::/64.
- 前缀列表ID。例如, pl-1234abc1234abc123. 有关更多信息,请参阅Amazon VPC 用户指南 中的前缀列表。
- 安全组(此处称为指定安全组)的ID。例如,当前安全组、同一 VPC 的安全组或对等 VPC 的安全组。这允许基于与指定安全组关联的资源的私有 IP 地址的流量。这不会将指定安全组中的规则添加到当前安全组。
规则由以下特点:
- 允许入的,默认允许出,不必再设置出规则。
- 规则默认都是允许,没有拒绝。
默认安全组与自定义安全组
默认安全组允许所有出流量,但入流量仅允许绑定该安全组的资源。
自定义安全组允许所有出流量,入流量不允许,需要添加规则来进行控制进出流量。
安全性
操作系统安全
EC2安装了操作系统,在创建时可以使用开源的操作系统,如果出现问题,也将影响AWS EC2对应的实例。
密钥泄漏
ssh的密钥文件一般很少泄漏,不过用户也可以修改sshd,启用账号密码登录。
部署应用安全
EC2上面如果部署应用,应用有漏洞,也可能影响EC2实例。
元数据造成SSRF漏洞出现时敏感信息泄漏
访问metadata能够获取以下信息
local-ipv4、public-ipv4、security-groups、identity-credentials等是比较敏感的信息,当然AWS是默认不开启元数据的,并且使用IMSV2(实例元数据服务版本2)来解决了普通的GET型SSRF问题(攻击者可控URL)。
用户数据类似
网络设置错误
安全组配置错误时,可能造成一台EC2被攻击后,其他EC2也被扫描出来。
厂商对比
对比项 | AWS | 阿里云 | 华为云 |
密钥泄漏 | 默认密钥文件登录 | 默认账号密码登录 | 默认账号密码登录 |
安全组 | 只能添加允许规则 | 可以允许或拒绝,有优先级字段,相同时拒绝优先 | 和阿里云类似 |
元数据服务 | 提供了IMSV2来防御GET型SSRF | 通过加固模式防御GET型SSRF | 需要租户自己解决,且元数据过多 |