如何通过AWS CLI配置EC2安全组,阻止指定IP的HTTP/HTTPS访问
AWS 实现允许所有IP访问、仅拦截指定恶意IP的方案
AWS安全组默认是白名单机制,目前已支持显式拒绝规则,再结合NACL的能力,你只需要拦截十几个恶意IP的场景可以用以下两种方案实现:
方案1:使用网络ACL(NACL)实现(运维成本最低)
NACL是子网级别的访问控制组件,支持显式拒绝规则,优先级数字越小规则优先级越高,操作步骤:
- 给业务EC2所在子网关联自定义NACL(默认NACL默认允许所有流量,不建议直接修改)
- 配置入站拒绝规则:优先级设置为10,源IP为要拦截的恶意IP(单个IP使用/32掩码),协议为TCP,端口范围443,动作设置为拒绝,十几个IP可以对应创建十几条规则,优先级依次设置为11、12...即可
- 配置入站允许规则:优先级设置为100,源IP为
0.0.0.0/0,协议TCP、端口443,动作设置为允许 - 保持原有安全组的入站规则不变:保留原有的允许
0.0.0.0/0访问443的规则即可
批量添加拦截IP的CLI命令示例:
aws ec2 create-network-acl-entry \ --network-acl-id <你的NACL资源ID> \ --ingress \ --rule-number <对应规则优先级数字> \ --protocol tcp \ --port-range From=443,To=443 \ --cidr-block <要拦截的恶意IP/32> \ --rule-action deny
你可以把所有要拦截的IP写到脚本里循环执行上述命令即可。
方案2:仅用安全组实现(不需要修改子网配置)
2023年之后AWS安全组已支持显式拒绝规则,你可以直接通过安全组优先级规则实现需求:
- 在你的业务EC2关联的安全组中,添加入站拒绝规则:优先级设置为1,源地址为要拦截的恶意IP(/32掩码),协议TCP、端口443,动作设置为拒绝,多个IP可以依次添加,优先级依次设置为2、3...即可
- 再添加入站允许规则:优先级设置为100,源地址
0.0.0.0/0,协议TCP、端口443,动作设置为允许
批量添加安全组拒绝规则的CLI命令示例:
aws ec2 create-security-group-rule \ --group-id <你的安全组ID> \ --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "<要拦截的恶意IP/32>", "Description": "恶意探测IP拦截"}]}]' \ --ingress \ --rule-action deny
如果后续要调整拦截IP列表,你也可以先把恶意IP放到AWS托管前缀列表中,直接修改前缀列表的IP条目即可,不需要频繁修改安全组规则。
内容的提问来源于stack exchange,提问作者Buzz Moschetti
相关产品推荐
相关产品推荐

