安全群組連線追蹤 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安全群組連線追蹤

您的安全群組使用連線追蹤來追蹤流入和流出執行個體流量的資訊。規則會根據流量的連線狀態套用,以判斷該允許或拒絕該流量。使用這種方法,安全群組是可設定狀態的。這表示傳入流量的回應可從執行個體傳出,與對外安全群組規則無關,反之亦然。

舉例來說,假設您從家用電腦中對執行個體啟動一個命令 (例如 netcat 或類似的命令),並且您的傳入安全群組規則允許 ICMP 流量。會追蹤連線的相關資訊 (包括連接埠資訊)。來自執行個體對命令的回應流量不會作為新的請求追蹤,而是作為已建立的連線,並且將允許流出執行個體,即使您的傳出安全群組規則限制傳出 ICMP 流量。

針對 TCP、UDP 或 ICMP 之外的通訊協定,只會追蹤 IP 地址和通訊協定號碼。若您的執行個體傳送流量到另一個主機,且該主機也在 600 秒內將相同類型的流量傳送至您的執行個體,無論傳入安全群組規則為何,執行個體的安全群組都會接受該流量。安全群組會接受該流量,因為將其視為原始流量的回應流量。

變更安全群組規則時,其跟蹤的連線不會立即中斷。安全群組將繼續允許封包,直到現有連線逾時為止。若要確保無論追蹤狀態為何,流量皆會立即中斷,或所有流量都受到防火牆規則的限制,您可以為子網使用網路 ACL。網路 ACL 為無狀態,因此不會自動允許回應流量。新增阻止任一方向流量的網路 ACL 會破壞現有連線。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的網路 ACL

注意

安全組對進出 Route 53 解析器的 DNS 流量沒有影響,有時也稱為「VPC+2 IP 地址」(請參閱什麼是 Amazon Route 53 Resolver? 在 Amazon Route 53 開發人員指南中)或「AmazonProvidedDNS」(請參閱 Amazon Virtual Private Cloud 用戶指南中的使用 DHCP 選項集)。如果您想要透過 Route 53 Resolver 篩選 DNS 請求,則可以啟用 Route 53 Resolver DNS Firewall (請參閱《Amazon Route 53 開發人員指南》中的 Route 53 Resolver DNS Firewall)。

未追蹤的連線

並非所有的流量流程都會追蹤。如果安全群組規則允許所有流量使用 TCP 或 UDP 流程 (0.0.0.0/0 或:: /0),並且在另一個方向有對應規則允許所有回應流量 (0.0.0.0/0 或:: /0) 任何連接埠 (0-65535),則不會追蹤該流量流程,除非它屬於自動追蹤連線的一部分。接著會依據允許回應流量的傳入或傳出規則允許未追蹤流的回應流量,而非依據追蹤資訊。

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

自動追蹤連線

即使安全群組組態未以其他方式要求追蹤,也會自動追蹤透過以下方式所建立的連線。必須追蹤這些連線,以確保對稱路由,因為可能存在多個有效的回覆路徑。

  • 輸出限定網際網路閘道

  • 閘道負載平衡器

  • Global Accelerator 加速器

  • NAT 閘道

  • Network Firewall 防火墻端點

  • Network Load Balancer

  • AWS PrivateLink (介面 VPC 端端點)

  • 傳輸閘道連接

  • AWS Lambda (超平面彈性網路介面)

限流

Amazon EC2 會定義每個執行個體可追蹤的連線數目上限。達到最大值之後,任何傳送或接收的封包都會捨棄,因為無法建立新的連線。發生這種情況時,傳送及接收封包的應用程式無法正確通訊。使用 conntrack_allowance_available 網路效能指標來判斷該執行個體類型仍可使用的追蹤連線數目。

若要判斷是否因為執行個體的網路流量超過可追蹤的連線數目上限而捨棄封包,請使用 conntrack_allowance_exceeded 網路效能指標。如需更多詳細資訊,請參閱 監控 EC2 執行個體的網路效能

