返回列表

AWS企业资质代办 AWS Security Group 与 Network ACL 的区别与应用:如何选择、配置与排错实战指南

亚马逊aws / 2026-10-21 15:43:47

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。

用户搜索“AWS Security Group 与 Network ACL 的区别与应用”时,真正想解决的通常不是定义问题,而是部署过程中几个直接影响业务上线的决策:EC2 对外开放 80/443 端口时规则该加在哪一层;数据库放在私网后,应用连接不上到底是安全组还是子网 ACL 拦截;多台服务器位于同一个 VPC 时,如何既允许内部通信又避免端口暴露过多;为什么控制台里看起来都已经放行,但 SSH、RDP、MySQL 仍然连不上。

这篇文章直接围绕这些操作问题展开,不做泛泛解释,而是从 AWS 控制台配置、参数填写、规则设计、故障排查和业务场景选择几个角度,帮助你快速判断:哪些场景只改 Security Group 就够了,哪些场景必须配合 Network ACL,哪些情况下两者同时存在会导致误判。

先回答决策问题:到底选 Security Group 还是 Network ACL

如果你正在创建 EC2、RDS、ALB,绝大多数访问控制先从 Security Group 入手。它更适合实例级、服务级授权,例如只允许办公 IP 访问 Linux 的 22 端口,只允许 ALB 访问 Web 实例的 80 端口,只允许应用服务器访问 MySQL 3306。

如果你要做的是子网级统一限制,例如某个私有子网禁止某些来源网段、临时封禁异常流量来源、对整个子网设置粗粒度进出规则,这时才需要 Network ACL。它更适合“整段子网”的统一入口规则,而不是单台实例的精细授权。

实际需求优先选择原因
开放 EC2 的 22/80/443Security Group直接绑定实例,变更影响范围可控
只允许 ALB 访问应用服务器Security Group可直接按安全组引用授权
限制整个子网的出入站网段Network ACL规则作用于子网边界
临时阻断某批可疑公网来源Network ACL可快速在子网层拒绝
数据库只允许应用层访问Security Group按来源安全组授权更准确
已经放行端口但仍不通,需要排查网络层两者都检查常见问题是安全组放行但 NACL 拒绝返回流量

简化判断方法很实用:如果你在想“哪台实例能访问谁”,先看 Security Group;如果你在想“这个子网整体允许什么流量”,再看 Network ACL。

上线前准备:避免一开始就配错位置

在 AWS 控制台开始配置前,先确认以下前提,否则后续排错会浪费很多时间。

所需账号与权限

  • 需要具有 VPC、EC2、Security Groups、Network ACLs 的查看和修改权限。
  • 如果涉及 RDS,还需要具备 RDS 实例和 DB Subnet Group 的查看权限。
  • 建议至少允许查看 Route Table、Internet Gateway、NAT Gateway,否则会误把路由问题当成安全组问题。

所需资源

  • 一个已创建的 VPC。
  • AWS企业资质代办 至少两个子网,推荐区分公有子网和私有子网。
  • 一台测试 EC2,Linux 或 Windows 均可。
  • 若验证数据库访问,准备一台 RDS MySQL 或自建 MySQL 实例。
  • 一台本地终端,便于用 SSH、RDP、telnet、nc、curl 测试连通性。

前置检查项

检查项如何确认常见误区
实例是否有公网 IPEC2 实例详情页查看 Public IPv4没有公网 IP 却尝试从公网直接 SSH
子网路由是否可出公网检查 Route Table 是否有 0.0.0.0/0 指向 IGW 或 NAT把路由缺失误认为是安全组拦截
操作系统防火墙Linux 看 firewalld/iptables,Windows 看 Defender FirewallAWS 已放行,但系统内仍然拦截
目标服务是否监听端口ss -lntp 或 netstat -ano端口未监听却反复修改安全组

实战一:用 Security Group 完成常见访问控制

下面用三个最常见场景说明如何在控制台中配置,并说明参数怎么填更稳妥。

场景 1:允许公网访问 Web 服务器

适用情况:你有一台 EC2 作为网站服务器,需要开放 80 和 443,同时限制 SSH 只允许办公 IP 登录。

操作路径:AWS 控制台 → EC2 → Security Groups → Create security group。

参数示例填写说明
Security group namesg-web-prod按环境命名,便于后续引用
Descriptionweb server for production写清用途,不要只写 test
VPC选择业务所在 VPC必须与实例同一 VPC

入站规则建议如下:

类型协议端口来源用途
HTTPTCP800.0.0.0/0网站访问
HTTPSTCP4430.0.0.0/0HTTPS 访问
SSHTCP22你的办公公网 IP/32运维登录

