網絡ACL
網絡ACL是一個子網級別的可選安全防護層,您可以在網絡ACL中設置入方向和出方向規則,并將網絡ACL綁定至子網,可以精準控制出入子網的流量。
網絡ACL與安全組的防護范圍不同,安全組對云主機、云容器、云數據庫等實例進行防護,網絡ACL對整個子網進行防護。安全組是必選的安全防護層,當您還想增加額外的安全防護層時,就可以啟用網絡ACL。兩者結合起來,可以實現更精細、更復雜的安全訪問控制。
網絡ACL中包括入方向規則和出方向規則,您可以針對每條規則指定協議、來源端口和地址、目的端口和地址。
以下圖為例,
如下圖所示。
圖 安全組與網絡ACL在區域A內,某客戶的虛擬私有云VPC-X有兩個子網,子網Subnet-X01關聯網絡ACL Fw-A,Subnet-X01內部署的實例面向互聯網提供Web服務。子網Subnet-X02關聯網絡ACL Fw-B,基于對等連接連通Subnet-X02和Subnet-Y01的網絡,通過Subnet-Y01內的實例遠程登錄Subnet-X02內的實例。
Fw-A的規則說明:
入方向自定義規則,允許外部任意IP地址,通過TCP (HTTP)協議訪問Subnet-X01內實例的80端口。如果流量未匹配上自定義規則,則匹配默認規則,無法流入子網。
網絡ACL是有狀態的,允許入站請求的響應流量出站,不受規則限制,因此Subnet-X01內實例的響應流量可流出子網。非響應流量的其他流量則匹配默認規則,無法流出子網。
Fw-B的規則說明:
入方向自定義規則,允許來自Subnet-Y01的流量,通過TCP (SSH)協議訪問子網Subnet-X02內實例的22端口。
出方向自定義規則,放通ICMP協議全部端口,當在Subnet-X02內實例ping測試網絡連通性時,允許去往Subnet-Y01的流量流出子網。
說明圖中提供的示例僅為您展示了網絡ACL對出入子網的流量控制。在實際業務中,除了網絡ACL,實例上綁定的安全組也會影響出入實例的流量。
網絡ACL規則![]()
網絡ACL中包括入方向規則和出方向規則,用來控制VPC子網入方向和出方向的網絡流量。
- 入方向規則:控制外部請求訪問子網內的實例,即流量流入子網。
- 出方向規則:控制子網內實例訪問外部的請求,即流量流出子網。
網絡ACL規則由協議、源端口/目的端口、源地址/目的地址等組成,關鍵信息說明如下:
- 生效順序:網絡ACL規則按照生效順序依次排列,序號越小,排序越靠前,表示流量優先匹配該規則。默認網絡ACL規則的序號為*,排在末尾,表示流量最后匹配該規則。
- 狀態:網絡ACL規則有“啟用”和“停用”狀態。啟用時,網絡ACL規則生效,停用時,網絡ACL規則不生效。
- 類型:支持設置IPv4和IPv6協議的規則。
- 策略:支持允許或拒絕。當流量的協議、源端口/目的端口、源地址/目的地址成功匹配某個網絡ACL規則后,會對流量執行規則對應的策略,允許或拒絕流量。
- 協議:匹配流量的網絡協議類型,支持TCP、UDP、ICMP協議。
- 源地址/目的地址:匹配流量的源地址或者目的地址。您可以使用IP地址和IP地址組作為源地址或者目的地址。
- 源端口范圍/目的端口范圍:匹配流量的源端口或者目的端口,取值范圍為1~65535。
網絡ACL及規則的工作原理
網絡ACL創建完成后,需要將網絡ACL關聯至目標子網,網絡ACL規則才能控制出入該子網的流量。網絡ACL可以同時關聯多個子網,但一個子網只能關聯一個網絡ACL。
網絡ACL是有狀態的。如果您從實例發送一個出站請求,且該網絡ACL的出方向規則是放通的話,那么無論其入方向規則如何,都將允許該出站請求的響應流量流入。同理,如果該網絡ACL的入方向規則是放通的,那無論出方向規則如何,都將允許該入站請求的響應流量可以流出。
網絡ACL使用連接跟蹤來標識進出實例的流量信息,入方向和出方向網絡ACL規則配置變更,對原有流量不會立即生效。當您在網絡ACL內增加、刪除、更新規則,或者在網絡ACL內添加、移出子網時,由入方向/出方向流量建立的連接,已建立的長連接不會斷開,依舊遵循原有網絡ACL規則。入方向/出方向流量新建立的連接,將會匹配新的網絡ACL出方向規則。
注意對于已建立的長連接,流量斷開后,不會立即建立新的連接,需要超過連接跟蹤的老化時間后,才會新建立連接并匹配新的規則。比如,對于已建立的ICMP協議長連接,當流量中斷后,需要超過老化時間30s后,將會新建立連接并匹配新的規則,詳細說明如下:
不同協議的連接跟蹤老化時間不同,比如已建立連接狀態的TCP協議連接老化時間是600s,ICMP協議老化時間是30s。對于除TCP和ICMP的其他協議,如果兩個方向都收到了報文,連接老化時間是180s,如果只是單方向收到了報文,另一個方向沒有收到報文,則連接老化時間是30s。
TCP協議處于不同狀態下連接老化時間也不相同,比如TCP連接處于ESTABLISHED(連接已建立)狀態時,老化時間是600s,處于FIN-WAIT(連接即將關閉)狀態時,老化時間是30s。
在網絡ACL中,存在如下表所示的默認規則。當網絡ACL中沒有其他允許流量出入的自定義規則時,則匹配默認規則,拒絕任何流量流入或流出子網。在您將網絡ACL關聯至目標子網時,請確保已添加自定義規則放通業務流量,或者子網內無實際業務,避免默認規則造成業務流量中斷。
| 方向 | 生效順序 | 策略 | 協議 | 源地址 | 源端口范圍 | 目的地址 | 目的端口范圍 |
|---|---|---|---|---|---|---|---|
| 入方向 | * | 拒絕 | 全部 | 0.0.0.0/0 | 全部 | 0.0.0.0/0 | 全部 |
| 出方向 | * | 拒絕 | 全部 | 0.0.0.0/0 | 全部 | 0.0.0.0/0 | 全部 |
網絡ACL規則不會匹配篩選下表中的流量,即對應的流量被允許流入或者流出子網,不受網絡ACL默認規則以及自定義規則限制。
| 方向 | 規則說明 |
|---|---|
| 入方向 | 放通當前子網內的流量,即允許同一個子網內實例互通。 |
| 入方向 | 放通目的地址為255.255.255.255/32的廣播流量。 |
| 入方向 | 放通目的地址為224.0.0.0/24的組播流量。 |
| 出方向 | 放通當前子網內的流量,即允許同一個子網內實例互通。 |
| 出方向 | 放通目的地址為255.255.255.255/32的廣播流量。 |
| 出方向 | 放通目的地址為224.0.0.0/24的組播流量。 |
| 出方向 | 放通基于TCP協議,目的地址為169.254.169.254/32 ,目的端口為80的云主機元數據(metadata)流量 |
| 出方向 | 放通目的地址為100.125.0.0/16的流量,該網段是云上公共服務預留地址,比如DNS服務器地址、NTP服務器地址等。 |
流量匹配網絡ACL規則的順序
一個子網只能綁定一個網絡ACL,當網絡ACL存在多條規則時,流量按照規則的生效順序進行匹配。序號越小,排序越靠前,越先執行該規則。默認網絡ACL規則的序號為*,排在末尾,流量最后匹配該規則。
以入方向的流量為例,子網的網絡流量將按照以下原則匹配網絡ACL規則,入方向和出方向的流量匹配順序相同。
當流量匹配上自定義規則,則根據規則策略決定流量走向。
- 當策略為拒絕時,則拒絕該流量流入子網。
- 當策略為允許時,則允許該流量流入子網。
當流量未匹配上任何自定義規則,則執行默認規則,拒絕流量流入子網。
網絡ACL的使用限制
- 在一個資源節點內,單個用戶默認最多可以創建200個網絡ACL,超過此數量后,有可能造成您所配置的網絡ACL失效。
- 在一個資源節點內,單個用戶建議創建最多200條ACL規則,超過此數量后,有可能造成您所配置的ACL規則失效。
- 建議一個網絡ACL單方向擁有的規則數量不要超過20條,否則會引起網絡ACL性能下降。
- 在一個網絡ACL的入方向中,最多可以有124條規則關聯IP地址組,出方向同理。
- 在一個網絡ACL中,對于入方向規則來說,源地址是IP地址組的規則數量+目的地址是IP地址組的規則數量+源端口是不連續端口號的規則數量+目的端口是不連續端口號的規則數量 ≤ 120條,否則超過數量的網絡ACL規則將不生效。當同時存在IPv4和IPv6類型的網絡ACL規則時,兩種類型的網絡ACL規則單獨計算,即IPv4規則和IPv6規則可以各有120條。
對于網絡ACL出方向規則來說,源地址、目的地址、源端口和目的端口存在一樣的限制。
以網絡ACLFw-A的入方向IPv4規則為例,下表中提供了部分符合限制條件的規則供您參考。其中,當一條網絡ACL規則同時符合多個限制時,比如規則A02即使用了不連續端口作為源端口,又使用了IP地址組作為源地址,此時只占用一條配額。
入方向網絡ACL規則說明表
| 規則編號 | 優先級 | 類型 | 策略 | 協議 | 源地址 | 源端口范圍 | 目的地址 | 目的端口范圍 |
|---|---|---|---|---|---|---|---|---|
| 規則A01 | 1 | IPv4 | 拒絕 | TCP | 0.0.0.0/0 | 22,25,27 | 0.0.0.0/0 | 1-65535 |
| 規則A02 | 2 | IPv4 | 允許 | TCP | IP地址組:ipGroup-A | 22-24,25 | 0.0.0.0/0 | 1-65535 |
| 規則A03 | 3 | IPv4 | 允許 | 全部 | 0.0.0.0/0 | 全部 | IP地址組:ipGroup-B | 全部 |
| 規則A04 | 4 | IPv4 | 允許 | UDP | 0.0.0.0/0 | 1-65535 | 0.0.0.0/0 | 80-83,87 |
當您的組網中,ELB實例的監聽器開啟“獲取客戶端IP”功能時,來自ELB的流量將不受網絡ACL和安全組規則的限制。比如規則已明確拒絕來自ELB實例的流量進入后端云主機,此時該規則無法攔截來自ELB的流量,流量依然會抵達后端云主機。