一、什麼是ACL
通路控制清單ACL(Access Control List)是一種基于封包過濾的通路控制技術,它可以根據設定的條件對接口上的資料包進行過濾,允許其通過或丢棄。這些條件可以是封包的源位址、目的位址、端口号等。
通路控制清單被廣泛地應用于防火牆、路由器和三層交換機,借助于通路控制清單,可以有效地控制使用者對網絡的通路,進而最大程度地保障網絡安全。
借助ACL,可以快捷而規範的落地如下通路控制功能:
- 提供安全通路:使用ACL可以指定使用者通路特定的伺服器、網絡與服務,進而避免随意通路的情況,降低甚至消除資源被竊取,資訊被洩露的風險。
- 防止網絡攻擊:使用ACL可以封堵高危端口、IP、特定流量,阻斷惡意攻擊。
- 提高網絡帶寬使用率:使用ACL實作對網絡流量的精确識别和控制,限制部分網絡流量進而保障主要業務的品質和網絡性能。
二、ACL的組成、分類以及典型應用場景
2.1 ACL的組成
(1)ACL辨別:使用數字或者名稱來辨別ACL
使用數字辨別ACL:不同的類型的ACL使用不同的數字進行辨別。
使用名稱辨別ACL:可以使用字元來辨別ACL,就像用域名代替IP位址一樣,更加友善記憶。
(2)規則:即描述比對條件的判斷語句
規則編号:用于辨別ACL規則,所有規則均按照規則編号從小到大進行排序。
動作:包括permit/deny兩種動作,表示裝置對所比對的資料包接受或者丢棄。
(3)比對項:包括生效時間段、IP協定(ICMP、TCP、UDP等)、源/目的位址以及相應的端口号(21、23、80等)。
2.2 ACL的分類
基本ACL:基本ACL規則隻包含源IP位址,對裝置的CPU消耗較少,可用于簡單的部署,但是使用場景有限,不能提供強大的安全保障。
進階ACL:相較于基本ACL,進階ACL提供更高的擴充性,可以對流量進行更精細的比對。通過配置進階ACL,可以阻止特定主機或者整個網段的源或者目标。除此之外,還可以使用協定資訊(IP、ICMP、TCP、UDP)去過濾相應的流量。
二層ACL:使用二層ACL,可以根據源MAC位址、目的MAC位址、802.1p優先級、二層協定類型等二層資訊對流量進行管控。
使用者ACL:使用者ACL在進階ACL的基礎上增加了使用者組的配置項,可以實作對不同使用者組的流量管控。
不同類型的ACL的具體應用場景如下所示:
2.3 典型應用場景
2.3.1在路由中使用ACL
通過NAT的端口映射可使得外網通路内部網絡。考慮到内部的網絡安全,不可能允許所有的外部使用者通路内部網絡,這時可以設定ACL規則并應用在企業路由器上,使得特定的外網使用者可以通路内部網絡。
如上圖所示,當公網主機想建立與内網主機的通信時,其發向内部網絡主機的流量經過NAT裝置時,裝置利用ACL對流量進行過濾,阻斷了PC4對PC2的通路,同時允許PC3對PC1的通路。
2.3.2在防火牆中使用ACL
防火牆用在内外網絡邊緣處,防止外部網絡對内部網絡的入侵,也可以用來保護網絡内部大型伺服器和重要的資源(如資料)。由于ACL直接在裝置的轉發硬體中配置,在防火牆中配置ACL在保護網絡安全的同時不會影響伺服器的性能。
如上圖所示,在防火牆上配置ACL隻允許外部特定主機PC A通路内部網絡中的資料中心,并禁止其他外部主機的通路。
2.3.3在交換機上使用ACL限制使用者互訪
利用ACL可以實作不同網段使用者之間通路權限的限制,進而避免使用者之間随意通路形成安全隐患。
如上圖所示,某公司為财務部和市場部規劃了兩個網段的IP位址。為了避免兩個部門之間互相通路造成公司機密的洩露,可以在兩個部門連接配接三層交換的接口的入方向上應用綁定了ACL的流政策,進而禁止兩個部門的互訪。
三、ACL的比對機制
裝置将封包與ACL規則進行比對時,遵循“一旦命中即停止比對”的機制。
ACL比對流程圖描述:
(1)首先系統會查找裝置上是否配置了ACL。
(2)如果ACL不存在,則傳回ACL比對結果為:不比對。
(3)如果ACL存在,則查找裝置是否配置了ACL規則。
(4)如果規則不存在,則傳回ACL比對結果為:不比對。
(5)如果規則存在,則系統會從ACL中編号最小的規則開始查找。
(6)如果比對上了permit規則,則停止查找規則,并傳回ACL比對結果為:比對(允許)。
(7)如果比對上了deny規則,則停止查找規則,并傳回ACL比對結果為:比對(拒絕)。
(8)如果未比對上規則,則繼續查找下一條規則,以此循環。如果一直查到最後一條規則,封包仍未比對上,則傳回ACL比對結果為:不比對。
從整個ACL比對流程可以看出,封包與ACL規則比對後,會産生兩種比對結果:“比對”和“不比對”。
不論比對(命中規則)的動作是“permit”還是“deny”,都稱為“比對”,而不是隻是比對上permit規則才算“比對”。不比對(未命中規則)指不存在ACL,或ACL中符合規則。
四、配置示例 - 使用進階ACL限制不同網段的使用者互訪
4.1 組網需求
如下圖所示,通過Switch實作各部門之間的互連。為友善管理網絡,管理者為公司的研發部和市場部規劃了兩個網段的IP位址。同時為了隔離廣播域,又将兩個部門劃分在不同VLAN之中。現要求Switch能夠限制兩個網段之間互訪,防止公司機密洩露。
4.2 配置思路
(1)配置進階ACL和基于ACL的流分類,使裝置可以對研發部與市場部互訪的封包進行過濾。
(2)配置流行為,拒絕比對上ACL的封包通過。
(3)配置并應用流政策,使ACL和流行為生效。
4.3 操作步驟
(1)配置接口所屬的VLAN以及接口的IP位址
# 建立VLAN10和VLAN20
<HUAWEI> system-view
[HUAWEI] sysname Switch
[Switch] vlan batch 10 20
# 配置Switch的接口GE0/0/1和GE0/0/2為trunk類型接口,并分别加入VLAN10和VLAN20
[Switch] interface gigabitethernet 0/0/1
[Switch-GigabitEthernet0/0/1] port link-type trunk
[Switch-GigabitEthernet0/0/1] port trunk allow-pass vlan 10
[Switch-GigabitEthernet0/0/1] quit
[Switch] interface gigabitethernet 0/0/2
[Switch-GigabitEthernet0/0/2] port link-type trunk
[Switch-GigabitEthernet0/0/2] port trunk allow-pass vlan 20
[Switch-GigabitEthernet0/0/2] quit
# 建立VLANIF10和VLANIF20,并配置各VLANIF接口的IP位址
[Switch] interface vlanif 10
[Switch-Vlanif10] ip address 10.1.1.1 24
[Switch-Vlanif10] quit
[Switch] interface vlanif 20
[Switch-Vlanif20] ip address 10.1.2.1 24
[Switch-Vlanif20] quit
(2)配置ACL
# 建立進階ACL 3001并配置ACL規則,拒絕研發部通路市場部的封包通過
[Switch] acl 3001
[Switch-acl-adv-3001] rule deny ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
[Switch-acl-adv-3001] quit
# 建立進階ACL 3002并配置ACL規則,拒絕市場部通路研發部的封包通過
[Switch] acl 3002
[Switch-acl-adv-3002] rule deny ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[Switch-acl-adv-3002] quit
(3)配置基于進階ACL的流分類
# 配置流分類tc1,對比對ACL 3001和ACL 3002的封包進行分類
[Switch] traffic classifier tc1
[Switch-classifier-tc1] if-match acl 3001
[Switch-classifier-tc1] if-match acl 3002
[Switch-classifier-tc1] quit
(4)配置流行為
# 配置流行為tb1,動作為拒絕封包通過
[Switch] traffic behavior tb1
[Switch-behavior-tb1] deny
[Switch-behavior-tb1] quit
(5)配置流政策
# 定義流政策,将流分類與流行為關聯
[Switch] traffic policy tp1
[Switch-trafficpolicy-tp1] classifier tc1 behavior tb1
[Switch-trafficpolicy-tp1] quit
(6)在接口下應用流政策
# 由于研發部和市場部互訪的流量分别從接口GE0/0/1和GE0/0/2進入Switch,是以在接口GE0/0/1和GE0/0/2的入方向應用流政策
[Switch] interface gigabitethernet 0/0/1
[Switch-GigabitEthernet0/0/1] traffic-policy tp1 inbound
[Switch-GigabitEthernet0/0/1] quit
[Switch] interface gigabitethernet 0/0/2
[Switch-GigabitEthernet0/0/2] traffic-policy tp1 inbound
[Switch-GigabitEthernet0/0/2] quit
(7)驗證配置結果
# 檢視ACL規則的配置資訊
[Switch] display acl 3001
Advanced ACL 3001, 1 rule
Acl's step is 5
rule 5 deny ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
[Switch] display acl 3002
Advanced ACL 3002, 1 rule
Acl's step is 5
rule 5 deny ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
# 檢視流分類的配置資訊
[Switch] display traffic classifier user-defined
User Defined Classifier Information:
Classifier: tc1
Operator: OR
Rule(s) : if-match acl 3001
if-match acl 3002
Total classifier number is 1
# 檢視流政策的配置資訊
[Switch] display traffic policy user-defined tp1
User Defined Traffic Policy Information:
Policy: tp1
Classifier: tc1
Operator: OR
Behavior: tb1
Deny