AWS EC2不开放22端口:Session Manager与IMDSv2加固实战

发布时间:2026/7/18 16:53:31

AWS EC2不开放22端口:Session Manager与IMDSv2加固实战
很多团队给 EC2 配置安全组时会习惯性地加入一条0.0.0.0/0 - TCP 22然后再依赖强密码、改端口或 Fail2ban。问题是只要 22 端口对公网可达扫描、爆破和密钥管理就一直存在更换员工、外包交接和跳板机维护也会增加运维负担。这篇文章给出一套可验证、可回滚的改造方案使用 AWS Systems Manager Session Manager 管理 EC2确认链路可用后删除 22 端口入站规则再把实例元数据服务切换为 IMDSv2。最终目标不是“绝对安全”而是减少公网暴露面把访问授权收敛到 IAM并保留审计与故障恢复能力。适用范围Amazon Linux、Ubuntu 等已受 AWS Systems Manager 支持的 EC2命令以 AWS CLI v2 和 Bash 为例。生产环境先在测试实例验证尤其不要在 Session Manager 尚未连通时删除 SSH 入口。一、先把事实说清楚根据 AWS 官方文档Session Manager 可以通过浏览器或 AWS CLI 建立交互式会话不需要开放入站端口也不需要维护堡垒机或 SSH 密钥。访问控制由 IAM 完成。受管节点需要运行 SSM Agent、具备实例角色权限并能通过 HTTPS 访问 Systems Manager 所需服务端点没有公网出口的私有子网可使用 VPC Interface Endpoint。IMDSv2 与 Session Manager 解决的是不同问题Session Manager减少管理入口的公网暴露并集中管理“谁能连哪台机器”IMDSv2访问实例元数据前必须先取得会话令牌降低无令牌元数据请求带来的风险安全组与主机防火墙继续负责业务端口的网络边界CloudTrail、Session Manager 日志配置负责访问事件和会话审计。二、改造前检查满足四个前提准备以下变量exportAWS_REGIONap-southeast-1exportINSTANCE_IDi-0123456789abcdef0exportROLE_NAMEEC2-SSM-Core-RoleexportPROFILE_NAMEEC2-SSM-Core-Profile先确认本地身份和目标实例防止操作错账号或区域aws sts get-caller-identity aws ec2 describe-instances\--region$AWS_REGION\--instance-ids$INSTANCE_ID\--queryReservations[0].Instances[0].{State:State.Name,VpcId:VpcId,SubnetId:SubnetId,PrivateIp:PrivateIpAddress,Iam:IamInstanceProfile.Arn}检查清单实例处于running操作者有创建/附加 IAM 角色、修改 EC2 与启动 SSM 会话的权限实例能够出站访问 Systems Manager 服务通常需要 TCP 443当前 SSH 会话暂时保留用作回滚通道。事实边界具体服务端点随区域和代理版本存在差异应以 AWS 的 Session Manager prerequisites 页面及所在区域的服务端点为准。不要为了省事给实例添加与业务无关的宽泛 IAM 权限。三、创建最小可用的 EC2 实例角色3.1 创建信任策略保存为ec2-trust-policy.json{Version:2012-10-17,Statement:[{Effect:Allow,Principal:{Service:ec2.amazonaws.com},Action:sts:AssumeRole}]}创建角色并附加 AWS 托管策略aws iam create-role\--role-name$ROLE_NAME\--assume-role-policy-document file://ec2-trust-policy.json aws iam attach-role-policy\--role-name$ROLE_NAME\--policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore aws iam create-instance-profile\--instance-profile-name$PROFILE_NAMEaws iam add-role-to-instance-profile\--instance-profile-name$PROFILE_NAME\--role-name$ROLE_NAMEAmazonSSMManagedInstanceCore是供 EC2 角色使用的 AWS 托管策略提供 Systems Manager 核心功能所需权限。它不是给日常人员登录使用的用户权限策略也不应附加给 IAM 用户来“图省事”。3.2 关联到实例如果实例目前没有实例配置文件aws ec2 associate-iam-instance-profile\--region$AWS_REGION\--instance-id$INSTANCE_ID\--iam-instance-profileName$PROFILE_NAME如果已有实例角色不要直接覆盖。先检查原角色承载的业务权限再把AmazonSSMManagedInstanceCore合并到现有角色或使用变更流程替换配置文件。IAM 变更可能需要短时间传播遇到“角色已创建但实例看不到”时先等待并复查不要反复创建同名资源。四、验证 SSM Agent 和网络出口Amazon Linux 2/2023 及许多 AWS 提供的 Ubuntu AMI 通常预装 SSM Agent但不能假设所有自定义镜像都已安装。通过当前 SSH 或控制台执行sudosystemctl status amazon-ssm-agent --no-pagersudosystemctlenable--nowamazon-ssm-agentsudojournalctl-uamazon-ssm-agent-n80--no-pagerUbuntu 的 Snap 安装可能使用服务名snap.amazon-ssm-agent.amazon-ssm-agent.service应以systemctl list-units | grep ssm的实际结果为准。从本地检查实例是否注册为受管节点aws ssm describe-instance-information\--region$AWS_REGION\--filtersKeyInstanceIds,Values$INSTANCE_ID\--queryInstanceInformationList[0].{Ping:PingStatus,Agent:AgentVersion,Platform:PlatformName,LastPing:LastPingDateTime}预期PingStatus为Online。如果结果为空按顺序检查实例角色是否关联、Agent 是否运行、DNS 是否正常、出站 443 是否允许、NAT 或 VPC Endpoint 是否可达。五、先建立第二条会话再删除22端口5.1 浏览器连接在 AWS 控制台进入 EC2 → Instances → 选择实例 → Connect → Session Manager → Connect。能看到 shell 并执行以下命令才算第一阶段成功whoamihostnameuname-asudo-ntrue;echo$?whoami常见结果是ssm-user。是否具备 sudo 取决于操作系统、Agent 和本机 sudoers 配置生产环境应按职责收紧而不是默认所有会话都拥有无限制 root 权限。5.2 CLI 连接本地安装 AWS CLI v2 和 Session Manager plugin 后执行aws ssm start-session\--region$AWS_REGION\--target$INSTANCE_ID保持当前 SSH 不退出再开一个 Session Manager 会话。确认重连、sudo、DNS 和业务检查均正常后才删除安全组中的 22 端口规则。先列出实例安全组aws ec2 describe-instances\--region$AWS_REGION\--instance-ids$INSTANCE_ID\--queryReservations[0].Instances[0].SecurityGroups[*].[GroupId,GroupName]\--outputtable删除规则时优先使用规则 ID避免误删同端口但不同来源的规则aws ec2 describe-security-group-rules\--region$AWS_REGION\--filtersNamegroup-id,Valuessg-0123456789abcdef0\--querySecurityGroupRules[?IsEgressfalse].[SecurityGroupRuleId,IpProtocol,FromPort,ToPort,CidrIpv4,Description]\--outputtable aws ec2 revoke-security-group-ingress\--region$AWS_REGION\--group-id sg-0123456789abcdef0\--security-group-rule-ids sgr-0123456789abcdef0不要复制示例 ID必须替换成自己账号中的真实资源。删除后重新启动一次 Session Manager 会话确认入口已从 SSH 切换到 SSM。六、把实例元数据切换为 IMDSv26.1 先评估兼容性旧版 SDK、脚本或代理可能仍使用 IMDSv1。AWS 官方建议先观察 CloudWatch 的MetadataNoToken指标确认无令牌调用降为零再对现有实例强制 IMDSv2。生产实例不要跳过这一步。查看当前配置aws ec2 describe-instances\--region$AWS_REGION\--instance-ids$INSTANCE_ID\--queryReservations[0].Instances[0].MetadataOptions确认应用兼容后执行aws ec2 modify-instance-metadata-options\--region$AWS_REGION\--instance-id$INSTANCE_ID\--http-endpoint enabled\--http-tokens required容器环境的 hop limit 需要按网络路径评估。AWS 对在容器环境中要求 IMDSv2 的场景建议将响应 hop limit 设为 2普通主机不要机械照抄应以实际工作负载和最小可用值验证。6.2 在实例内验证无令牌请求应失败curl-s-o/dev/null-w%{http_code}\n\http://169.254.169.254/latest/meta-data/再使用 IMDSv2 令牌TOKEN$(curl-sS-XPUT\-HX-aws-ec2-metadata-token-ttl-seconds: 21600\http://169.254.169.254/latest/api/token)curl-sS\-HX-aws-ec2-metadata-token:$TOKEN\http://169.254.169.254/latest/meta-data/instance-id返回值应等于当前实例 ID。不要把实例角色临时凭证打印到日志、工单或聊天窗口。七、可选用 Session Manager 做端口转发数据库和内部管理面板不必直接开放公网端口。以下 Bash 示例把实例的 5432 端口映射到本地 15432aws ssm start-session\--region$AWS_REGION\--target$INSTANCE_ID\--document-name AWS-StartPortForwardingSession\--parameters{portNumber:[5432],localPortNumber:[15432]}然后本地客户端连接127.0.0.1:15432。这不等于数据库可以忽略账号、TLS 和最小权限它只改变网络访问路径。Windows PowerShell 的 JSON 引号转义与 Bash 不同建议把参数写入 JSON 文件或按 PowerShell 语法调整。八、验收矩阵与回滚按下表逐项验收检查项命令或位置通过标准SSM 在线describe-instance-informationPingStatusOnline会话重连控制台和 CLI 各测试一次均可进入目标实例公网入口安全组入站规则不存在 TCP 22 公网规则元数据配置describe-instancesHttpTokensrequiredIMDSv1无令牌curl请求失败或返回 401IMDSv2带令牌curl返回当前实例 ID业务健康监控、日志、接口探测错误率与延迟无异常恢复通道EC2 Serial Console/救援方案权限和流程已验证回滚原则如果 SSM 不在线不要删除 22 端口如果强制 IMDSv2 后应用异常可在授权和变更记录完整的前提下临时将--http-tokens optional回滚并尽快升级 SDK 或脚本。回滚是恢复业务的短期措施不应成为长期配置。九、常见失败定位TargetNotConnected优先检查 SSM Agent、实例角色、区域是否一致、出站 443、DNS、NAT 或 VPC Endpoint。实例 ID 正确但区域写错是最常见的低级问题之一。关联角色后仍不在线IAM 需要传播时间检查实例配置文件而不只是 IAM 角色名称。实例必须关联 instance profile只有孤立的 role 不会自动生效。删除22端口后无法运维使用保留的原 SSH 会话恢复规则或通过 EC2 控制台救援能力处理。真正删除规则前必须完成第二会话重连测试。IMDSv2 开启后应用取不到凭证检查 SDK 版本、容器 hop limit 和MetadataNoToken指标。不要通过把元数据端口代理到公网等危险方式“修复”。十、结论这套方案的价值不是把 SSH 换一个入口而是把运维访问从“公网端口 长期密钥”迁移到“身份权限 受管通道”再通过 IMDSv2、日志和验收清单补齐关键边界。对于多账号、多环境团队还应进一步引入 IAM Identity Center、权限边界、Session Manager 日志、VPC Endpoint 和基础设施即代码。如果你正在规划国际业务、海外站点或 AI 服务可提供国际云服务器合规开户流程咨询、实例选型、部署与运维支持。客户本人完成实名、验证码、支付和合同确认可通过平台私信说明目标区域、业务类型、预计流量和预算以便先做架构与成本边界梳理。官方参考资料AWS Systems Manager Session Managerhttps://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.htmlSession Manager prerequisiteshttps://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-prerequisites.html连接 EC2 的 Session Manager 步骤https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-with-systems-manager-session-manager.htmlAmazonSSMManagedInstanceCore 托管策略https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html新实例要求 IMDSv2https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-IMDS-new-instances.html现有实例迁移到 IMDSv2https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html