注意事项:

  • 不要把 22 端口直接开放给 0.0.0.0/0,除非是临时测试且已设置密钥和额外限制。
  • 如果公网来源 IP 会变化,优先使用 VPN、堡垒机或 AWS Systems Manager Session Manager,而不是频繁改规则。
  • 绑定安全组后,若仍无法访问,立刻检查实例所在子网是否关联了过严的 Network ACL。

场景 2:应用服务器访问数据库,不向公网开放 MySQL

这是 Security Group 最典型的正确用法。不要在数据库安全组里写来源 0.0.0.0/0,也不要按整个 VPC 网段粗放授权,直接引用应用服务器安全组最稳妥。

操作步骤:

  1. 创建应用服务器安全组 sg-app。
  2. 创建数据库安全组 sg-db。
  3. 在 sg-db 的入站规则中,添加 MySQL/Aurora,端口 3306,来源选择 sg-app。
  4. 将 sg-app 绑定到应用 EC2,将 sg-db 绑定到 RDS 或数据库 EC2。

这样配置后的好处是:以后应用服务器扩容,只要新实例继续绑定 sg-app,就能自动访问数据库,不需要每加一台实例就手工写一次 IP。

场景 3:只允许 ALB 转发到后端 EC2

这是很多用户配置错误最多的地方。正确方式不是在应用实例上对公网开放 80/443,而是只允许来自 ALB 安全组的访问。

组件安全组配置
ALB 安全组 sg-alb入站开放 80/443 给 0.0.0.0/0;出站允许到 sg-app 的 80 或 8080
应用实例安全组 sg-app入站只允许来源 sg-alb 的 80 或 8080;SSH 仅办公 IP

这样即使用户知道应用实例公网 IP,也无法直接访问业务端口,只能通过负载均衡入口进入。

AWS企业资质代办 实战二:什么时候必须配置 Network ACL

如果你的目标是“给单台 EC2 放行端口”,不建议先碰 NACL。但以下几类场景,用 NACL 会更直接。

场景 1:对子网做统一阻断

AWS企业资质代办 例如某公有子网中有多台临时测试机,你希望整个子网不再允许某个可疑来源网段访问,可以在该子网关联的 Network ACL 中增加拒绝规则。

操作路径:VPC 控制台 → Network ACLs → 选择目标 NACL → Inbound rules / Outbound rules。

示例:拒绝来源 203.0.113.0/24 访问 22 端口。

Rule #TypeProtocolPort RangeSourceAllow/Deny
100SSHTCP22203.0.113.0/24Deny
200ALL TCPTCP0-655350.0.0.0/0Allow

注意规则编号顺序,编号越小优先级越高。很多用户添加了 Deny,却把更宽泛的 Allow 放在前面,结果拒绝规则根本不生效。

场景 2:私有子网仅允许特定出站流量

如果你希望私有子网中的应用服务器只能访问 NAT、数据库或特定内部网段,可以通过 NACL 限制出站范围,避免测试机随意访问外部资源。

常见做法:

  • 入站允许来自 VPC 内部网段的必要端口。
  • 出站只允许到数据库子网、NAT 网关目标方向所需端口。
  • AWS企业资质代办 为返回流量预留临时端口范围,避免连接建立后回包被拦截。

AWS企业资质代办 实际操作中最容易出错的是只写了目标服务端口,没有考虑客户端临时端口回流。结果表现为“能发起连接,但很快超时”。

场景 3:安全审计要求按子网分层隔离

一些企业会把 Web、App、DB 放在不同子网,并要求各层之间除必要端口外全部阻断。这时可以用 Security Group 负责精确授权,用 NACL 作为兜底限制。例如数据库子网的 NACL 只放行来自应用子网的 3306 和必要回包范围,其余全部拒绝。

一套可直接落地的组合方案

如果你正在做标准三层架构部署,推荐按下面方式组合,而不是只依赖其中一种。

层级建议原因
公网入口层ALB 用 Security Group 控制 80/443便于业务端口管理
应用层EC2 安全组只允许 ALB 或堡垒机来源防止绕过入口直连实例
数据库层RDS/DB 安全组仅允许应用层安全组访问避免数据库暴露给整个 VPC 或公网
子网边界层Network ACL 做粗粒度限制和异常流量阻断便于整段子网统一控制

这套组合的核心思路是:日常授权优先改 Security Group,NACL 保持简洁,只做少量明确限制。不要把大量细粒度业务规则堆到 NACL,否则后续排查非常困难。

不同用户场景下怎么配更合适

个人开发者

建议尽量少动 NACL,优先使用默认允许型 NACL,把控制重点放在 Security Group。常见方案是一台 Web 服务器开放 80/443,22 端口只对自己当前公网 IP 开放。这样配置简单,排查成本低。

