在配置 Amazon EC2 或 Amazon RDS 时,若为了连接方便而在安全组(Security Group)入站规则中将 22(SSH)或 3306(MySQL)端口来源设为 0.0.0.0/0,会使实例直接暴露在公网的自动化扫描之下。这种配置常导致暴力破解尝试,消耗系统资源并增加数据泄露风险。

补充风险提示:若环境启用 IPv6,::/0全网开放和 IPv4 的0.0.0.0/0风险等同,配置时同样需要禁止。

根据 2026 年 8 月的 AWS 安全最佳实践,22、3306 端口向全网开放会触发 AWS Security Hub CIS 基准高风险告警(对应检查项 EC2.13)。本文说明如何将访问权限限制为指定 IP,并提供动态 IP 场景下的替代方案。

一、 核心概念:安全组的状态化特性

在 VPC 部署中,安全组(Security Group)是实例 / 弹性网卡级别的防火墙。其核心特性是 “状态化(Stateful)”: 状态化:允许入站流量后,系统会自动允许相应的出站响应流量,无需配置出站规则。安全组仅支持允许规则,不支持直接配置拒绝规则。 对比 NACL:网络 ACL 作用于子网级别,是无状态的,需分别配置入站和出站规则。

二、 实操步骤:限制端口访问

以下操作适用于移除高危规则并限制特定 IP 访问。

方案对比

访问控制方案 来源配置示例 适用场景
全局开放 0.0.0.0/0 、::/0 仅限无敏感数据的临时测试,完成后需立即删除,设置提醒清理。
指定固定 IP 203.0.113.50/32 适用于拥有固定公网 IP 的办公网络,安全性高;多人办公填写办公出口 CIDR。
指定动态 IP My IP 适用于个人开发者;My IP 读取浏览器公网出口 IP,代理 / NAT 环境会获取错误 IP,IP 变动后规则直接失效
无端口访问 无需开放入站端口 使用 AWS Systems Manager (SSM),安全性最高,推荐生产环境。

步骤一:定位安全组

  1. 登录 AWS 管理控制台,进入 Amazon EC2 或 Amazon RDS 页面。
  2. 选中目标实例,在 “安全” 选项卡中点击关联的安全组 ID。

注意:EC2 多弹性网卡场景,每个网卡可绑定独立安全组,需要确认修改全部网卡绑定的安全组。

步骤二:编辑入站规则

  1. 在安全组详情页点击 “编辑入站规则”。
  2. 找到端口 22 或 3306 的规则。
  3. 修改来源:删除 0.0.0/0、::/0,单人使用可在来源下拉菜单选择 “我的 IP(My IP)”,系统会自动填入当前公网 IP(带 /32 掩码);企业环境填写办公出口 CIDR,也可以填写另外一个安全组 ID 做 VPC 内部授权。
  4. 保存规则。

针对 RDS 最佳实践:优先授权信任 EC2 的安全组 ID 作为来源,而非公网 IP;生产 RDS 建议部署私有子网,尽量不开启公网访问。

三、 验证与排错

修改后若连接超时,请按以下顺序排查:

  1. 本地 IP 变动:动态宽带 IP 变化会导致白名单失效,需重新更新规则;代理环境不要直接使用 MyIP。
  2. VPC 路由:确认子网路由表已关联互联网网关(IGW),公网访问才可达。
  3. NACL 规则:检查子网级别是否存在阻断特定端口的无状态规则,NACL 需要同时配置入站、出站。
  4. 实例层面:检查操作系统防火墙、密钥 / 账号密码是否正常;即使 IP 做白名单,弱密码依然存在被攻击风险。

注意:修改入站规则不会中断已建立的连接。安全组的状态化特性会跟踪现有会话,规则变更仅影响新发起的连接请求。

四、 进阶替代方案

针对动态 IP 频繁变动的问题,2026 年的云安全实践建议: EC2 访问:使用 AWS Systems Manager (SSM) Session Manager。通过 SSM Agent 建立 HTTPS 隧道,无需开放 22 端口,支持操作审计。

前置条件:EC2 实例需要绑定实例配置文件 Instance Profile,附加托管策略AmazonSSMManagedInstanceCore;AMI 默认自带 SSMAgent,部分老旧系统需要手动安装。实例不需要公网 IP 也可以使用。

RDS 访问:将数据库置于私有子网;可以通过配置 SSM 的 EC2 跳板机端口转发,或者使用 AWS Client VPN 接入 VPC。

不推荐跳板机向全网开放 22 端口;跳板机自身同样需要 IP 白名单或使用 SSM 登录跳板机。

五、 总结

严格限制 AWS EC2 与 RDS 的端口访问是云安全基线的要求。禁止 0.0.0.0/0 与 ::/0 全网开放并采用最小权限原则,能有效阻断绝大多数公网扫描攻击。建议开启 AWS Config 规则做自动检测,定期审计安全组,清理冗余规则。

常见问题 (FAQ):

Q1:控制台 My IP 选项有什么局限,企业多员工办公可以直接用 My IP 吗? A:My IP 抓取的是浏览器访问 AWS 控制台的公网出口 IP。家庭宽带单人调试适用;企业多人办公环境,员工出口 IP 不统一,不能使用 My IP,应当填写企业整体公网出口 CIDR 段,或者改用 SSM/Client VPN 方案。

Q2:RDS 数据库安全组,填写 IP 和填写另一个安全组 ID 有什么区别?

A:填写安全组 ID 是 VPC 内部授权,跟随实例弹性网卡自动适配,EC2 实例重启、更换公网 IP 不受影响;填写公网 IP,EC2 公网 IP 变化后访问直接失效,维护成本更高。生产环境优先使用安全组 ID 作为来源。

Q3:已经把 22 端口只放行自己办公 IP,还会有被暴力破解风险吗?

A:公网扫描攻击会被拦截;但如果实例账号使用弱密码,一旦攻击者获得该办公网段内某一台机器权限,会发生内网横向渗透。建议配套密钥登录、禁用密码、定期审计实例账号。

Q4:安全组修改完成后 SSH 依旧连接超时,排查顺序是什么?

A:1、确认弹性网卡绑定的安全组是否全部修改;2、确认本地公网 IP 是否已经变化;3、VPC 子网路由是否有 IGW;4、子网 NACL 入站出站是否放行;5、实例内部操作系统防火墙。注意安全组只做允许,没有拒绝规则。

Q5:SSM Session Manager 使用,EC2 实例必须要有公网 IP 吗?

A:不需要。只要 VPC 具备 SSM VPC 端点,实例部署私有子网也可以使用 Session Manager;但实例必须绑定对应 IAM 实例配置文件,否则无法连接。

Q6:临时测试需要开放 22 端口全网,有什么注意事项?

A:仅用于短时间调试;开放后设置日历提醒,调试结束立刻删除 0.0.0.0/0 和::/0 规则,禁止长期保留;不要用于生产实例。

Q7:如何自动检测账号内存在高危安全组?

A:开启 AWS Config,启用security-group-no-public-access规则,自动识别 22/3389/3306 等端口全网开放的安全组;也可以开启 Security Hub 接收基线告警。

作者:翼龙云/Yilongcloud

相关新闻

联系我们

联系我们

电报:@yilongcloud

邮件:yilongcloud@hotmail.com

工作时间:早上8:00-晚上11:00

认准电报
认准电报
分享本页
返回顶部