我需要一些帮助来弄清楚如何在现有架构中实现 Web 应用程序防火墙 (WAF)。
目前我有 2 个使用 keepalived 集群的 HAproxy 服务器,它们负责以下工作:
- 负载均衡
- SSL 终止
- 将静态流量重定向到缓存服务器
我有 1 个 varnish 服务器,仅缓存静态内容。我的流量流如下所示:
Load Balancer (haproxy)-+---------(Dynamic content)-------+----- Drupal Servers
\ /
+-- (Static Content) Varnish --+
我的 HaProxy 配置如下:
frontend main *:80
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend bk_varnish if url_static
default_backend bk_drupal
在这种情况下,WAF 的最佳放置位置在哪里?最好不要引入任何服务器,因此理想情况下,WAF 将在 HAProxy 服务器上运行。我知道 Varnish 具有一些 WAF 功能,但它目前仅提供静态资产。我是否应该重新设计此解决方案以通过 Varnish 路由所有流量?
答案1
你可以把它和 haproxy 放在同一个盒子里。实际上,把它放在那里很有意义。
因此问题变成了在 haproxy 之前还是之后。如果将其放在之前,那么除了保护应用程序的规则之外,您还必须添加保护/允许静态资产的规则。如果将其放在之后,您不必担心静态资产的规则,因为您可以只将流量发送bk_drupal
到 Web 应用程序防火墙。
我对 Web 应用程序防火墙 Varnish 的好坏没有任何看法。