企业用户

建议按环境拆分安全组,例如 sg-web-prod、sg-app-prod、sg-db-prod,不要多个系统共用一个“大而全”的安全组。NACL 只用于环境级隔离或审计要求,不要替代安全组做细粒度授权。

跨境业务

优先确认地域和可用区后再谈访问控制。很多跨境访问慢或连不上,不是安全组问题,而是源站区域延迟高、运营商链路抖动或中间防火墙限制。安全组上建议精确允许 HTTPS,结合 CloudFront 或加速入口,减少源站直接暴露。

网站应用

典型推荐是 ALB + Auto Scaling EC2 + RDS。ALB 安全组对公网开放,EC2 只允许来自 ALB 安全组,RDS 只允许来自应用安全组。NACL 保持简洁,避免误伤扩缩容后的实例通信。

数据库业务

数据库如果经常迁移、扩容或切换实例,强烈建议使用安全组引用,而不是依赖固定 IP 白名单。这样在数据库迁移、应用扩容时不会频繁改访问规则。

为什么规则都放行了还是连接失败:排错顺序

下面这个顺序最省时间,建议按层检查。

步骤 1:确认流量路径

你要先确定访问路径是公网直连、VPN、专线、VPC Peering、Transit Gateway,还是通过 ALB/NLB。路径不同,检查点不同。很多用户明明通过 ALB 访问,却一直去改实例公网规则。

步骤 2:检查 Security Group 是否绑对对象

最常见错误不是规则写错,而是安全组挂错实例、挂错 ENI、挂错 RDS。

步骤 3:检查 NACL 是否拦截回包

特别是 SSH、RDP、MySQL 建连后超时的情况,要重点核对子网 ACL 的出入站临时端口范围是否允许。若配置过于严格,建议临时放宽验证。

步骤 4:检查路由

无公网 IP 的私有实例不能直接从互联网访问;公有子网如果路由表没有指向 Internet Gateway,安全组再宽松也没用。

步骤 5:检查系统防火墙和服务监听

Linux 可执行以下命令:

AWS企业资质代办 ss -lntp

sudo firewall-cmd --list-ports

sudo iptables -S

Windows 可检查:

netstat -ano

Get-NetFirewallRule

如果服务根本没监听 0.0.0.0:3306 或 0.0.0.0:80,AWS 侧放行没有意义。

高频错误案例

错误 1:数据库安全组开放给整个 VPC 网段

表面上连接方便,实际上会让同 VPC 内无关实例也能探测数据库端口。更好的做法是仅允许应用安全组。

错误 2:把所有控制都写在 NACL

结果是新增一台实例、修改一个端口都要同时改多条规则,且容易因为编号顺序导致策略失效。

错误 3:忘记出站规则

很多用户只关心入站,但某些场景下出站也会影响业务,例如实例访问外部 API、yum/apt 更新、发送邮件、下载补丁。

错误 4:RDP 或 SSH 来源 IP 写错

本地宽带、公司出口或 VPN 切换后公网 IP 变化,原先 /32 白名单失效,表现为突然无法远程连接。

优化建议:不仅要能通,还要便于长期维护

AWS企业资质代办 安全优化

  • 优先使用安全组引用,不要长期依赖大网段开放。
  • 生产环境区分 Web、App、DB、Bastion 的安全组,不要混用。
  • 对 22、3389 端口设置更严格来源限制,或改用 Session Manager。
  • 对子网 NACL 只保留必要规则,避免复杂度过高。

性能优化

  • 不要把访问慢误判成访问不通。先用 curl、nc、telnet 区分连接失败和响应慢。
  • 跨可用区、跨区域访问数据库时,先测延迟再决定是否需要调整部署位置。
  • 对高并发网站,尽量通过 ALB 统一入口,减少实例直接暴露。

成本优化

  • 用安全组分层授权,避免为简单隔离额外引入不必要的网络设备。
  • 减少因为误配导致的反复迁移、重建实例和停机排查成本。
  • 测试环境使用更简单的规则集,生产环境再逐步加严。

稳定性优化

  • 把安全组和 NACL 规则命名、用途、变更记录写清楚。
  • 变更前先确认作用范围,尤其是关联到整个子网的 NACL。
  • 上线前用一台测试机逐项验证 22、80、443、3306 等关键端口。

真正稳定的 AWS 网络访问控制,不是把规则写得越多越好,而是把实例级权限和子网级限制分层管理。对绝大多数业务来说,Security Group 负责精确授权,Network ACL 负责边界限制和应急阻断,这样最容易维护,也最不容易在故障时误判。

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系