记录将AWS EC2 升级到 IMDSv2 的过程
记录将AWS EC2 升级到 IMDSv2 的过程

记录将AWS EC2 升级到 IMDSv2 的过程

内容目录

记录将AWS EC2 升级到 IMDSv2 的过程

背景

AWS Instance Metadata Service (IMDS) 是为EC2实例提供实例元数据的服务。为了提高安全性,AWS推出了IMDSv2版本。最近工作需要完成这个升级的工作,所以本文将详细介绍如何将EC2实例从IMDSv1升级到IMDSv2。

为什么要升级到 IMDSv2?

在深入了解升级步骤之前,让我们先理解为什么需要这次升级:

IMDSv1 存在的安全风险:

  • 容易受到服务器端请求伪造(SSRF)攻击
  • 缺乏请求验证机制
  • 可能被恶意程序利用

IMDSv2 的优势:

  • 引入了会话令牌机制,提高安全性
  • 使用 PUT 请求获取临时令牌,更符合安全最佳实践
  • 可以有效防止 SSRF 攻击

前提条件

在开始升级之前,请确保满足以下条件:

  • EC2 实例状态为"正在运行"
  • 当前 IMDSv2 设置为"可选"模式
  • 已获取必要的 AWS 控制台访问权限
  • 备份了重要数据(以防万一)

升级步骤详解

1. 检查实例当前状态

首先,我们需要确认实例是否已经准备好升级:

# 检查当前 IMDS 版本
curl -w "%{http_code}\n" http://169.254.169.254/latest/meta-data/

如果返回 200,说明当前还在使用 IMDSv1。

2. 在 AWS 控制台中修改设置

  1. 打开 AWS 管理控制台
  2. 导航到 EC2 服务
  3. 在左侧导航栏中选择"实例"
  4. 找到并选中目标实例
  5. 点击"操作" → "实例设置" → "修改实例元数据选项"

3. 验证 IMDSv1 使用情况

在修改设置之前,请检查是否仍有应用在使用 IMDSv1:

  1. 在 CloudWatch 中查看 MetadataNoToken 指标
  2. 确保该指标值为 0(表示没有 IMDSv1 请求)
  3. 建议观察至少 24 小时,确保没有遗漏的应用

4. 启用强制 IMDSv2

确认安全后,执行以下步骤:

  1. 在"修改实例元数据选项"页面
  2. 将"IMDSv2"设置更改为"必需"
  3. 点击"保存"确认更改

5. 验证升级结果

Linux 系统验证

# 1. 测试 IMDSv1(应返回 401 错误)
curl -v http://169.254.169.254/latest/meta-data/

# 2. 测试 IMDSv2(应成功获取数据)
TOKEN=curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"
curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/

Windows 系统验证

在 PowerShell 中执行:

# 1. 测试 IMDSv1
curl -v http://169.254.169.254/latest/meta-data/

# 2. 测试 IMDSv2
$TOKEN = (Invoke-WebRequest -UseBasicParsing -Method PUT -Headers @{"X-aws-ec2-metadata-token-ttl-seconds"="21600"} -Uri "http://169.254.169.254/latest/api/token").Content
Invoke-WebRequest -UseBasicParsing -Headers @{"X-aws-ec2-metadata-token"=$TOKEN} -Uri "http://169.254.169.254/latest/meta-data/"

常见问题解答

升级后无法访问元数据怎么办?

检查以下几点:

  • 确认使用了正确的 IMDSv2 请求格式
  • 验证 Token 是否过期(默认有效期为 6 小时)
  • 检查网络安全组设置是否正确

应用程序报错怎么处理?

  • 检查应用程序代码中的元数据访问方式
  • 更新应用程序使用 IMDSv2 API
  • 确保所有依赖库都支持 IMDSv2

如何监控升级后的状态?

  • 定期检查 CloudWatch 中的 MetadataNoToken 指标
  • 设置告警监控未授权的访问尝试
  • 检查应用程序日志中的相关错误

总结

升级过程本身就是点一下选项,很简单,但是提前一定要确认好服务器没有在使用IMDSv1的情况下进行升级。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注