AWS EC2 Instance metadata

更新於 發佈於 閱讀時間約 4 分鐘

EC2 Metadata 是可以從作業系統獲取的 EC2 信息,如 Instance ID、Instance 類型、所屬AZ等。例如,您可以通過將Instance ID 放在作業系統上運行的腳本的數據中來使 Logs 更易於查看。

獲取 Metadata 的方法是Instance Meta Data Service(IMDS) 在 169.254.169.254 使用 link-local IP,可以通過 curl 等命令訪問獲取。

Instance Metadata Service Version 1 (IMDSv1) – a request/response method
Instance Metadata Service Version 2 (IMDSv2) – a session-oriented method

預設情況下,您可以使用 IMDSv1 或 IMDSv2,或同時使用兩者。

IMDSv1 只要用GET方法執行上述命令就可以獲取 metadata,所以如果攻擊者可以將GET方法發送給Instance。(IMDS本身就是安全的)。

但是 IMDSv2,使用 PUT 方法獲取 metadata,需要 PUT 方法頒發的 TOKEN,這使得攻擊更加困難,並允許您配置更強的安全性。


EC2 Instance metadata 版本選擇

創建EC2 控制台 → 啟動 Instance → 在“高級詳細信息”項中,可以 啟用可訪問性 並選擇 metadata 版本

raw-image

預設 Instance metadata 為同時使用兩者

IMDSv1

IMDSv1

IMDSv2

IMDSv2

PUT使用請求創建一個持續六小時(21,600 秒)的 Session TOKEN


IMDSv2 的工作原理

IMDSv2 使用 session 的請求。對於 Session 的請求,您可以創建一個Session TOKEN 來定義Session持續時間,該持續時間最短為一秒,最長為六小時。


使用 EC2 IMDSv2 改進與好處

  • 訪問 v2 需要預先獲取的 Token

1.Token需要通過PUT獲取
2.Token請求時可以設置過期日期(秒)
3.必須在標頭中請求令牌

  • v1 可以禁用(默認可以一起使用)
  • Metadata 服務本身可以被禁用
  • 使用 IAM 權限限制,只能在啟動 EC2 實例時強制您將其設置為 v2
  • 不要向帶有 X-Forwarded-For 標頭的請求發出 Token
  • 可以縮短 Metadata 響應的 TTL 以防止通過多個主機獲取
  • 防止 SSRF 漏洞攻擊


關於 SSRF 漏洞攻擊

SSRF 是 Server-Side Request Forgery 的縮寫,是一種攻擊者偽造服務器發出的請求的攻擊。簡單來說,就是攻擊者利用易受攻擊的服務器向內部服務器發送攻擊請求的攻擊

如果您的創建 Web 服務器是有漏洞的,攻擊者將能夠訪問該 Instance metadata,並且可以使用 IAM 權限以及服務器內部的信息進行攻擊,這是一種危險的攻擊

使用IMDSv1 :

raw-image

易受攻擊的網頁請求

raw-image

範例程式

