我们通常将iptables
的IP地址列入黑名单。但在Amazon EC2中,如果连接通过Elastic Load Balancer,远程地址将被负载均衡器的地址替换,使iptables
无效。在HTTP的情况下,显然找出真正的远程地址的唯一方法是查看HTTP头HTTP_X_FORWARDED_FOR
。对我来说,在Web应用程序级别阻止IP并不是一种有效的方法。
在这种情况下,防御DoS攻击的最佳做法是什么?
In this article,有人建议我们可以用HAProxy替换Elastic Load Balancer。但是,这样做有一些缺点,我试图看看是否有更好的选择。
答案 0 :(得分:3)
我认为你已经描述了所有当前的选择。您可能希望在某些AWS论坛主题中加入投票以寻求解决方案 - 亚马逊工程师和管理层愿意接受有关ELB改进的建议。
答案 1 :(得分:2)
如果使用VPC而不是EC2-classic部署ELB和实例,则可以使用安全组和网络ACL来限制对ELB的访问。
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/USVPC_ApplySG.html
答案 2 :(得分:1)
在反向代理后面运行应用程序服务器很常见。您的反向代理是可用于在流量到达应用程序服务器之前添加DoS保护的层。对于Nginx,您可以将the rate limiting module视为可以提供帮助的内容。
答案 3 :(得分:0)
您可以自己设置EC2主机并运行haproxy(这正是亚马逊正在使用的!)。然后,您可以在该系统上应用iptables-filters。
答案 4 :(得分:0)
这是我为那些希望在带有apache,ELB和ACL的aws上使用Fail2Ban的人提供的工具:https://github.com/anthonymartin/aws-acl-fail2ban