2010-03-07 117 views
12

我们通常会使用iptables将IP地址列入黑名单。但是在Amazon EC2中,如果连接通过Elastic Load Balancer,则远程地址将被负载平衡器的地址替换,导致iptables无用。在HTTP的情况下,显然找到真正的远程地址的唯一方法是查看HTTP标头HTTP_X_FORWARDED_FOR。对我而言,在Web应用程序级别阻止IP并不是一种有效的方法。亚马逊EC2负载均衡器:防御DoS攻击?

在这种情况下防御DoS攻击的最佳做法是什么?

In this article,有人提出我们可以用HAProxy替换Elastic Load Balancer。但是,这样做有一些缺点,我试图看看是否有更好的选择。

+0

在这里在AWS论坛下面的线程也可能是看到有用的东西处于类似情况的人已经完成了:https://forums.aws.amazon.com/message.jspa?messageID=212411#212411 – jm3 2011-11-14 20:35:34

回答

3

我想你已经描述了所有当前的选项。您可能想要在某些AWS论坛主题上投票选出一个解决方案 - 亚马逊工程师和管理层对ELB改进建议持开放态度。

+0

询问他们有关TPROXY的支持。 :) – Craig 2013-10-30 12:04:51

1

在逆向代理后面运行应用程序服务器很常见。您的反向代理是您可用于在流量到达您的应用程序服务器之前添加DoS保护的层。对于Nginx来说,你可以看看the rate limiting module,这可能会有所帮助。

0

你可以设置一台EC2主机,并自己运行haproxy(这就是亚马逊正在使用的东西!)。然后你可以在你的系统上应用你的iptables过滤器。

2

如果您使用VPC而不是EC2-classic部署ELB和实例,则可以使用安全组和网络ACL来限制对ELB的访问。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/USVPC_ApplySG.html

+1

有没有办法通过编程添加ACL网络规则?也就是说,一旦像fail2ban那样挑选了一个麻烦的IP,运行一些脚本将它添加为ACL规则? – Aphire 2016-03-31 14:05:57

+0

@Aphire是的,[cli](https://docs.aws.amazon.com/cli/latest/userguide/cli-ec2-sg.html)和[API](https://docs.aws。 amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#authorizeSecurityGroupEgress-property)支持创建和修改安全组 – Matt 2017-09-19 05:09:58