EC2 只想讓特定 IP 連線?Security Groups 與 Network ACL 的正確設定方式
EC2 只想讓特定 IP 連線?Security Groups 與 Network ACL 的正確設定方式

在這篇文章中,你將學會如何使用 AWS Security Groups 與 Network ACL,在 EC2 instance 上允許或封鎖特定 IP。

要管理 EC2 instance 的網路存取, Amazon Web Services (AWS) 提供多種機制,協助你允許或封鎖特定 IP 位址。以下是一份一步一步的指南,教你如何控制 EC2 instances 的存取權限:

了解 Security Groups 與 Network ACLs

在進入細節之前,你需要先理解兩個重要的 AWS 元件:Security Groups 與 Network Access Control Lists(ACLs)。

  • AWS 安全群組(Security Groups):它們就像是 EC2 instances 的虛擬防火牆,在 instance 層級 控制 inbound 與 outbound 流量。
  • AWS 網路存取控制清單(Network ACLs):它們在 subnet 層級 提供一層安全防護,用來控制進出一個或多個 subnets 的流量。

什麼是 Inbound 與 Outbound Rules?

Inbound:這些規則用來控制「進入」EC2 instance 的網路流量。Inbound rules 會定義哪些流量可以進到 instance。舉例來說,如果你的 EC2 instance 上有運行 web server,你就會設定 inbound rule 允許 port 80(HTTP)與 443(HTTPS)的流量,讓使用者可以存取你的網站。

Outbound:這些規則用來控制「離開」EC2 instance 的網路流量。Outbound rules 會指定哪些流量可以從 instance 對外送出。舉例來說,如果你的應用程式需要存取外部的 database 或 API,你就會設定 outbound rule,允許流量連到該 database 或 API 所在的特定 IP 位址或 port。

使用 Security Groups 在 EC2 instance 上允許或封鎖 IP 的操作步驟

  1. 登入你的 AWS console,並進到 EC2 服務。接著點擊「Instances」,查看目前可用的 instances。
EC2 執行個體控制台( EC2 Instance dashboard)
  1. 接著選擇你想要允許 IP 的 instance,並切換到「Security」分頁。
EC2 執行個體安全群組規則
  1. 在這裡你會看到有哪些「Security groups」已經套用到你的 EC2 instance。你也可以看到所有 inbound 與 outbound rules。現在點擊「Security groups」的名稱,進入該 security group。
EC2 執行個體的 Amazon EC2 安全群組
  1. 接著選擇你需要的 Inbound/Outbound rules。本例將示範如何封鎖所有 IP 存取你的 EC2 SSH(Inbound),只保留你自己的 IP 可以連線。現在選擇 Inbound Rules,並點擊「Edit inbound rules」。
EC2 安全群組:inbound rule
  1. SSH 通常會預設建立。在「Source」欄位點擊下拉選單,選擇「My IP」。
EC2 安全群組:編輯 inbound rule
  1. 點擊「Save rules」。這樣就只允許你存取 SSH。若要封鎖特定 IP,請確保你沒有把它們放進允許的規則中。因為 AWS Security Groups 是 stateful,並且採用 whitelist(白名單)模型,也就是除了你明確允許的流量之外,其它都會被拒絕。若要封鎖特定 IP,請確保你沒有把它們放進允許的規則中。

使用 Network ACLs 在 EC2 實例 上允許或封鎖 IP 的操作步驟

  1. 登入你的 AWS console,並進到 EC2 服務。接著點擊「Instances」,查看目前可用的 instances。
EC2 執行個體控制台
  1. 接著選擇你想要允許/封鎖 IP 的 instance。在詳細資訊區塊點擊「Subnet ID」。
EC2 執行個體:查看細項
  1. 進到 subnet 後,切換到「Network ACL」分頁,並點擊「Network ACL」名稱。
選擇 Network ACL
  1. 接著再點一次「Network ACL ID」。切換到「Inbound rules」分頁,並點擊「Edit inbound rules」。這裡我們要拒絕來自某個特定 IP CIDR 的所有流量。
在 NET ACL 中編輯 inbound rules
  1. 現在點擊「Add new rule」。設定一個「Rule number」(rule number 代表規則執行的順序,會以數字由小到大決定優先順序)。這裡填「90」,因為我們已經有一條 rule number 為 100 的規則;要拒絕某個 IP,就必須用更小的數字,讓拒絕規則先被執行。接著在「Source」填入該 IP CIDR,並在「Allow/Deny」選擇「Deny」。完成後點擊「Save Changes」。
儲存 NET ACL 中所做的更動

這個變更會立即生效。Network ACLs 是 stateless,而且在預設情況下,Network ACL rules 會允許雙向的所有流量。

結論

透過正確使用 Security Groups 與 Network ACLs,你可以非常精準地控制誰能存取你的 EC2 instances。請隨時記得在安全性與功能性之間取得平衡,確保你的設定不會不小心擋到合法流量,或讓你的 instances 暴露在不必要的風險中。

🔐 擔心你的 EC2 instances 安全性嗎?
勤英科技 提供 Amazon EC2 資安強化的專業建議,涵蓋從 IAM roles、security groups 到加密(encryption)、修補(patching),以及正式環境(production environments)的最佳實務。
👉 立即預約勤英科技顧問,讓你的 EC2 workloads 在兼顧信心、合規(compliance)的前提下完成加固!

author avatar
Golam Rabbany
AWS AWS EC2 AWS 資安