相关新闻

开展即高燃!台湾高技亮相APIE2026,展台人气见证技术实力

开展即高燃!台湾高技亮相APIE2026,展台人气见证技术实力

2026/7/18 16:43:31

2026年7月16日,APIE2026第7届亚太国际智能装备博览会暨第28届中国青岛国际工业自动化技术及装备展览会正在青岛 火热开展!开展首日展馆内人头攒动、客商云集,自动化上下游企业齐聚一堂,共探智能制造发展新机遇。台湾高技携旗下滚珠…

抖音内容创作终极解决方案:从零开始构建你的无水印素材库

抖音内容创作终极解决方案:从零开始构建你的无水印素材库

2026/7/18 16:43:31

抖音内容创作终极解决方案:从零开始构建你的无水印素材库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…

Excel数据查询效率低?这个批量查询工具帮你一键解决多文件搜索难题

Excel数据查询效率低?这个批量查询工具帮你一键解决多文件搜索难题

2026/7/18 16:43:31

Excel数据查询效率低?这个批量查询工具帮你一键解决多文件搜索难题 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 在日常办公和数据处理工作中,你是否经常需要从数十甚至上百个…

微组装可靠性设计:失效模式与解决方案

微组装可靠性设计:失效模式与解决方案

2026/7/18 18:13:35

