我以为我的 AWS EC2 已经安全——直到我检查了 Security Groups

发布: (2025年12月21日 GMT+8 21:52)
5 min read
原文: Dev.to

Source: Dev.to

为什么我以为我的 EC2 实例是安全的

和许多初学者一样,我只关注让东西能跑起来:

  • EC2 实例成功启动
  • SSH 访问正常
  • 应用可以访问

当时我就直接往前走——认为安全已经“处理好”。
我最初没有去质疑在配置实例时所做的默认和便利驱动的选择。这正是问题的起点。

我最初使用的安全组配置

创建 EC2 实例时,我允许了类似以下的入站流量规则:

  • SSH(端口 22) → 来源:0.0.0.0/0
  • HTTP(端口 80) → 来源:0.0.0.0/0

当时觉得这样合理:

  • 我需要访问实例
  • 我想测试连通性
  • AWS 没有给出警告,直接允许

但实际上这意味着更严重的后果。

审查安全组后我的认识

安全组是有状态的虚拟防火墙,控制 EC2 实例的入站和出站流量。
通过允许来自 0.0.0.0/0 的流量,我实际上在说:

“互联网上的任何人都可以尝试连接我的实例。”

这包括:

  • 自动化扫描器
  • 探测开放端口的机器人
  • 寻找错误配置系统的恶意行为者

EC2 实例本身并没有改变——但我的认知改变了。

我的关键错误

1. 过于宽松的入站规则

允许任何地方的 SSH 是最常见的初学者错误之一。即使没有人立刻攻击,你始终面临风险。

2. 把安全组当作设置表单

我把安全组配置当成勾选框练习,而不是安全边界。

3. 没有最小权限原则

我为了便利而开放了超出实际需要的访问。

我为确保 EC2 实例安全所做的更改

限制 SSH 访问

  • 只允许来自我特定 IP 地址的 SSH
  • 不再全局开放

仔细审查入站规则

  • 只打开必要的端口
  • 删除未使用或临时的规则

将安全组视为动态控制

  • 定期审查,而不是“一次设置后忘记”
  • 根据实际使用情况调整规则

这些更改立刻降低了实例的暴露风险。

更大的教训:AWS 不会替你保安

我得到的一个重要认识是:AWS 提供工具——你负责如何安全地使用它们。
EC2 功能强大,但它默认用户已经了解:

  • 网络基础
  • 访问控制
  • 曝露风险

安全组不是高级功能——它们是基础。

这对谁重要

如果你是以下角色,这个教训尤为重要:

  • AWS 新手
  • 通过动手项目学习云技术
  • 第一次部署 EC2
  • 为真实的云岗位做准备

及早理解安全组可以帮助你避免后期更大的问题。

我接下来要改进的地方

这次经历促使我思考超越基础设置:

  • 使用堡垒机而不是直接 SSH
  • 自动化安全检查
  • 添加监控和日志
  • 设计完全减少公共暴露的架构

安全不是一次性任务——它是持续的实践。

最后感想

我的 EC2 实例之所以不安全,并不是因为 AWS 失职。
而是因为我没有完全理解自己到底放行了什么。

检查安全组只需几分钟——却能防止严重问题。
如果你正在学习 AWS,请从这里开始。

Back to Blog

相关文章

阅读更多 »

EC2 密钥对

EC2 密钥对 - 公钥 – 由 AWS 存储并放置在 EC2 实例的 ~/.ssh/authorized_keys 中。 - 私钥 – 下载到本地机器;AWS 从不…

如何在 AWS 中创建 EC2 实例

封面图片:如何在 AWS 上创建 EC2 实例。https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2...