AWS Network ACL如何批量上传黑名单IP?
批量封禁指定IP访问EC2 SSH端口的NACL配置方案
提前准备要封禁的IP列表,每行一个IP/网段(单IP后缀加/32,比如1.1.1.1/32),保存为ip_list.txt备用。
方案一:使用AWS CLI批量添加规则(推荐)
操作步骤:
- 本地提前安装配置好AWS CLI,确保对应账号拥有Network ACL修改权限
- 提前查询目标NACL的ID,格式为
acl-xxxxxx并记录 - 新建Shell脚本
batch_deny_nacl.sh,替换脚本内<NACL_ID>、<AWS区域>为实际值:
#!/bin/bash NACL_ID="acl-xxxxxx" # 替换为你的NACL ID RULE_NUMBER_START=100 # 起始规则号,不要和现有规则号冲突 PORT=22 PROTOCOL="tcp" ACTION="deny" COUNT=0 while IFS= read -r ip do # 跳过空行和注释行 [[ -z "$ip" || "$ip" =~ ^#.*$ ]] && continue CURRENT_RULE_NUM=$((RULE_NUMBER_START + COUNT)) # 添加入站封禁规则 aws ec2 create-network-acl-entry \ --network-acl-id $NACL_ID \ --ingress \ --rule-number $CURRENT_RULE_NUM \ --protocol $PROTOCOL \ --port-range From=$PORT,To=$PORT \ --cidr-block $ip \ --rule-action $ACTION \ --region <AWS区域> echo "已添加规则$CURRENT_RULE_NUM,封禁$ip访问22端口" COUNT=$((COUNT + 1)) done < ip_list.txt
- 给脚本添加执行权限:
chmod +x batch_deny_nacl.sh - 执行脚本即可完成批量规则添加,默认NACL最高支持200条规则,100个IP完全满足容量要求
方案二:通过AWS控制台批量导入
不想使用命令行可以选择控制台操作:
- 登录AWS控制台进入VPC服务页,找到目标Network ACL的详情页
- 切换到「入站规则」标签,点击右上角「编辑入站规则」
- 点击页面底部批量操作按钮,选择「从文件导入」上传整理好的IP列表,也可以直接按格式批量粘贴IP到规则输入框
- 所有封禁规则统一配置如下参数:
- 类型:SSH(22)
- 协议:TCP
- 端口范围:22
- 源:对应要封禁的IP/网段
- 允许/拒绝:拒绝
- 规则号按顺序递增即可
- 确认规则无误后点击保存即可完成批量配置
注意事项
- 如果需要封禁IPv6地址,命令行操作需将
--cidr-block参数替换为--ipv6-cidr-block,控制台操作直接填写IPv6网段即可 - 操作前建议先导出当前NACL规则备份,避免规则号冲突导致正常业务受影响
- 规则号越小优先级越高,建议将封禁规则的规则号设置在正常允许SSH的规则之前,确保封禁策略生效
- NACL为无状态规则,通常入站deny即可阻止外部IP访问SSH,如有特殊需求可以按相同逻辑配置出站deny规则
内容的提问来源于stack exchange,提问作者GLK
相关产品推荐
相关产品推荐

