如何将Web Application Firewall(WAF)与Amazon EC2实例集成?
解决EC2 Web应用集成AWS WAF的问题
你观察得很准确——AWS WAF确实没办法直接关联到EC2实例本身,它只能绑定到CloudFront、Application Load Balancer(ALB)、API Gateway这类前端服务上。不过你有两个清晰的方案可选,不一定非要搭建CloudFront,看你的实际需求来选:
方案一:通过Application Load Balancer(ALB)集成WAF
这是最直接的轻量方案,适合不需要CDN加速的场景:
- 先创建一个ALB,将你的EC2实例添加到ALB的目标组中(确保EC2上的Web服务能正常响应ALB的健康检查)
- 到AWS WAF控制台,创建或选择已有的WAF规则集,关联到这个ALB上
- 调整EC2的安全组,只允许ALB的流量进入(拒绝直接的公网访问),同时把你的域名解析到ALB的DNS地址
- 优点:架构改动小,配置简单,不需要额外的CDN成本;所有请求都会先经过WAF过滤,再到ALB转发给EC2
方案二:通过CloudFront分发集成WAF
如果你需要CDN加速、全球访问优化,或者想隐藏EC2的真实IP,这个方案更合适:
- 创建一个CloudFront分发,将源设置为你的EC2实例的公网IP或公有DNS
- 在CloudFront配置里,把WAF规则集关联到这个分发上
- 调整EC2的安全组,只允许CloudFront的IP段访问(可以用AWS提供的
AmazonCloudFrontFrontend前缀列表来简化配置) - 把域名解析到CloudFront的分发域名上,同时可以配置自定义证书让CloudFront支持HTTPS
- 注意:如果你的Web应用是动态内容(比如电商后台、用户系统),要在CloudFront的缓存行为里设置不缓存,避免返回旧内容
- 优点:借助CloudFront的边缘节点提升访问速度,隐藏EC2真实IP减少攻击面,同时获得WAF的防护能力
不管选哪种方案,核心都是让所有用户请求先经过WAF关联的前端服务,再到达你的EC2实例,这样WAF才能发挥防护作用。
内容的提问来源于stack exchange,提问作者qwerty
相关产品推荐
相关产品推荐

