Linux 執行個體的 Amazon EC2 安全群組 - Amazon Elastic Compute Cloud

Linux 執行個體的 Amazon EC2 安全群組

安全群組會做為您 EC2 執行個體的虛擬防火牆,控制傳入及傳出流量。傳入規則會控制傳入至您的執行個體的流量,以及傳出規則會控制從您的執行個體傳出的流量。啟動執行個體時,您會為其指派一個或多個安全群組。如果您未指定安全群組,則 Amazon EC2 會使用預設的安全群組。您可在各個安全群組中新增規則,允許流量往返於建立關聯的執行個體。您可隨時修改安全群組規則。新的、修改過的規則會自動套用至與安全群組建立關聯的所有執行個體。當 Amazon EC2 決定是否要允許流量觸達執行個體時,我們會評估所有與執行個體建立關聯之安全群組的所有規則。

當您在 VPC 中啟動執行個體時,您必須指定針對該 VPC 建立的安全群組。在您啟動執行個體之後,便無法變更其安全群組。安全群組與網路界面關聯。變更執行個體的安全群組也會變更與主要網路界面 (eth0) 關聯的安全群組。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的變更執行個體的安全群組。您也可以變更與任何其他網路界面關聯的安全群組。如需更多詳細資訊,請參閱 變更安全群組

安全是 AWS 與您共同肩負的責任。如需更多詳細資訊,請參閱 Amazon EC2 中的安全。AWS 提供安全群組作為保護執行個體的工具之一,您需要對其進行設定以符合安全需求。若您有安全群組無法完全滿足的需求,您可以在使用安全群組的同時在您的任何執行個體上維持您自己的防火牆。

若要允許流量連線到 Windows 執行個體,請參閱《Windows 執行個體的 Amazon EC2 使用者指南》中的適用於 Windows 執行個體的 Amazon EC2 安全群組

安全群組規則

安全群組的規則可控制允許觸達與安全群組相關聯之執行個體的對內流量。規則也會控制允許離開的對外流量。

以下為安全群組規則的特性:

  • 根據預設,安全群組允許所有對外流量。

  • 安全群組規則一律為許可制。您無法建立拒絕存取的規則。

  • 安全群組是具有狀態的群組—若您從執行個體傳送請求,該請求的回應流量將允許流入,與對內安全群組規則無關。針對 VPC 安全群組,這也表示獲得允許之對內流量的回應也將允許流出,與對外規則無關。如需詳細資訊,請參閱 連線追蹤

  • 您可以隨時新增和移除規則。您的變更會自動套用到與安全群組關聯的執行個體。

    有些規則變更的效果可取決於追蹤流量的方式。如需更多詳細資訊,請參閱 連線追蹤

  • 當您將多個安全群組與執行個體建立關聯時,每個安全群組的規則都會有效彙總並建立一組規則。Amazon EC2 會使用這組規則來決定是否允許存取。

    您可以將多個安全性群組指派給執行個體。因此,執行個體可以有數百個適用的規則。這可能會在您存取執行個體時產生問題。但建議您盡可能緊縮您的規則。

