簡體   English   中英

如何保護網絡負載均衡器后面的 EC2 實例?

[英]How to protect EC2 instances behind a network load balancer?

我正在運行一個帶有公共 IP 地址(例如1.2.3.4 )的 AWS EC2 實例和一個監聽1.2.3.4:8080的服務。 在這個 EC2 前面有一個網絡負載均衡器,目標組指向實例。

現在我想強制所有到端口 8080 的連接都通過該負載平衡器。

為此,我在我的 EC2 中添加了一個安全組,它只允許從負載均衡器的私有 IP 地址到端口 8080 的傳入流量。 但是因為負載均衡器還使用目標的安全組來授予客戶端訪問權限,所以我還需要向其中添加0.0.0.0/0 ,否則沒有人可以從 Internet 訪問負載均衡器。 因此,每個人都可以直接訪問1.2.3.4:8080

我能做些什么嗎?

您不應為 EC2 實例分配公共 IP。
只需為您的網絡負載均衡器分配公共 IP。
但是,通過這種方式,您無法直接通過 ssh 連接到 EC2 實例。
那時您將需要通過其他方式通過 ssh 連接到 EC2 實例。

但是,如果您不堅持使用網絡負載均衡器
您可以使用應用程序負載均衡器來防止用戶直接訪問 EC2 實例,而無需從 EC2 實例中刪除公共 ip。
您仍然可以直接通過 ssh 連接到 EC2 實例。

現在我想強制所有到端口 8080 的連接都通過該負載平衡器。
允許從負載均衡器的私有 IP 地址到端口 8080 的傳入流量
這樣每個人都可以直接訪問 1.2.3.4:8080
我能做些什么嗎?

如果您使用的是 8080 端口,我假設您暴露了一個 HTTP 端點。 在這種情況下,建議使用 ALB 而不是 NLB(我想到的將 NLB 與 HTTP 結合使用的唯一原因是將 SSL 與客戶端證書身份驗證結合使用)

使用 ALB,您可能有 2 個 SG:

  1. 從 Internet 上打開的 LB SG
  2. 從 LB 的 SG 打開 EC2 的 SG(您可以指定 SG,而不是 IP 地址)

在任何情況下(使用 ALB 或 NLB),建議將 EC2 實例置於 LB 后面的私有子網中,沒有公共 IP 地址 - 不路由到 Internet 網關)如果您需要對 EC2 實例的其他訪問權限(ssh、.. ) 您仍然可以創建一些臨時連接 - 例如使用會話管理器 + NAT 網關或 NAT 實例。

注:根據評論編輯

簡單的答案是:不要為 Amazon EC2 實例分配公有 IP 地址

如果您希望單獨連接到實例(例如 SSH),一些選項是:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM