CloudFront域名前置实战指南:构建与测试完整流程

本文详细演示了如何通过AWS CloudFront配置域名前置技术,包括设置正常源站与隐蔽源站、处理SSL证书与CNAME记录,并通过curl命令验证请求伪装效果,实现网络流量的隐蔽传输。

CloudFront域名前置实战示例

本文作为《域名前置基础指南》的配套文章,将逐步指导如何设置用于域名前置的站点及被前置的站点。

配置流程中的关键角色

  • 前置主机名:fronted.digi.ninja
  • 正常源站:digi.ninja
  • 正常CloudFront域名:d1pticz0uvhz4n.cloudfront.net(后文说明来源)
  • 隐蔽源站:frontme.vuln-demo.com
  • 隐蔽CloudFront域名:d1sdh26o090vk5.cloudfront.net(后文说明来源)

设置正常源站

(可选跳过此步骤,直接配置被前置站点,但需自行寻找CloudFront托管站点进行前置)

  1. 登录AWS账户,进入CloudFront服务,点击"Create Distribution"并选择"Web"选项
  2. 在"Origin Settings"中:
    • “Origin Domain Name"填入现有站点域名(digi.ninja)
    • “Origin ID"设置唯一标识符
    • 关键调整:将默认的"Origin Protocol Policy"从"HTTP Only"改为匹配源站协议(若源站使用HTTPS则必须修改,否则会返回403错误)
  3. “Default Cache Behavior Settings"保持默认即可
  4. 在"Distribution Settings"中:
    • 为增强真实性,将"SSL Certificate"改为"Custom SSL Certificate"并通过ACM申请证书(支持DNS或邮箱验证)
    • 在"Alternate Domain Names (CNAMEs)“中填入前置主机名(fronted.digi.ninja),缺失此项同样会导致403错误
  5. 完成创建后,系统将显示状态为"In Progress”。此时需为域名(fronted.digi.ninja)添加CNAME记录,指向CloudFront分配域名(如d1pticz0uvhz4n.cloudfront.net)
  6. 部署完成后状态变为"Deployed”,即可通过自定义域名和CloudFront域名双向访问
    • 若仅CloudFront域名可访问,需检查配置错误(每次重新部署需10-15分钟)

设置隐蔽源站

  1. 流程与正常源站类似:在"Origin Domain Name"中填入被前置站点(frontme.vuln-demo.com)
  2. 无需修改"Distribution Settings”:因为该站点不会通过自有域名或CloudFront域名直接访问
  3. 部署完成后可通过分配的CloudFront域名(如d1sdh26o090vk5.cloudfront.net)验证访问
    • 为何不设置"Alternate Domain Names”?
      使用匿名化的CloudFront域名而非真实源站域名可增强隐蔽性。即使流量被分析,仅凭随机字符串也无法关联到真实源站(尤其当源站已关闭时)

测试域名前置

通过curl命令模拟前置请求:

1
2
curl -H "Host: d1sdh26o090vk5.cloudfront.net" \
https://fronted.digi.ninja/
  • 工作原理
    DNS解析指向正常站点(fronted.digi.ninja),但HTTP请求中的Host头部包含隐蔽CloudFront域名(d1sdh26o090vk5.cloudfront.net),CloudFront据此返回对应源站数据

寻找可用域名

若不想自行配置,可参考以下工具与文章寻找可前置域名:

  • 《How I Identified 93k Domain-Frontable CloudFront Domains》
  • 《Domain Fronting Via Cloudfront Alternate Domains》
  • 工具:FindFrontableDomains

相关文章

  • 《域名前置基础指南》
  • 《Cloudflare域名前置》
  • 《使用HTTP管道化隐藏请求》
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计