使用 Elastic Load Balancing 時,如果超過每個執行個體可追蹤的連線數目上限,建議您使用負載平衡器調整執行個體數目,或使用負載平衡器調整執行個體大小。

閒置連線追蹤逾時

安全群組會追蹤每個建立的連線,以確保傳回封包如預期交付。每個執行個體可追蹤的連線數目上限。處於閒置狀態的連線可能會導致連線追蹤耗盡,並造成不追蹤連線及捨棄封包。您可以在彈性網路介面上設定閒置連線追蹤的逾時。

注意

此功能僅適用於在 AWS Nitro 系統上建置的執行個體

可設定的逾時有三種:

  • 已建立的 TCP 逾時:處於已建立狀態的閒置 TCP 連線逾時 (以秒為單位)。最小值:60 秒。最大值:432000 秒 (5 天)。預設:432000 秒。建議使用:432000 秒以下。

  • UDP 逾時:只出現單一方向或單一請求回應交易流量的閒置 UDP 流量逾時 (以秒為單位)。最小值:30 秒。最大值:60 秒。預設:30 秒。

  • UDP 串流逾時:分類為出現多個請求回應交易串流的閒置 UDP 流量逾時 (以秒為單位)。最小值:60 秒。最大值:180 秒 (3 分鐘) 預設值:180 秒。

您可修改下列任何情況的預設逾時:

  • 如果您使用 Amazon EC2 網路效能指標監控追蹤的連線conntrack_allowance_exceededconntrack_allowance_available 可用指標可讓您監控丟棄的封包和追蹤連線使用率,以透過縱向擴展或橫向擴展動作來主動管理 EC2 執行個體容量,以協助在丟棄封包之前滿足網路連線需求。如果您在 EC2 執行個體上觀察到 conntrack_allowance_exceeded,將已建立的 TCP 逾時設定得較低可能對您有所幫助,可解決因不正確的用戶端或網路中間盒造成的過時 TCP/UDP 工作階段。

  • 一般而言,負載平衡器或防火牆已建立的 TCP 閒置逾時範圍為 60 到 90 分鐘。如果您執行的工作負載預期會處理來自網路防火牆等設備的大量連線 (10 萬以上),建議您在 EC2 網路介面上設定相似的逾時。

  • 如果您執行的工作負載具有大量連線 (例如 DNS、SIP、SNMP、Syslog、Radius 和其他主要使用 UDP 來處理請求的服務),則將「UDP 串流」逾時設為 60 秒,可為現有容量提供更高的規模/效能,並防止發生灰色故障。

  • 系統會追蹤所有經過網路負載平衡器 (NLB) 和彈性負載平衡器 (ELB) 的 TCP/UDP 連線。TCP 流量的閒置逾時值為 350 秒,UDP 流量為 120 秒,且會隨介面層級逾時值而異。您可在網路介面層級設定逾時,讓逾時的彈性大於 ELB/NLB 的預設值。

執行下列操作時,您可以選擇設定連線追蹤逾時:

範例

在下列範例中,安全群組具備允許 TCP 和 ICMP 流量的傳入規則,以及允許所有傳出流量的對外規則。

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

對於執行個體或網路介面的直接網路連線,追蹤行為如下:

  • 會追蹤連接埠 22 (SSH) 上傳入和傳出的 TCP 流量,因為傳入規則僅允許來自 203.0.113.1/32 的流量,而非所有 IP 地址 (0.0.0.0/0)。

  • 連接埠 80 (HTTP) 上傳入和傳出的 TCP 流量則不會受到追蹤,因為傳入和傳出規則允許來自所有 IP 地址的流量。

  • ICMP 流量一律會受到追蹤。

若您移除 IPv4 流量的傳出規則,則所有傳入和傳出的 IPv4 流量都會受到追蹤,包括位於連接埠 80 (HTTP) 上的流量。如果您移除 IPv6 流量的傳出規則,IPv6 流量也會受到相同影響。