針對每個規則,您指定下列項目:

  • 名稱:安全群組的名稱 (例如 my-security-group)。

    名稱的長度上限為 255 個字元。允許的字元為 a-z、A-Z、0-9、空格鍵和 ._-:/()#,@[]+=;{}!$*。當名稱尾隨空格時,我們會裁切空格並儲存名稱。例如,如果您輸入「測試安全群組」做為名稱,我們會將其儲存為「測試安全群組」。

  • 通訊協定:要允許的通訊協定。最常見的通訊協定為 6 (TCP)、17 (UDP) 和 1 (ICMP)。

  • 連接埠範圍:適用於 TCP、UDP 或自訂通訊協定,要允許的連接埠範圍。您可以指定單一連接埠號碼 (例如,22),或是連接埠號碼的範圍 (例如,7000-8000)。

  • ICMP 類型及代碼:適用於 ICMP,為 ICMP 的類型及代碼。

  • 來源或目標:流量的來源 (對內規則) 或目標 (對外規則)。指定下列其中一個選項:

    • 個別 IPv4 地址。您必須使用 /32 前綴長度,例如,203.0.113.1/32

    • 個別 IPv6 地址。您必須使用 /128 前綴長度,例如,2001:db8:1234:1a00::123/128

    • IPv4 地址範圍,以 CIDR 區塊表示法表示;例如,203.0.113.0/24

    • IPv6 地址範圍,以 CIDR 區塊表示法表示;例如,2001:db8:1234:1a00::/64

    • 字首清單 ID,例如 pl-1234abc1234abc123。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的字首清單

    • 其他安全群組。這可允許與指定安全群組相關聯的執行個體,存取與此安全群組相關聯的執行個體。選擇此選項不會將規則從來源安全群組新增到此安全群組。您可以指定下列其中一個安全群組:

      • 目前安全群組

      • 相同 VPC 的不同安全群組

      • VPC 對等連線中對等 VPC 的不同安全群組

  • (Optional) Description ((選用) 描述):您可以為規則新增描述,這可協助您在稍後更容易識別它。描述的長度最高可達 255 個字元。允許的字元為 a-z、A-Z、0-9、空格鍵和 ._-:/()#,@[]+=;{}!$*。

當您將安全群組指定為規則的來源或目標時,規則會影響所有與安全群組相關聯的執行個體。傳入流量會根據與來源安全群組相關聯之執行個體的私有 IP 地址允許 (而非公有 IP 或彈性 IP 地址)。若需 IP 地址的詳細資訊,請參閱Amazon EC2 執行個體 IP 定址。若您的安全群組規則參考位於對等 VPC 中的安全群組,且受參考的安全群組或 VPC 對等連線遭到刪除,則規則便會標記為過時。如需詳細資訊,請參閱Amazon VPC Peering Guide中的使用過時安全群組規則

若特定連接埠有超過一個規則,Amazon EC2 會套用最寬鬆的規則。例如,若您有一個規則,允許 IP 地址 203.0.113.1 存取 TCP 連接埠 22 (SSH);另一個規則允許所有人存取 TCP 連接埠 22,則所有人皆能存取 TCP 連接埠 22

連線追蹤

您的安全群組使用連線追蹤來追蹤流入和流出執行個體流量的資訊。規則會根據流量的連線狀態套用,以判斷該允許或拒絕該流量。此方法可讓安全性群組具有狀態。這表示傳入流量的回應可從執行個體傳出,與對外安全群組規則無關,反之亦然。例如,若您在家中電腦對您的執行個體啟動一個 ICMP ping 命令,且您的對內安全群組規則允許 ICMP 流量,便會追蹤連線的資訊 (包括連接埠資訊)。來自執行個體對 ping 命令的回應流量不會做為新的請求追蹤,而是做為已建立的連線,並且將允許流出執行個體,即使您的對外安全群組規則限制對外 ICMP 流量也一樣。

並非所有的流量流程都會追蹤。若安全群組規則許可所有流量的 TCP 或 UDP 流程 (0.0.0.0/0),且另一個方向也有對應的規則,允許所有連接埠 (0 到 65535) 的所有回應流量 (0.0.0.0/0),則流量的流程便不會追蹤。回應流量因此便會基於許可回應流量的對內或對外規則允許流動,而非追蹤資訊。

在下列範例中,安全群組針對 TCP 和 ICMP 流量具有特定的對內規則,以及允許所有對外流量的對外規則。

傳入規則
通訊協定類型 連接埠號碼 來源 IP
TCP 22 (SSH) 203.0.113.1/32
TCP 80 (HTTP) 0.0.0.0/0
ICMP 全部 0.0.0.0/0
傳出規則
通訊協定類型 連接埠號碼 目標 IP
全部 全部 0.0.0.0/0

