Skip to main content

6. Security Considerations (安全考虑)

TCP 作为互联网的核心传输协议, 面临多种安全威胁. 本节概述了主要的安全考虑和缓解措施.

6.1. 序列号攻击

威胁: 攻击者可能尝试猜测或预测 TCP 序列号, 以注入恶意数据或劫持连接.

缓解措施:

  • 使用加密强随机数生成器选择初始序列号 (ISN)
  • 实现 RFC 6528 中的序列号保护机制
  • 对窗口外的段进行严格验证 (RFC 5961)

6.2. SYN Flood 攻击

威胁: 攻击者发送大量 SYN 段但不完成握手, 耗尽服务器资源.

缓解措施:

  • 实现 SYN Cookie 机制
  • 限制半开连接的数量
  • 使用 SYN 代理或防火墙保护
  • 配置适当的超时值

6.3. 连接劫持

威胁: 攻击者尝试接管已建立的 TCP 连接.

缓解措施:

  • 使用 TLS/SSL 等加密协议 (如 HTTPS)
  • 验证序列号和确认号
  • 实现严格的状态检查
  • 使用 TCP MD5 签名选项 (RFC 2385) 或 TCP-AO (RFC 5925)

6.4. RST 攻击

威胁: 攻击者发送伪造的 RST 段以终止合法连接.

缓解措施:

  • 严格验证 RST 段的序列号
  • 实现 RFC 5961 中的 RST 处理改进
  • 使用加密连接保护

6.5. 数据注入攻击

威胁: 攻击者尝试向连接中注入恶意数据.

缓解措施:

  • 严格的序列号验证
  • 使用加密和认证机制
  • 验证数据完整性 (校验和)

6.6. 拒绝服务 (DoS) 攻击

威胁类型:

  • 资源耗尽: 消耗服务器的 CPU, 内存或连接资源
  • 带宽消耗: 发送大量数据以饱和网络
  • 状态耗尽: 创建大量连接以耗尽服务器状态

缓解措施:

  • 实现连接速率限制
  • 使用防火墙和入侵检测系统
  • 配置适当的资源限制
  • 实现快速路径优化以减少 CPU 使用

6.7. 中间人攻击 (MITM)

威胁: 攻击者拦截并可能修改通信.

缓解措施:

  • 使用 TLS 等端到端加密
  • 实现证书验证
  • 使用强认证机制

6.8. 盲攻击

威胁: 攻击者在没有看到流量的情况下尝试攻击连接.

缓解措施:

  • RFC 5961 中的改进, 包括:
    • 对窗口外段的挑战 ACK (Challenge ACK)
    • 严格的 RST 和 SYN 验证
    • 速率限制挑战 ACK

6.9. 时序攻击

威胁: 通过分析 TCP 行为的时序特征推断信息.

缓解措施:

  • 实现时间戳随机化
  • 避免可预测的超时行为
  • 使用应用层加密

6.10. 实现建议

必须 (MUST):

  • 使用加密强随机数生成器生成 ISN
  • 正确实现和验证 TCP 校验和
  • 实现 RFC 5961 的安全增强

应该 (SHOULD):

  • 支持 TLS 用于需要安全性的应用
  • 实现连接速率限制
  • 记录可疑活动

推荐 (RECOMMENDED):

  • 使用防火墙和入侵检测系统
  • 定期更新 TCP 实现以修复已知漏洞
  • 监控异常流量模式

6.11. 加密和认证

TCP 本身不提供加密或认证. 需要安全性的应用应使用:

  • TLS/SSL (传输层安全) - 最常用的解决方案
  • IPsec - 网络层安全
  • TCP-AO (RFC 5925) - TCP 认证选项
  • 应用层加密 - 如 SSH, HTTPS

6.12. 安全配置

推荐的系统配置:

# 启用 SYN Cookie (Linux)
net.ipv4.tcp_syncookies = 1

# 限制 SYN 重试次数
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3

# 启用 RFC 1337 TIME-WAIT 保护
net.ipv4.tcp_rfc1337 = 1

# 启用反向路径过滤
net.ipv4.conf.all.rp_filter = 1

6.13. 相关安全 RFC

  • RFC 4953 - Defending TCP Against Spoofing Attacks
  • RFC 5925 - The TCP Authentication Option (TCP-AO)
  • RFC 5961 - Improving TCP's Robustness to Blind In-Window Attacks
  • RFC 6528 - Defending against Sequence Number Attacks
  • RFC 7414 - A Roadmap for TCP Specification Documents (安全部分)

重要提示: 安全性是一个持续演进的领域. 实现者应保持关注最新的安全最佳实践和漏洞公告.