AWS - VPC & Networking Basic Information
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
AWS Networking in a Nutshell
一个 VPC 包含一个 network CIDR,例如 10.0.0.0/16(以及它的 路由表 和 network ACL)。
该 VPC 网络被划分为多个 subnetworks(子网),因此 子网 与 VPC、路由表 和 network ACL 直接相关联。
然后,附加到服务(例如 EC2 实例)上的 Network Interface 会连接到这些 子网,并应用 security group(s)。
因此,安全组 会限制使用它的网络接口所暴露的端口,独立于子网。而 network ACL 会对整个网络暴露的端口进行限制。
此外,为了 访问 Internet,有一些需要检查的重要配置:
- 一个 子网 可以 自动分配公有 IPv4 地址
- 创建在开启 auto-assign IPv4 addresses 的网络中的 实例 可以拿到一个公有 IP
- 需要将一个 Internet gateway 附加 到 VPC
- 你也可以使用 Egress-only internet gateways
- 你也可以在 private subnet 中部署一个 NAT gateway,这样私有子网可以 连接外部服务,但 外部无法直接访问私有子网中的实例
- NAT gateway 可以是 public(可以访问互联网)或 private(可访问其他 VPC)
.png)
VPC
Amazon Virtual Private Cloud (Amazon VPC) 使你能够把 AWS 资源部署到你定义的虚拟网络 中。该虚拟网络会包含若干子网、用于访问互联网的 Internet Gateways、ACLs、安全组、IP 等。
Subnets
子网有助于加强安全性。对相似资源的 逻辑分组 也能让你更容易管理整体基础设施。
- 有效的 CIDR 掩码从 /16 到 /28。
- 一个子网不能同时位于不同的可用区(Availability Zones)。
- AWS 会保留每个子网的前三个主机 IP 地址 用于 内部 AWS 使用:第一个主机地址用于 VPC 路由器,第二个地址保留给 AWS DNS,第三个地址为将来使用保留。
- 那些 具有直接 Internet 访问的子网称为 public subnets,而没有直接 Internet 访问的称为 private subnets。
Route Tables
路由表决定了 VPC 中子网的流量路由。它们决定哪些网络流量被转发到互联网或 VPN 连接。通常你会看到对以下目标的访问:
- 本地 VPC
- NAT
- Internet Gateways / Egress-only Internet gateways(用于赋予 VPC 访问互联网的能力)
- 要使子网变为 public,需要 创建 并 附加 一个 Internet gateway 到你的 VPC。
- VPC endpoints(用于从私有网络访问 S3)
ACLs
Network Access Control Lists (ACLs):网络 ACL 是控制子网进出流量的防火墙规则。它们可用于允许或拒绝针对特定 IP 地址或地址范围的流量。
- 通常更常用的是使用安全组来允许/拒绝访问,但 ACL 是完全切断已建立反向 shell 的唯一办法。修改安全组规则不会停止已经建立的连接。
- 但是,这会作用于整个子网,因此在阻断时要小心,因为可能会破坏所需功能。
Security Groups
安全组是控制 VPC 中实例入站和出站网络流量的虚拟 防火墙。关系通常为 1 个安全组对应多个实例(通常为一对一的设置也很常见)。
通常用于在实例上打开危险端口,例如端口 22:
Elastic IP Addresses
一个 Elastic IP address 是为动态云计算设计的 静态 IPv4 地址。Elastic IP 地址分配到你的 AWS 账户,并在你释放之前一直属于你。通过使用 Elastic IP,你可以通过快速将地址重新映射到账户中的另一个实例来掩盖实例或软件的故障。
Connection between subnets
默认情况下,所有子网的 自动分配公有 IP 地址功能是关闭的,但可以打开。
路由表中的本地路由允许 VPC 子网之间的通信。
如果你 将一个子网连接到另一个子网,不能通过该子网访问与之相连的其他子网,你需要直接与它们建立连接。这同样适用于 Internet gateways。你不能通过某个子网的连接来访问互联网,必须将 Internet gateway 分配到你的子网。
VPC Peering
VPC peering 允许你 将两个或更多 VPC 互相连接,使用 IPv4 或 IPv6,就好像它们属于同一网络一样。
一旦对等连接建立,一个 VPC 中的资源可以访问另一个 VPC 中的资源。VPC 之间的连接通过现有的 AWS 网络基础设施实现,因此具有高可用性且不存在带宽瓶颈。由于 对等连接表现得像同一网络的一部分,所以在你可用的 CIDR 块范围上存在限制。
如果你的 VPC 存在 重叠或重复的 CIDR 范围,那么 你将无法对等连接这些 VPC。
每个 AWS VPC 只会与其对等方通信。例如,如果你在 VPC 1 与 VPC 2 之间有对等连接,在 VPC 2 与 VPC 3 之间也有对等连接,如图所示,那么 VPC 1 和 VPC 2 可以直接互相通信,VPC 2 和 VPC 3 也可以,但 VPC 1 和 VPC 3 则不能。你不能通过一个 VPC 路由到另一个 VPC。
VPC Flow Logs
在你的 VPC 中,可能有成百上千个资源在不同的子网之间相互通信(既有公有子网也有私有子网),并且通过 VPC peering 在不同 VPC 之间通信。VPC Flow Logs 允许你捕获在 VPC 内资源的网络接口之间流动的 IP 流量信息。
与 S3 access logs 和 CloudFront access logs 不同,VPC Flow Logs 生成的日志数据不会存储到 S3 中,而是发送到 CloudWatch logs。
限制:
- 如果你运行的是 VPC peered 连接,那么你只能看到属于相同账户中对等 VPC 的流量日志。
- 如果你仍在运行 EC2-Classic 环境中的资源,则无法从这些接口检索信息。
- 一旦创建 VPC Flow Log,就无法更改它。要更改 VPC Flow Log 配置,必须删除然后重新创建。
- 以下流量不被日志监控和捕获:VPC 内的 DHCP 流量、实例发送到 Amazon DNS Server 的流量。
- 任何目标为 VPC 默认路由器的流量,以及目标或源为 169.254.169.254(用于收集实例元数据)和 169.254.169.123(用于 Amazon Time Sync Service)的流量,不会被捕获。
- 与来自 Windows 实例的 Amazon Windows 激活许可相关的流量
- 网络负载均衡器接口与终端点网络接口之间的流量
对于每个向 CloudWatch log group 发布数据的网络接口,都会使用不同的日志流(log stream)。在这些流中,会有 flow log 事件数据显示日志条目的内容。每个这些日志大约捕获 10 到 15 分钟的窗口期间的数据。
VPN
Basic AWS VPN Components
- Customer Gateway:
- Customer Gateway 是你在 AWS 中创建的一个资源,用来表示你这端的 VPN 连接。
- 它本质上是站点到站点 VPN 连接一端的物理设备或软件应用。
- 你需要向 AWS 提供路由信息和你的网络设备的公网 IP 地址(例如路由器或防火墙)来创建 Customer Gateway。
- 它作为设置 VPN 连接的参考点,并不会产生额外费用。
- Virtual Private Gateway:
- Virtual Private Gateway (VPG) 是站点到站点 VPN 连接中 Amazon 这端的 VPN 聚合器。
- 它附加到你的 VPC,并作为 VPN 连接的目标端点。
- VPG 是 AWS 侧的 VPN 连接端点。
- 它处理 VPC 和本地网络之间的安全通信。
- Site-to-Site VPN Connection:
- Site-to-Site VPN 连接通过安全的 IPsec VPN 隧道将你的本地网络与 VPC 连接起来。
- 这种类型的连接需要 Customer Gateway 和 Virtual Private Gateway。
- 它用于你的数据中心或网络与 AWS 环境之间的安全、稳定、持续的通信。
- 通常用于定期的长期连接,并按连接上传输的数据量计费。
- Client VPN Endpoint:
- Client VPN endpoint 是你在 AWS 中创建的资源,用于启用和管理客户端 VPN 会话。
- 它用于允许单个设备(如笔记本、智能手机等)安全连接到 AWS 资源或你的本地网络。
- 它与 Site-to-Site VPN 不同,后者用于连接整个网络,而 Client VPN 面向单个客户端设备。
- 使用 Client VPN 时,每个客户端设备使用 VPN 客户端软件来建立安全连接。
Site-to-Site VPN
将你的本地网络与 VPC 连接。
- VPN connection:你本地设备与 VPC 之间的安全连接。
- VPN tunnel:一个加密链路,数据可以从客户网络传输到 AWS 或从 AWS 传回客户网络。
每个 VPN connection 包括两个 VPN 隧道,你可以同时使用以达到高可用性。
- Customer gateway:在 AWS 中的一个资源,提供关于你端设备的信息给 AWS。
- Customer gateway device:你这端站点到站点 VPN 连接的物理设备或软件应用。
- Virtual private gateway:站点到站点 VPN 连接中 Amazon 这端的 VPN 聚合器。你可以使用 virtual private gateway 或 transit gateway 作为 Amazon 侧的网关。
- Transit gateway:一个可用于互联你的 VPCs 与本地网络的中转中心。你可以使用 transit gateway 或 virtual private gateway 作为 Amazon 侧的网关。
Limitations
- 虚拟私有网关(virtual private gateway)不支持 IPv6 流量的 VPN 连接。
- AWS VPN 连接不支持 Path MTU Discovery。
此外,在使用 Site-to-Site VPN 时,请考虑以下事项。
- 当将你的 VPCs 连接到公共的本地网络时,建议使用不重叠的 CIDR 块。
Client VPN
从你的机器连接到你的 VPC
Concepts
- Client VPN endpoint: 你创建并配置以启用和管理客户端 VPN 会话的资源。所有客户端 VPN 会话都在此资源终止。
- Target network: 目标网络是你与 Client VPN endpoint 关联的网络。VPC 的子网就是一种 target network。将子网与 Client VPN endpoint 关联可以建立 VPN 会话。为了高可用性,你可以将多个子网关联到一个 Client VPN endpoint。所有子网必须来自同一个 VPC,每个子网必须属于不同的可用区。
- Route: 每个 Client VPN endpoint 有一个路由表,描述可达的目标网络路由。路由表中的每条路由指定到特定资源或网络的流量路径。
- Authorization rules: 授权规则 限制哪些用户可以访问某个网络。对于指定的网络,你配置允许访问的 Active Directory 或身份提供商(IdP)组。只有属于该组的用户才能访问指定网络。默认情况下没有授权规则,你必须配置授权规则以允许用户访问资源和网络。
- Client: 连接到 Client VPN endpoint 并建立 VPN 会话的终端用户。终端用户需要下载 OpenVPN 客户端并使用你创建的 Client VPN 配置文件来建立会话。
- Client CIDR range: 从中分配客户端 IP 地址的地址范围。每个连接到 Client VPN endpoint 的会话都会从 client CIDR range 中分配一个唯一的 IP 地址。你选择 client CIDR range,例如
10.2.0.0/16。 - Client VPN ports: AWS Client VPN 支持端口 443 和 1194,既支持 TCP 也支持 UDP。默认端口是 443。
- Client VPN network interfaces: 当你将子网与 Client VPN endpoint 关联时,我们会在该子网中创建 Client VPN network interfaces。从 Client VPN endpoint 发往 VPC 的流量会通过这些 Client VPN network interfaces 发送。随后会应用源地址网络地址转换(SNAT),将来自 client CIDR range 的源 IP 地址翻译为 Client VPN network interface 的 IP 地址。
- Connection logging: 你可以为 Client VPN endpoint 启用连接日志记录以记录连接事件。你可以使用这些信息进行取证、分析 Client VPN endpoint 的使用情况或调试连接问题。
- Self-service portal: 你可以为 Client VPN endpoint 启用自助门户。客户端可以使用凭据登录基于 Web 的门户并下载最新的 Client VPN endpoint 配置文件,或下载 AWS 提供的客户端的最新版本。
Limitations
- Client CIDR ranges cannot overlap with the local CIDR of the VPC in which the associated subnet is located, or any routes manually added to the Client VPN endpoint’s route table.
- Client CIDR ranges must have a block size of at least /22 and must not be greater than /12.
- A portion of the addresses in the client CIDR range are used to support the availability model of the Client VPN endpoint, and cannot be assigned to clients. Therefore, we recommend that you assign a CIDR block that contains twice the number of IP addresses that are required to enable the maximum number of concurrent connections that you plan to support on the Client VPN endpoint.
- The client CIDR range cannot be changed after you create the Client VPN endpoint.
- The subnets associated with a Client VPN endpoint must be in the same VPC.
- You cannot associate multiple subnets from the same Availability Zone with a Client VPN endpoint.
- A Client VPN endpoint does not support subnet associations in a dedicated tenancy VPC.
- Client VPN supports IPv4 traffic only.
- Client VPN is not Federal Information Processing Standards (FIPS) compliant.
- If multi-factor authentication (MFA) is disabled for your Active Directory, a user password cannot be in the following format.
SCRV1:<base64_encoded_string>:<base64_encoded_string>
- The self-service portal is not available for clients that authenticate using mutual authentication.
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

