How can I defend against DoS attacks using Amazon EC2 Load Balancer?
Asked Answered
L

5

11

We usually blacklist IPs address with iptables. But in Amazon EC2, if a connection goes through the Elastic Load Balancer, the remote address will be replaced by the load balancer's address, rendering iptables useless. In the case for HTTP, apparently the only way to find out the real remote address is to look at the HTTP header HTTP_X_FORWARDED_FOR. To me, blocking IPs at the web application level is not an effective way.

What is the best practice to defend against DoS attack in this scenario?

In this article, someone suggested that we can replace Elastic Load Balancer with HAProxy. However, there are certain disadvantages in doing this, and I'm trying to see if there is any better alternatives.

Loginov answered 7/3, 2010 at 0:4 Comment(1)
The following thread over here in the AWS forums may also be useful for seeing what people in similar situations have done: forums.aws.amazon.com/message.jspa?messageID=212411#212411Rayford
T
3

I think you have described all the current options. You may want to chime in on some of the AWS forum threads to vote for a solution - the Amazon engineers and management are open to suggestions for ELB improvements.

Tumult answered 30/4, 2010 at 1:34 Comment(1)
Ask them about TPROXY support. :)Shornick
C
2

If you deploy your ELB and instances using VPC instead of EC2-classic, you can use Security Groups and Network ACLs to restrict access to the ELB.

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

Clearsighted answered 30/10, 2013 at 12:40 Comment(2)
Is there a way to add ACL network rules programmatically? I.e once something like fail2ban has picked up a troublesome IP, run some script that will add it as an ACL rule?Erlond
@Erlond Yes, the cli and the API's support creating and modifying security groupsDiplomatics
P
1

It's common to run an application server behind a reverse proxy. Your reverse proxy is layer you can use to add DoS protection before traffic gets to your application server. For Nginx, you can look at the rate limiting module as something that could help.

Pulchritude answered 25/5, 2012 at 19:43 Comment(0)
S
0

You could set up an EC2 host and run haproxy there by yourself (that's what Amazon is using anyways!). Then you can apply your iptables-filters on that system.

Shornick answered 30/10, 2013 at 12:6 Comment(0)
S
0

Here's a tool I made for those looking to use Fail2Ban on aws with apache, ELB, and ACL: https://github.com/anthonymartin/aws-acl-fail2ban

Sasha answered 19/9, 2016 at 16:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.