小智 6

让我总结一下我在这里发现的内容

  1. 通过 AWS 控制台中的 EC2 服务连接到实例
  2. 输入 IMDSv1 命令:curl http://169.254.169.254/latest/meta-data/
  3. 如果您收到列表项,则您的实例可以使用 IMDSv1 请求。如果您收到401 - Unauthorized,则它使用 IMDSv2 或非 IMDSv2。
  4. 现在输入 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/
  5. 如果您收到项目列表,则您的实例可以使用 IMDSv2 请求。否则,您的实例根本不允许请求元数据(无论版本如何)

如果您想更改此配置,请按照此操作


ste*_*din 5

如果您想从 EC2 实例中确定它,您可以尝试向http://169.254.169.254/发送请求并查看状态代码是什么。

例如,此实例启用了 IMDSv2,并且不接受没有令牌的请求:

$ curl -w "%{http_code}\n" http://169.254.169.254/
401
Run Code Online (Sandbox Code Playgroud)

401个状态码是指未经授权。

如果您拥有有权描述 EC2 实例的 AWS 访问密钥,那么您可以运行以下命令:

$ aws ec2 describe-instances --region us-west-2 --instance-id i-0123456789abcdef --query Reservations[0].Instances[0].MetadataOptions
{
    "State": "applied",
    "HttpTokens": "optional",
    "HttpPutResponseHopLimit": 1,
    "HttpEndpoint": "enabled"
}
Run Code Online (Sandbox Code Playgroud)

此服务器不需要 IMDSv2 ( HttpTokensis optional)。

要启用 IMDSv2,您可以运行aws ec2 modify-instance-metadata-options.

  • 只需添加使用 AWD 配置规则 - [ec2-imdsv2-check](https://docs.aws.amazon.com/config/latest/developerguide/ec2-imdsv2-check.html) 自动检查 EC2 合规性。 (2认同)