1. 电子微组装为何成为可靠性设计的"硬骨头" 十年前我刚入行时,电子组装还停留在毫米级封装的时代,当时用放大镜就能完成质检。如今在医疗植入器件里,一根发丝粗细的导线要承载30mA电流;航天器控制板上,0.3m…

智能家居技术架构与选型全指南

智能家居技术架构与选型全指南

2026/7/18 18:13:35

1. 智能家居的基本概念与市场现状智能家居这个概念最早可以追溯到1984年美国联合科技公司(United Technologies Building Systems)建造的"智能型建筑",但真正进入大众视野是在2010年后。随着物联网技术的成熟和无线通信协议的标准化…

脑网络演化新发现:近红外光谱揭示晚期早产儿至足月儿的脑功能连接里程碑

脑网络演化新发现:近红外光谱揭示晚期早产儿至足月儿的脑功能连接里程碑

2026/7/18 18:13:35

脑网络演化新发现:近红外光谱揭示晚期早产儿至足月儿的脑功能连接里程碑 导语 早产儿脑发育的评估一直是新生儿科领域的核心挑战。传统临床评估手段难以在生命早期精准量化脑功能的成熟轨迹。近日,北京大学第一医院等机构的研究团队在《Neurophotonics》…

Agent主流开发框架盘点