<?php
$target = isset($_GET['target']) ? $_GET['target'] : null;
if ($target == null){
echo "no result";
exit();
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
$output = curl_exec($ch);

curl_close($ch);

print_r($output);
?>


解決方式


方法ㄧ 修改請求方式需要 TOKEN(關閉IMDSv1)

raw-image
raw-image

方法二關閉 metadata

raw-image
raw-image

補充

HttpPutResponseHopLimit (Integers from 1 to 64)

IMDSv2 需要 PUT 來檢索Token。這個參數設置限制了對該 PUT 的response在被網路丟棄之前的跳數,httpPutResponseHopLimit該設置的默認值為 1。

這意味著如果您距離 IMDS 不止一個網路跳點,那麼您將收到錯誤消息。最常見的原因是您在 docker 容器中運行。


avatar-img
16會員
80內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
西尼亞ming的沙龍 的其他內容
以下是限制 S3 bucket 訪問 HTTPS 的方法 測試 S3 存儲桶訪問 S3 bucket 通常允許 HTTP 和 HTTPS 訪問 AWS CLI 預設通常使用 HTTPS 向 AWS 服務發送請求 https://docs.aws.amazon.com/zh_tw/cli/l
1.檢查AWS Health Dashboard 通過檢查 Health Dashboard ,可以得知 AWS 帳戶特定的故障通知 與 AWS 服務和區域故障報告。您可以注意到如 執行了緊急硬件維護 或 與 RDS相關的服務出現故障,導致無法連接到RDS之類的訊息。 2. 檢查 Maint
CloudFront除錯相關 確認問題資訊 我們了解您遇到了網站異常的問題,麻煩您協助我們提供以下資訊,以便我們快速排解您的問題,感謝: 請問您發生異常的 CloudFront Distribution 是哪一個 請問現在還會有此異常狀況嗎 您最初發生異常的時間點大約是何時 請問您這種現
有這一篇原因是工作上,建立 OU 時,會自動新增額外的 FullAWSAccess 規則,但原本就會有預設Root OU繼承的FullAWSAccess,等於會有兩組一樣的規則,故所以詢問了AWS Support。 先謝謝 AWS 技術支援工程師 George 細心說明~ SCP很重要的
可以分析源代碼並檢查在遷移到 AWS Graviton 時需要更改的過時運行library 優化 aws 成本的方法之一是遷移到並採用具有高性價比的AWS Graviton 推薦使用AWS Graviton,從可持續性的角度來看,它有很好的表現 但有需要注意的地方: 不適用於所有操作系統和實
AWS AMI Oracle Linux 7 包成 AMI 後,使用 AMI 啟動新 EC2 會遇到 Instance status checks fail 的問題 查看 system log 看到 EC2 開機時沒有抓到 eth0 ,導致 Instance status checks fai
以下是限制 S3 bucket 訪問 HTTPS 的方法 測試 S3 存儲桶訪問 S3 bucket 通常允許 HTTP 和 HTTPS 訪問 AWS CLI 預設通常使用 HTTPS 向 AWS 服務發送請求 https://docs.aws.amazon.com/zh_tw/cli/l
1.檢查AWS Health Dashboard 通過檢查 Health Dashboard ,可以得知 AWS 帳戶特定的故障通知 與 AWS 服務和區域故障報告。您可以注意到如 執行了緊急硬件維護 或 與 RDS相關的服務出現故障,導致無法連接到RDS之類的訊息。 2. 檢查 Maint
CloudFront除錯相關 確認問題資訊 我們了解您遇到了網站異常的問題,麻煩您協助我們提供以下資訊,以便我們快速排解您的問題,感謝: 請問您發生異常的 CloudFront Distribution 是哪一個 請問現在還會有此異常狀況嗎 您最初發生異常的時間點大約是何時 請問您這種現
有這一篇原因是工作上,建立 OU 時,會自動新增額外的 FullAWSAccess 規則,但原本就會有預設Root OU繼承的FullAWSAccess,等於會有兩組一樣的規則,故所以詢問了AWS Support。 先謝謝 AWS 技術支援工程師 George 細心說明~ SCP很重要的
可以分析源代碼並檢查在遷移到 AWS Graviton 時需要更改的過時運行library 優化 aws 成本的方法之一是遷移到並採用具有高性價比的AWS Graviton 推薦使用AWS Graviton,從可持續性的角度來看,它有很好的表現 但有需要注意的地方: 不適用於所有操作系統和實
AWS AMI Oracle Linux 7 包成 AMI 後,使用 AMI 啟動新 EC2 會遇到 Instance status checks fail 的問題 查看 system log 看到 EC2 開機時沒有抓到 eth0 ,導致 Instance status checks fai
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
  在開始操作Web Service之前,要先做一些前置作業IIS的安裝,再開始建置Web Service相關內容,最後就是連線測試。   IIS(Internet Information Services)是網際網路資訊服務,可以讓網站使用HTTP/HTTPS、FTP/FTPS、SMTP 等等的
Thumbnail
Cloud Run 允許您指定哪些修訂版應該接收流量,並指定不同版本接收的流量比例。Revisions 也能使您能夠回滾到先前的版本、逐步增加新版本的流量比例,或在多個修訂版之間拆分流量。
Thumbnail
在串接第三方 API時,需要定期刷新 token,那有沒有辦法針對 request 和 response 做配置,在 token 過期時先做刷新、再做請求呢?本文要介紹利用 axios 套件提供的攔截器刷新 token 的作法。
Thumbnail
IaaS 以虛擬化原理運作,企業可從雲端服務商那裡獲得運算、儲存和資料庫等服務,不再需要自己購買設備、管理設備,或託管設備的空間。
Thumbnail
IaaS是一種雲端服務模型,所使用的運算資源託管在公有雲 、私有雲或混合雲中,能將傳統IT硬體設備統整為虛擬的運算資源,而得以針對運算需求彈性地調配資源。
Thumbnail
在企業內部環境中,對服務和API的安全且高效率的存取至關重要。本文探討了GCP提供的 Private GoogleAccess、Private Service Connect、Serverless VPC Access、Private Services Access 的區別,以及它們如何使組織受益。
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
Service Worker 是用於客戶端的攔截器,可以使用 Cache Storage 和 IndexDB,並有自己的生命週期。Web Worker 用於處理可能會使用到大量運算且不希望影響到使用者體驗的任務。Shared Worker 可以在相同 Domain 的不同頁面上共享訊息。
Thumbnail
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
  在開始操作Web Service之前,要先做一些前置作業IIS的安裝,再開始建置Web Service相關內容,最後就是連線測試。   IIS(Internet Information Services)是網際網路資訊服務,可以讓網站使用HTTP/HTTPS、FTP/FTPS、SMTP 等等的
Thumbnail
Cloud Run 允許您指定哪些修訂版應該接收流量,並指定不同版本接收的流量比例。Revisions 也能使您能夠回滾到先前的版本、逐步增加新版本的流量比例,或在多個修訂版之間拆分流量。
Thumbnail
在串接第三方 API時,需要定期刷新 token,那有沒有辦法針對 request 和 response 做配置,在 token 過期時先做刷新、再做請求呢?本文要介紹利用 axios 套件提供的攔截器刷新 token 的作法。
Thumbnail
IaaS 以虛擬化原理運作,企業可從雲端服務商那裡獲得運算、儲存和資料庫等服務,不再需要自己購買設備、管理設備,或託管設備的空間。
Thumbnail
IaaS是一種雲端服務模型,所使用的運算資源託管在公有雲 、私有雲或混合雲中,能將傳統IT硬體設備統整為虛擬的運算資源,而得以針對運算需求彈性地調配資源。
Thumbnail
在企業內部環境中,對服務和API的安全且高效率的存取至關重要。本文探討了GCP提供的 Private GoogleAccess、Private Service Connect、Serverless VPC Access、Private Services Access 的區別,以及它們如何使組織受益。
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
Service Worker 是用於客戶端的攔截器,可以使用 Cache Storage 和 IndexDB,並有自己的生命週期。Web Worker 用於處理可能會使用到大量運算且不希望影響到使用者體驗的任務。Shared Worker 可以在相同 Domain 的不同頁面上共享訊息。
Thumbnail
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