什么是ACL?為什么使用ACL?你會用嗎?
前言
訪問控制列表ACL(Access Control List)是由一條或多條規則組成的集合。所謂規則,是指描述報文匹配條件的判斷語句,這些條件可以是報文的源地址、目的地址、端口號等。
ACL本質上是一種報文過濾器,規則是過濾器的濾芯。設備基于這些規則進行報文匹配,可以過濾出特定的報文,并根據應用ACL的業務模塊的處理策略來允許或阻止該報文通過。
01
為什么使用ACL?
ACL作為一個過濾器,設備通過應用ACL來阻止和允許特定流量的流入和流出,如果沒有它,任何流量都會自由流入和流出,使得網絡容易受到攻擊。
如下圖所示,為保證財務數據安全,企業在路由設備上應用ACL可以阻止內網內部研發部門主機對財務服務器的訪問,同時允許總裁辦公室訪問財務服務器。為了保護企業內網的安全,在路由設備上應用ACL可以封堵網絡病毒常用的端口,防止Internet上的惡意流量入侵。

ACL可以做什么?
借助ACL,可以實現以下功能:
- 提供安全訪問:企業重要服務器資源被隨意訪問,企業機密信息容易泄露,造成安全隱患。使用ACL可以指定用戶訪問特定的服務器、網絡與服務,從而避免隨意訪問的情況。
- 防止網絡攻擊:Internet病毒肆意侵略企業內網,內網環境的安全性堪憂。使用ACL可以封堵高危端口,從而達成為外網流量的阻塞。
- 提高網絡帶寬利用率:網絡帶寬被各類業務隨意擠占,服務質量要求最高的語音、視頻業務的帶寬得不到保障,造成用戶體驗差。使用ACL實現對網絡流量的精確識別和控制,限制部分網絡流量從而保障主要業務的質量。
02
ACL的組成
ACL的每一條規則都會允許或者阻止特定的流量,在定義一條合理的ACL規則之前,需要了解其基本組成。
- ACL標識:使用數字或者名稱來標識ACL。
- 使用數字標識ACL:不同的類型的ACL使用不同的數字進行標識。關于每類ACL編號的詳細介紹,請參見ACL的分類。
- 使用名稱標識ACL:可以使用字符來標識ACL,就像用域名代替IP地址一樣,更加方便記憶。
- 規則:即描述匹配條件的判斷語句。
- 規則編號:用于標識ACL規則,所有規則均按照規則編號從小到大進行排序。
- 動作:包括permit/deny兩種動作,表示設備對所匹配的數據包接受或者丟棄。
- 匹配項:ACL定義了極其豐富的匹配項。包括生效時間段、IP協議(ICMP、TCP、UDP等)、源/目的地址以及相應的端口號(21、23、80等)。關于每種匹配項的詳細介紹,請參見ACL的常用匹配項。
03
ACL的分類
隨著ACL技術的發展,其種類越來越豐富,根據其不同的規則和使用場景,常用的可分為以下幾類:
3.1 基本ACL
基本ACL規則只包含源IP地址,對設備的CPU消耗較少,可用于簡單的部署,但是使用場景有限,不能提供強大的安全保障。
3.2 高級ACL
相較于基本ACL,高級ACL提供更高的擴展性,可以對流量進行更精細的匹配。通過配置高級ACL,可以阻止特定主機或者整個網段的源或者目標。除此之外,還可以使用協議信息(IP、ICMP、TCP、UDP)去過濾相應的流量。
3.3 二層ACL
在公司的內部網絡中,想對特定的終端進行訪問權限控制,這時就需要二層ACL。使用二層ACL,可以根據源MAC地址、目的MAC地址、802.1p優先級、二層協議類型等二層信息對流量進行管控。
3.4 用戶ACL
由于企業內部同部門的工作人員的終端不在同一個網段難以管理,需要將其納入一個用戶組,并對其用戶組進行訪問權限管理,這時候就需要用戶ACL。用戶ACL在高級ACL的基礎上增加了用戶組的配置項,可以實現對不同用戶組的流量管控。
不同類型的ACL的具體組成如下表所示:

表1-1 ACL的分類
04
如何使用ACL?
4.1 使用步驟
ACL的使用分為兩個步驟:
- 設置相應的ACL規則。
- 為ACL設置相關規則的時候,需要了解入口流量與出口流量,如下圖所示:入口流量指的是進入設備(以路由器為例)接口的流量(無論來源是外部Internet還是內部網絡),同理,出口流量指的是從設備接口流出的流量。

入口流量與出口流量
當外部Internet訪問內部網絡時,通過路由器接口2的入口流量,其源IP地址為外部的公網IP;而當內部網絡需要訪問外部網絡時,通過路由器的接口1的入口流量,其源IP地址則為內網的IP。
- 將ACL應用在相應的設備接口的特定方向(in/out)上。
- 規則設置完成后,需要將ACL應用在設備的接口上才能正常工作。因為所有的路由和轉發決策都是由設備的硬件做出的,所以ACL語句可以更快地執行。
4.2 匹配機制
設備使用ACL的匹配機制如下圖所示。

ACL的匹配機制
ACL規則的匹配遵循”一旦命中即停止匹配”的機制。當ACL處理數據包時,一旦數據包與某條ACL規則匹配,就會停止匹配,設備根據該條匹配的語句內容決定允許或者拒絕該數據包。如果數據包內容與ACL語句不匹配,那么將依次使用ACL列表中的下一條語句去匹配數據包直到列表的末尾。一般在ACL的列表末尾會有一條隱式的拒絕所有的語句,所以數據包與所有的規則都不匹配的情況下會被直接拒絕。此時設備不會將此數據包流入或流出接口,而是直接將其丟棄。
05
ACL的應用場景
5.1 在NAT中使用ACL
通過NAT的端口映射可使得外網訪問內部網絡。考慮到內部的網絡安全,不可能允許所有的外部用戶訪問內部網絡,這時可以設置ACL規則并應用在企業路由器上,使得特定的外網用戶可以訪問內部網絡。

在NAT中使用ACL
如上圖所示,當公網主機想建立與內網主機的通信時,其發向內部網絡主機的流量經過NAT設備時,設備利用ACL對流量進行過濾,阻斷了PC4對PC2的訪問,同時允許PC3對PC1的訪問。
5.2 在防火墻中使用ACL
防火墻用在內外網絡邊緣處,防止外部網絡對內部網絡的入侵,也可以用來保護網絡內部大型服務器和重要的資源(如數據)。由于ACL直接在設備的轉發硬件中配置,在防火墻中配置ACL在保護網絡安全的同時不會影響服務器的性能。

在防火墻中使用ACL
如上圖所示,在防火墻上配置ACL只允許外部特定主機PC A訪問內部網絡中的數據中心,并禁止其他外部主機的訪問。
5.3 在QoS中使用ACL限制用戶互訪
ACL應用在QoS的流策略中,可以實現不同網段用戶之間訪問權限的限制,從而避免用戶之間隨意訪問形成安全隱患。

使用ACL限制不同網段用戶的互訪
如上圖所示,某公司為財務部和市場部規劃了兩個網段的IP地址。為了避免兩個部門之間相互訪問造成公司機密的泄露,可以在兩個部門連接Router的接口的入方向上應用綁定了ACL的流策略,從而禁止兩個部門的互訪。
來源:網絡民工