如何在CloudFront分发中彻底禁用TCP 80端口以符合REST API安全规范?
彻底禁用CloudFront TCP 80端口以符合OWASP安全规范的方案
针对Lambda+API Gateway HTTP API+CloudFront架构下彻底禁用TCP 80端口的需求,结合AWS服务特性和OWASP安全要求,可通过以下方案实现:
方案一:使用AWS WAF直接阻断HTTP(TCP 80)请求
- 创建AWS WAF Web ACL,添加规则匹配请求协议为HTTP,动作设置为
Block,并将该Web ACL关联到目标CloudFront分发。 - 效果:客户端尝试通过80端口连接时,WAF会直接阻断TCP连接,不会返回任何HTTP响应(包括403),完全符合OWASP“拒绝未加密请求而非返回响应”的要求。
方案二:通过AWS Network Firewall丢弃TCP 80端口流量
- 在VPC中部署AWS Network Firewall,创建规则集拦截所有目标为CloudFront分发IP段的TCP 80端口流量,动作设置为
Drop。 - 效果:客户端发起的80端口连接请求会被直接丢弃,触发“Connection Refused”错误,彻底拒绝未加密连接,无任何HTTP层面的响应。
针对API Gateway REST API边缘端点的301重定向问题处理
- API Gateway REST API默认边缘端点的底层CloudFront分发配置为“HTTP重定向到HTTPS”,无法直接修改该行为。需手动创建自定义CloudFront分发关联到API Gateway:
- 在CloudFront分发的缓存行为中,设置“查看器协议策略”为
仅HTTPS,此时HTTP请求会返回403而非301。 - 若要彻底阻断80端口,再结合上述WAF或Network Firewall方案即可。
- 在CloudFront分发的缓存行为中,设置“查看器协议策略”为
关键说明
- CloudFront本身无法直接关闭TCP 80端口的监听(其分发机制默认提供80/443双端口入口),但通过上层WAF或底层防火墙的流量拦截,可实现彻底拒绝未加密连接的目标,完全符合OWASP TLS和REST安全规范。
内容的提问来源于stack exchange,提问作者Maxime Rossini
相关产品推荐
相关产品推荐

