Blocking traffic from a single IP with AWS
A few days ago, https://gomore.dk was being hammered by traffic from some IP address in Dubai.
It looked like someone was running a scan with Acunetix and it was causing a 30x increase in traffic to some URLs. So obviously I wanted to block all traffic from that single IP, and after some digging in the AWS console, I found out how to do this.
So here is a quick tutorial.
1. Open your VPC dashboard
2. Open the “Network ACLs” view
3. Open the ACL editor
- Select the subnet to which your EC2 instances or load balancers are connected.
- Click “Inbound Rules”
- Click “Edit”
4. Add a rule to block the traffic
You will now see the ACL editor. On the last row, you can add a new rule.
Here is how you should fill out the fields:
Rule # | Use any number less than 100, which is the number of the default accept-all rule. This is important because rules are evaluated in order, and your rule needs to come before the default. |
Type | Select “All traffic” |
Protocol | Locked to “ALL” |
Source | The CIDR you want to block. To match a single IP address, enter it here and append /32 . For example, I blocked 86.98.149.37/32 |
Allow/Deny | Select “DENY” |
Now click Save and you should see the updated rules table.
Note
While searching for a way to block traffic, I found lots of articles saying that it wasn’t possible because the security group rules in AWS only support whitelisting. So I think this level of control may be a relatively recent addition to AWS.