Agent主流开发框架盘点

2026/7/18 18:13:35

和 Google ADK 生产级Agent开发框架 Top5(2026主流权威榜单)。ADK核心标签:官方出品、多智能体编排、状态/会话持久化、全链路调试观测、工具调用、可批量容器化部署、企业工程化、多模型兼容、协议互通(A2A/MCP)。以下…

FastAPI 超详细零基础实战笔记

FastAPI 超详细零基础实战笔记

2026/7/18 18:13:35

FastAPI 超详细零基础实战笔记(含全套代码案例) FastAPI 是目前 Python 生态中高性能、高效率、高规范性的现代化 Web API 开发框架,自2018年开源以来,凭借原生异步支持、自动生成接口文档、强类型数据校验、极简代码风格四大核心…

电压跟随器原理与应用:运算放大器的负反馈魔法

电压跟随器原理与应用:运算放大器的负反馈魔法

2026/7/18 18:03:34

1. 电压跟随器:电子电路中的"影子武士"第一次接触电压跟随器时,我误以为它只是个简单的缓冲电路。直到在一次精密测量项目中,因为信号源阻抗问题导致数据漂移,才真正理解这个看似简单的电路模块为何被称为"理想放大…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/18 14:07:00

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/17 17:34:09

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/18 5:51:23

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

2026/7/18 0:02:02

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

2026/7/18 0:02:02

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

某智驾大牛创业

某智驾大牛创业

2026/7/18 0:02:02

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…