You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:06:03