位於連接埠 22 (SSH) 上流入和流出執行個體的 TCP 流量會受到追蹤,因為對內規則僅允許來自 203.0.113.1/32 的流量,而非所有 IP 地址 (0.0.0.0/0)。位於連接埠 80 (HTTP) 上流入和流出執行個體的 TCP 流量則不會受到追蹤,因為對內和對外規則都允許所有流量 (0.0.0.0/0)。ICMP 流量一律會受到追蹤,與規則無關。若您從安全群組移除對外規則,則所有流入和流出執行個體的流量都會受到追蹤,包括位於連接埠 80 (HTTP) 上的流量。

若啟用未受追蹤之流量流程的規則遭到移除或修改,則該流程會立即中斷。例如,如果您有一個開啟的 (0.0.0.0/0) 輸出規則,並移除允許所有 (0.0.0.0/0) 輸入 SSH (TCP 連接埠 22) 流量至執行個體的規則 (或進行修改以不再允許連線),則您現有的 SSH 連線會立即中斷與執行個體的連線。該連線之前未被追蹤,因此該變更會中斷連線。另一方面,如果您的輸入規則範圍較窄,最初允許 SSH 連線 (表示連線已被追蹤),但將變更規則為不再允許來自目前 SSH 用戶端地址的新連線,則現有的連線將不會因為規則變更而中斷。

針對 TCP、UDP 或 ICMP 之外的通訊協定,只會追蹤 IP 地址和通訊協定號碼。若您的執行個體傳送流量到另一個主機 (主機 B),且主機 B 也在原始請求或回應的 600 秒內,於另一個個別請求中對您的執行個體開始相同類型的流量,您的執行個體便會接受它,而與對內安全群組規則無關。您的執行個體會接受它,因為會將該請求視為回應流量。

若要確保流量會在您移除安全群組規則時立即中斷,或是確保所有對內流量都受到防火牆規則的限制,您可以為您的子網路使用網路 ACL。網路 ACL 為無狀態,因此不會自動允許回應流量。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的網路 ACL

預設安全群組

您的 AWS 帳戶針對每個「區域」中的預設 VPC 都具有一個預設安全群組。若您並未在啟動執行個體時指定安全群組,則執行個體會自動與 VPC 的預設安全群組相關聯。

預設安全群組名為 default,具有 AWS 指派的 ID。以下為每個預設安全群組規則的預設規則:

  • (選用) 允許來自與預設安全群組相關聯之其他執行個體的所有傳入流量。安全性群組會在其輸入規則中將本身指定為來源安全性群組。

  • 允許所有來自執行個體的對外流量。

您可以新增或移除任何預設安全群組的傳入及傳出規則。

您無法刪除預設安全群組。若您嘗試刪除預設安全群組,便會看見下列錯誤:Client.CannotDelete: the specified group: "sg-51530134" name: "default" cannot be deleted by a user

自訂安全群組

若您不希望執行個體使用預設安全群組,您可以建立您自己的安全群組,並在啟動執行個體時指定它們。您可以建立多個安全群組,反映您執行個體擔任的不同角色。例如:Web 伺服器或資料庫伺服器。

當您建立安全群組時,您必須提供名稱和描述。安全群組的名稱和描述長度最高可達 255 個字元,並且限制使用下列字元:

a-z、A-Z、0-9、空格鍵,以及 ._-:/()#,@[]+=&;{}!$*

安全群組名稱的開頭不能是 sg-。安全群組名稱對於 VPC 必須是唯一的。

以下是您建立之安全群組的預設規則:

  • 不允許對內流量

  • 允許所有對外流量

在您建立安全群組之後,您可以變更其對內規則,反映您希望觸達相關聯執行個體的對內流量類型。您也可以變更其傳出規則。

如需您可以新增至安全群組之規則的詳細資訊,請參閱安全群組規則參考