11

免责声明:

本主题适用于 HTTP 流量(在 Linux 平台上)。对于以下问题,ELB 可能有一个很好的解决方案(每个人都价格合理)。但到目前为止我找不到任何东西。这就是为什么我需要专家的建议。

问题:

多年来,我一直在使用AWS Elastic Load Balancing (ELB)。突然意识到 ELB 有一个巨大的(对我来说至关重要的)缺点 .. 就是阻止 IP 的入站连接

因为一旦您落后于 ELB,您的服务器内部防火墙(例如iptables:)就已经无用了,因为来自 ELB 的所有转发流量都被标记为 ELB IP(而不是真正的客户端 IP)。ELB 只转发X-Forwarded-Forhttp 头中的 Real Client IP,这对于iptables. (除非您可以建议有一个类似的 Linux 防火墙iptables,它也可以处理内部带有 XFF(X-Forwarded-For)标头的 HTTP 流量。)

我知道这是此类反向代理的正常行为,但我需要设置防火墙!我知道在 AWS 上,建议使用VPC 和网络 ACL规则来阻止通过 IP 的入站连接。但是 NACL 有规则限制!(AWS 仅允许在 NACL 中最多使用 40 条规则)

想象一下,您正在运行一个高流量的公共网站,然后需要阻止每天检测到的大量不良 IP。这 40 条规则有什么帮助?

需要建议:

我开始考虑Nginx用作负载均衡器(在单独的实例上)。我以前用过Nginx,它是一个有前途的。当然,可以替代ELB。接着:

  • iptables在那个Nginx实例上使用!(因此,该 VM 将成为 LB+Firewall)

但在我采取行动之前,

  • 有没有更好的专家建议?
  • 在这里不使用 ELB 的最大区别(影响)是什么?

谢谢大家的建议。

4

4 回答 4

4

使用 ELB 仍然很有价值,因为冗余是服务的一部分。

使用 Nginx 作为负载均衡器将是一个单点故障,除非您还设置了备用服务器以及heartbeat自动故障转移到备用 Nginx 服务器之类的东西。

考虑使用 ELB 和 Nginx 的分层方法。ELB 可以将流量转发到不同可用区中的两个或多个 Web 主机,每个主机都运行 Nginx。使用 Nginx 和 fail2ban,您仍然可以按 IP 地址阻止主机。一般的方法是这样的:

  • 配置 Nginx 在日志文件中记录真实 IP,而不是 ELB IP。
  • 配置 fail2ban 以查看 Nginx 访问日志并查找要阻止的 IP。
  • 当 fail2ban 检测到它应该阻止的 IP 时,它会更新 Nginx 包含文件并重新加载 Nginx 以使规则生效。fail2ban 以同样的方式过期禁令。

您还可以排除 fail2ban 并手动维护要阻止的 IP 列表。

有关该方法的详细说明,请参阅“Nginx + Fail2ban Blocking IP behind AWS Load Balancer”

于 2016-01-20T03:36:00.117 回答
1

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.elb.html

如果您希望负载均衡器按原样转发请求,您可以将侦听器协议从 HTTP 更改为 TCP。这可以防止负载均衡器重写标头(包括 X-Forwarded-For)并且不适用于粘性会话。

于 2016-06-17T05:19:00.327 回答
1

自从提出这个问题以来已经有一段时间了,但我认为值得指出的是,经典和下一代应用程序负载均衡器现在都支持安全组来限制对负载均衡器的访问 - http://docs.aws.amazon。 com/elasticloadbalancing/latest/application/load-balancer-update-security-groups.html

于 2017-04-25T18:29:25.350 回答
0

这是我为那些希望通过 apache、ELB 和 ACL 在 aws 上使用 Fail2Ban 的人制作的工具:https ://github.com/anthonymartin/aws-acl-fail2ban

它对于检测和防止 DoS 攻击和滥用 ec2 实例很有用。

于 2016-09-19T16:49:06.810 回答