在AWS中如何阻止单个IP的流量

69次阅读
没有评论

问题描述

服务器受到某个特定IP的流量攻击,导致某些URL的流量增加了20倍。因此,用户想要阻止来自该单个IP的所有流量。

解决方案

请注意以下操作可能因版本差异而略有不同,执行前请确保已备份。

方案1

您可以使用Amazon Web Services(AWS)的虚拟私有云(VPC)来阻止来自特定IP的流量。以下是使用网络访问控制列表(Network ACLs)来实现的步骤:

  1. 登录AWS管理控制台,进入您的VPC仪表板。

  2. 在VPC仪表板中,找到并点击“Network ACLs”。

  3. 选择与您的EC2实例或负载均衡器连接的子网。

  4. 在“Inbound Rules”下,点击“Edit”来编辑入站规则。

  5. 在规则列表的最后一行添加一个新的规则来阻止特定IP的流量。

  6. 填写字段如下:

  7. Rule:选择一个小于100的数字,确保它在默认的接受所有规则之前,因为规则会按顺序进行评估。
  8. Type:选择“所有流量”或您想要阻止的特定协议。
  9. Source:输入要阻止的CIDR。如果要匹配单个IP地址,请输入IP地址并附加 /32。例如,如果您要阻止 22.87.45.187,输入 22.87.45.187/32。
  10. Allow/Deny:选择“DENY”。

  11. 点击“Save”保存规则。

请注意,这个操作将会阻止指定IP的所有流量。更多细节和示例,请参考这里

方案2

您还可以使用AWS命令行界面(CLI)来执行相同的操作。以下是一个示例命令,用于在网络访问控制列表(NACL)中添加规则以阻止特定IP的流量(请注意,此命令中包含了--dry-run选项,以便您可以安全地运行它以进行测试):

aws ec2 create-network-acl-entry --dry-run --network-acl-id your_acl_id --ingress --rule-number 20 --protocol tcp --port-range From=80,To=80 --cidr-block your_ip/32 --rule-action deny

这里的your_acl_id是您的网络访问控制列表的ID,your_ip是您要阻止的IP地址。您可以根据需要修改这些值。更多CLI操作示例,请参考AWS文档

方案3

另外,您还可以考虑使用工具如Fail2Ban来检测问题源,并使用自定义脚本来应用NACL规则以阻止特定IP。您甚至可以结合其他脚本,在一段时间后(例如30分钟)释放规则。以下是一个简单示例:

#!/bin/bash
# 启动阻止规则
aws ec2 create-network-acl-entry --network-acl-id your_acl_id --ingress --rule-number 100 --protocol tcp --port-range From=80,To=80 --cidr-block your_ip/32 --rule-action deny
# 等待一段时间
sleep 1800  # 30分钟
# 移除阻止规则
aws ec2 delete-network-acl-entry --network-acl-id your_acl_id --egress --rule-number 100

在这个示例中,我们首先使用AWS CLI命令在NACL中创建了一个阻止规则。然后等待了30分钟后,再使用另一个命令将规则删除,从而释放IP。

无论您选择哪种方式,都应该根据您的需求和环境来选择最适合您的解决方案。如果您希望了解更多关于AWS网络和安全性方面的内容,建议您查阅AWS官方文档

正文完