将 Web 应用程序防火墙 (WAF) 与 EC2 实例一起使用

Use a Web Application Firewall (WAF) with an EC2 instance

我的 Amazon EC2 实例上有一个 Web 应用程序 运行。如何将 Web 应用程序防火墙与我的 EC2 集成?

我已经尝试设置 WAF,但它只能与 CloudFront 分配或 Elastic Load Balancer 关联。我是否需要设置 CloudFront 分配并将其指向我的 EC2 实例?

这就是您使用AWS WAF的方式,它只适用于这两种场景。对于 EC2 应用程序,最好在其前面配置一个 ALB(即使您只有一个实例)。

顺便说一句:您可能只使用 AWS 的 Application Loadbalancer (ALB) 就可以逃脱,这比传统的 AWS ELB 做的内容有效性检查更多。

您至少需要设置Application layer Loadbalancer 才能使用AWS WAF。

旁注:AWS WAF 有很多限制。对于基于请求计数的阻止,您最终将使用 LAMBDA 脚本来计数并更新 AWS WAF 规则集。此外,据我所知,他们不提供 WAF 日志。尝试查看 SOPHOS 等云 WAF 解决方案。

您可以通过以下两种方法将 AWS WAF 连接到您的 EC2 实例,

  • AWS CloudFront
  • 应用程序负载均衡器 (ALB)

每种方法都有其优缺点。如果您的应用程序服务器有更多可以缓存的内容,那么可以使用 AWS CloudFront 和 WAF。如果您的应用程序集群需要扩展,但其中大部分是动态内容,那么选择 ALB 更为合理。

注意:每个月 ALB 都有一个额外的固定成本(除了不重要的可变成本),而 CloudFront 成本是可变的并且是消费驱动的。

也可以同时使用 CloudFront 和 ALB,这样您就可以只将 WAF 添加到 CloudFront。

我最终设置了一个指向我的单个实例的弹性负载均衡器,然后添加了指向负载均衡器的 Web 应用程序防火墙。它运行良好,并且每月从 AWS 上花费的费用不会太多。