214 lines
7.0 KiB
Markdown
214 lines
7.0 KiB
Markdown
# 第24天:VPC 安全进阶——网络层面的防护
|
||
|
||
## 今天你将学到什么
|
||
|
||
第 14 天我们学了 VPC 的基础概念。今天深入学习 VPC 的安全功能:网络 ACL(访问控制列表)、VPC Flow Logs(流量日志)、VPC Endpoint(私有连接)。这些是在网络层面保护你资源的重要工具。
|
||
|
||
---
|
||
|
||
## 安全组 vs 网络 ACL
|
||
|
||
第 14 天学过安全组(Security Group),今天加上网络 ACL(Network ACL),看看它们的区别。
|
||
|
||
### 类比理解
|
||
|
||
想象你住在一个小区里:
|
||
|
||
- **网络 ACL** = 小区大门的保安。检查每一个进出小区的人,按照名单放行或拦截。
|
||
- **安全组** = 你家的门锁。只有你允许的人才能进你家。
|
||
|
||
两道防线,层层保护。
|
||
|
||
### 详细对比
|
||
|
||
| 特性 | 安全组 | 网络 ACL |
|
||
|------|--------|----------|
|
||
| 作用范围 | 实例级别(绑定到 EC2) | 子网级别(整个子网的流量) |
|
||
| 规则类型 | 只有允许规则 | 有允许和拒绝规则 |
|
||
| 状态 | 有状态(允许进就自动允许出) | 无状态(进和出要分别设置) |
|
||
| 规则评估 | 所有规则一起评估 | 按编号顺序评估,匹配即停止 |
|
||
| 默认行为 | 拒绝所有入站,允许所有出站 | 默认 ACL 允许所有流量 |
|
||
|
||
### "有状态"和"无状态"是什么意思?
|
||
|
||
**安全组(有状态)**:
|
||
- 你允许了外部访问 80 端口(入站规则)
|
||
- 服务器的响应会自动被允许出去(不需要额外设置出站规则)
|
||
- 就像你邀请朋友来家里,他走的时候不需要再开一次门
|
||
|
||
**网络 ACL(无状态)**:
|
||
- 你允许了外部访问 80 端口(入站规则)
|
||
- 还必须单独设置出站规则,允许响应流量出去
|
||
- 就像小区保安,进来要查一次证件,出去还要再查一次
|
||
|
||
### 网络 ACL 规则示例
|
||
|
||
```
|
||
入站规则:
|
||
规则# | 类型 | 端口 | 来源 | 允许/拒绝
|
||
100 | HTTP | 80 | 0.0.0.0/0 | 允许
|
||
110 | HTTPS | 443 | 0.0.0.0/0 | 允许
|
||
120 | SSH | 22 | 10.0.0.0/16| 允许
|
||
200 | 所有 | 所有 | 1.2.3.4/32 | 拒绝(封禁恶意IP)
|
||
* | 所有 | 所有 | 0.0.0.0/0 | 拒绝(默认拒绝)
|
||
```
|
||
|
||
规则按编号从小到大评估。规则 200 会拒绝来自 `1.2.3.4` 的所有流量,即使规则 100 允许了 HTTP。
|
||
|
||
---
|
||
|
||
## VPC Flow Logs——网络流量的"监控录像"
|
||
|
||
### 是什么
|
||
|
||
VPC Flow Logs 记录 VPC 中网络接口的流量信息。它不记录流量内容(不是抓包),而是记录"谁和谁通信了、用什么端口、多少数据、是否被允许"。
|
||
|
||
**类比**:如果 CloudTrail 是记录"谁做了什么操作",那 Flow Logs 就是记录"谁和谁通了电话、打了多久"。不记录通话内容,但记录通话记录。
|
||
|
||
### 记录什么信息
|
||
|
||
每条 Flow Log 记录包含:
|
||
|
||
| 字段 | 含义 | 举例 |
|
||
|------|------|------|
|
||
| 源 IP | 流量从哪来 | 203.0.113.50 |
|
||
| 目标 IP | 流量去哪里 | 10.0.1.25 |
|
||
| 源端口 | 发送方端口 | 49152 |
|
||
| 目标端口 | 接收方端口 | 443 |
|
||
| 协议 | TCP/UDP/ICMP | TCP (6) |
|
||
| 数据包数 | 传了多少包 | 15 |
|
||
| 字节数 | 传了多少数据 | 3500 |
|
||
| 动作 | 被允许还是拒绝 | ACCEPT / REJECT |
|
||
|
||
### 能用来做什么
|
||
|
||
**安全分析**:
|
||
- 发现异常流量模式(某台服务器突然向外发送大量数据——可能是数据泄露)
|
||
- 检测端口扫描(大量来自同一 IP 的 REJECT 记录)
|
||
- 确认安全组规则是否生效
|
||
|
||
**故障排查**:
|
||
- "为什么我的应用连不上数据库?"——查 Flow Logs 看流量是否被 REJECT
|
||
- "为什么响应这么慢?"——查看是否有大量重传
|
||
|
||
**合规审计**:
|
||
- 证明敏感数据没有流向未授权的网络
|
||
- 记录所有跨 VPC 的通信
|
||
|
||
### 在哪里开启
|
||
|
||
Flow Logs 可以在三个级别开启:
|
||
- **VPC 级别**:记录整个 VPC 的所有流量
|
||
- **子网级别**:只记录某个子网的流量
|
||
- **网络接口级别**:只记录某台 EC2 的流量
|
||
|
||
日志可以发送到:CloudWatch Logs 或 S3。
|
||
|
||
---
|
||
|
||
## VPC Endpoint——不走公网的私有连接
|
||
|
||
### 问题:EC2 访问 S3 要绕路
|
||
|
||
默认情况下,私有子网的 EC2 要访问 S3,流量路径是:
|
||
|
||
```
|
||
EC2 → NAT Gateway → Internet Gateway → 公网 → S3
|
||
```
|
||
|
||
问题:
|
||
- 流量走了公网(虽然加密了,但有些合规要求不允许)
|
||
- 要付 NAT Gateway 的流量费
|
||
- 延迟更高
|
||
|
||
### 解决方案:VPC Endpoint
|
||
|
||
VPC Endpoint 让你的 VPC 内部资源可以**直接**连接 AWS 服务,不经过公网。
|
||
|
||
```
|
||
EC2 → VPC Endpoint → S3(全程在 AWS 内部网络)
|
||
```
|
||
|
||
**类比**:就像公司内部有一条专用通道直达银行金库,不需要走大马路。更安全、更快、更便宜。
|
||
|
||
### 两种 Endpoint 类型
|
||
|
||
| 类型 | 适用服务 | 费用 | 原理 |
|
||
|------|----------|------|------|
|
||
| 网关端点 | S3、DynamoDB | 免费 | 在路由表中添加一条路由 |
|
||
| 接口端点 | 其他大多数 AWS 服务 | 按小时 + 流量收费 | 在子网中创建一个网络接口 |
|
||
|
||
**建议**:如果你的 EC2 需要频繁访问 S3 或 DynamoDB,一定要创建网关端点。免费且更安全。
|
||
|
||
---
|
||
|
||
## PrivateLink——安全地暴露服务
|
||
|
||
### 场景
|
||
|
||
你有一个内部 API 服务,想让其他 VPC(可能是其他团队或其他公司)安全地访问,但不想把它暴露到公网。
|
||
|
||
### 传统方式(不安全)
|
||
|
||
把服务放在公网 → 任何人都能尝试访问 → 需要复杂的防火墙规则
|
||
|
||
### PrivateLink 方式
|
||
|
||
```
|
||
你的 VPC(服务提供方)
|
||
└── Network Load Balancer
|
||
↓
|
||
PrivateLink
|
||
↓
|
||
其他 VPC(服务消费方)
|
||
└── VPC Endpoint(接口端点)
|
||
```
|
||
|
||
消费方通过 VPC Endpoint 访问你的服务,流量全程在 AWS 内部网络,不经过公网。
|
||
|
||
**类比**:就像两栋大楼之间建了一条地下通道。住户可以安全地往来,不需要走外面的马路。
|
||
|
||
---
|
||
|
||
## 网络安全架构总结
|
||
|
||
一个安全的 VPC 网络架构应该包含:
|
||
|
||
```
|
||
互联网
|
||
↓
|
||
网络 ACL(子网级别的第一道防线)
|
||
↓
|
||
安全组(实例级别的第二道防线)
|
||
↓
|
||
EC2 实例
|
||
↓
|
||
VPC Endpoint(访问 AWS 服务不走公网)
|
||
```
|
||
|
||
加上 VPC Flow Logs 记录所有流量,形成完整的网络安全体系。
|
||
|
||
---
|
||
|
||
## 今天的小测验
|
||
|
||
1. 安全组和网络 ACL 的"有状态"和"无状态"分别是什么意思?
|
||
2. VPC Flow Logs 记录什么信息?它能帮你解决什么问题?
|
||
3. 为什么建议使用 VPC Endpoint 而不是通过公网访问 S3?
|
||
4. PrivateLink 解决了什么问题?
|
||
|
||
---
|
||
|
||
## 延伸阅读
|
||
|
||
- [网络 ACL 文档](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)
|
||
- [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)
|
||
- [VPC Endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints.html)
|
||
- [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/)
|
||
|
||
---
|
||
|
||
## 明天预告
|
||
|
||
明天是第三阶段的收尾:安全架构综合实战。我们会把 IAM、加密、WAF、CloudTrail、VPC 安全这些知识串联起来,设计一个完整的安全防护体系。
|