我在具有静态 IP 的 NLB 后面有一个内部 AWS ALB。然后在 NLB 前面有一个 Sucuri WAF。我担心的是 WAF 绕过。您认为将 AWS 负载均衡器列入白名单的最佳方法是什么,以便 AWS 负载均衡器只接收来自 sucuri waf 的流量?我的 ec2 在 nginx 上运行。看起来 NLB 没有安全组,nginx 可能看不到用户的真实 IP。有什么想法吗?
编辑:我需要静态 IP,这就是为什么我有一个带弹性 IP 的 NLB。我还需要 ALB 的功能,这就是为什么我同时拥有两者。我可以推出自己的 nginx 负载均衡器,但我希望问题少一些,而且我需要它来实现其他一些 AWS 功能。
答案1
为什么您同时拥有 NLB 和 ALB?
AWS ALB
AWS 应用程序负载均衡器具有安全组 (文档链接)。您可以使用它来限制哪些 IP 可以发出流量。这依赖于 NLB 不干扰该信息。
亚马逊AWS官方博客
AWS 网络负载均衡器在第 4 层工作,根据 Wikipedia,“第 4 类最接近 TCP”。我想知道 NLB 是否不会更改源 IP - 希望其他更熟悉此内容的人可以回答/评论,我已经很久没有学习 OSI 模型了。如果是这样,这将与 ALB 安全组很好地配合使用。
X-转发
另一种方法是 Securi 最有可能设置 X-Forwarded-For标题. 在 Nginx 中,您可以使用“真实 IP 地址头“命令说“对于我指定的 IPa 地址(即属于 Securi),原始 IP 地址位于此标头中”。例如:
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
set_real_ip_from 2001:0db8::/32;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
需要注意的是,AWS ALB 也可能设置该标头,隐藏 Securi 设置的内容。
Nginx 允许/拒绝
一旦完成,你就有另一种使用 Nginx 的方法它可以让您阻止除您允许的主机之外的所有主机。
allow 1.2.3.4; # Allow a single remote host
deny all; # Deny everyone else
概括
如果您可以简化您的架构,您可能会找到更简单的解决方案。