这是《计算机网络 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 网络安全的目标不是安装一个防火墙,而是控制访问面、保护传输链路、识别异常流量、减少爆炸半径并让所有动作可审计。云原生环境下,安全边界从机房网络延伸到 VPC、子网、安全组、容器策略、服务间认证和 API 授权。
23.1 安全边界模型
传统边界模型:
Internet
-> Firewall
-> DMZ
-> Internal Network
现代零信任思路:
任何访问默认不信任
-> 身份认证
-> 设备与环境评估
-> 最小授权
-> 持续校验
-> 审计
网络分区示例:
Public Subnet:LB / 堡垒机
App Subnet:无状态服务
Data Subnet:MySQL / Redis / Kafka
Mgmt Subnet:运维与监控
原则:
- 数据层不暴露公网;
- 按职责划分子网;
- 安全组最小放行;
- 入口统一治理;
- 内部服务也认证;
- 权限和链路可审计。
23.2 防火墙与安全组
Linux 防火墙工具:
iptables -L -n
nft list ruleset
firewall-cmd --list-all
ufw status verbose
状态策略:
- 默认拒绝入站;
- 明确放行业务端口;
- 管理端口只允许堡垒网段;
- 出站也按需限制;
- 记录拒绝日志;
- 定期审计规则;
- 变更走自动化。
云安全组:
入站:TCP 443 from 0.0.0.0/0
入站:TCP 22 from 10.10.0.0/16
出站:按业务目标限制
安全组应该是角色模板,而不是每台机器随机复制。
23.3 加密与传输安全
| 场景 | 建议 |
|---|---|
| 公网 HTTP | 强制 HTTPS |
| 内部敏感通信 | TLS 或 mTLS |
| 数据库 | TLS 按安全等级启用 |
| 消息队列 | TLS 和认证 |
| VPN | 使用现代协议和强认证 |
| 证书 | 自动轮换和监控 |
内部网络不等于可信网络。跨机房、跨云、容器平台和服务间通信都应评估加密需求。
23.4 认证与授权
网络层:
- VPN 认证;
- 堡垒机;
- IP 白名单;
- mTLS。
应用层:
- OAuth2 / OIDC;
- JWT;
- API Key;
- 签名;
- RBAC / ABAC;
- 服务身份。
建议:
- 身份代替 IP 作为主要信任依据;
- token 短有效期;
- 刷新令牌安全存储;
- 服务账户独立;
- 最小授权;
- 权限审计;
- 高危操作二次确认。
23.5 常见攻击与防护
SYN Flood
利用大量半连接耗尽队列。
防护:
- SYN Cookie;
- 增大队列;
- 限速;
- 上游清洗;
- 监控 SYN_RECV。
sysctl net.ipv4.tcp_syncookies
DDoS
类型:
| 类型 | 特征 |
|---|---|
| 流量型 | 带宽被打满 |
| 协议型 | TCP / UDP / ICMP 异常 |
| 应用层 | HTTP 慢速或高频请求 |
防护:
- CDN / Anti-DDoS;
- 限流;
- 黑白名单;
- 验证码或挑战;
- 弹性扩容;
- 降级非核心功能;
- 与云厂商联动。
ARP 欺骗
同二层网络中伪造 ARP Reply。通过 VLAN、端口安全、DAI 和 TLS 降低风险。
DNS 劫持与污染
防护:
- DNSSEC;
- DoH / DoT;
- 多 resolver;
- 关键域名监控;
- 解析结果校验。
中间人攻击
防护:
- 强制 HTTPS;
- mTLS;
- HSTS;
- 不忽略证书错误;
- 关键客户端谨慎评估证书固定。
23.6 Web 安全与网络层配合
WAF 可以处理:
- SQL 注入特征;
- XSS 特征;
- 路径穿越;
- 扫描器;
- 恶意 UA;
- 高频访问;
- 大包异常。
WAF 不能替代应用安全:
- 参数化查询;
- 输出编码;
- CSRF token;
- 权限校验;
- 文件上传治理;
- 依赖升级;
- 安全开发流程。
Nginx 基础防护:
limit_req_zone $binary_remote_addr zone=api:10m rate=100r/s;
location /api/ {
limit_req zone=api burst=200 nodelay;
proxy_pass http://app;
}
23.7 容器与 Kubernetes 网络安全
要点:
- NetworkPolicy 默认拒绝;
- 命名空间隔离;
- Pod 只访问必要服务;
- 服务间 mTLS;
- Ingress TLS;
- 出口流量治理;
- NodePort 不随意暴露;
- 镜像仓库私有化;
- API Server 安全组限制;
- 审计网络策略变更。
NetworkPolicy 思路:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-api-to-order
spec:
podSelector:
matchLabels:
app: order
policyTypes: [Ingress]
ingress:
- from:
- podSelector:
matchLabels:
app: api
ports:
- protocol: TCP
port: 8080
23.8 VPN 与堡垒机
VPN:
- 使用强认证;
- 按用户授权子网;
- 会话超时;
- 双因素认证;
- 审计访问;
- 拆分隧道策略明确;
- 及时回收账号。
堡垒机:
- 统一入口;
- 身份认证;
- 授权目标;
- 命令审计;
- 录屏或会话日志;
- 高危命令拦截;
- 密钥不落个人机器。
23.9 网络安全监控
必须采集:
| 数据 | 用途 |
|---|---|
| VPC Flow Log | 内外流量审计 |
| 防火墙日志 | 拒绝和放行 |
| WAF 日志 | 攻击和误拦 |
| DNS 日志 | 异常域名 |
| LB 日志 | 状态码和来源 |
| TLS 监控 | 证书和协议版本 |
| 连接指标 | SYN、新建、并发 |
| 带宽指标 | DDoS 和异常外发 |
告警:
- 单 IP 高频请求;
- 异常 User-Agent;
- 源站直接访问;
- 新增防火墙规则;
- 安全组大规模变更;
- 证书临近过期;
- 出口流量突增;
- 内网横向扫描;
- 管理端口公网暴露;
- 未知服务监听。
23.10 安全审计清单
[ ] 数据库 / Redis / Kafka 不暴露公网
[ ] 管理端口仅堡垒网段可访问
[ ] 安全组按角色最小授权
[ ] HTTPS 强制并开启 HSTS
[ ] 证书自动轮换
[ ] 内部高敏链路启用 TLS / mTLS
[ ] VPN 和堡垒机双因素认证
[ ] WAF 和限流策略有效
[ ] NetworkPolicy 默认拒绝
[ ] VPC Flow Log / WAF / DNS 日志留存
[ ] 高危网络变更有审批和回滚
本章小结
网络安全要从边界控制走向零信任:网络分区和安全组缩小访问面,TLS 和 mTLS 保护传输,身份认证和最小授权控制访问,WAF、Anti-DDoS 和限流抵御攻击,VPC Flow Log、LB 日志和 DNS 日志支撑审计。云原生环境还必须治理 NetworkPolicy、服务间身份和出口流量。
思考题
- 为什么内部网络不应默认可信?
- 安全组和应用层授权分别解决什么问题?
- SYN Flood 的原理和防护是什么?
- WAF 为什么不能替代参数化查询?
- 设计一套生产 VPC 的网络分区和安全组策略。