ACL協議
在H3C網絡設備(交換機、路由器、防火墻等)中,ACL(Access Control List,訪問控制列表) 是一個核心的流量過濾和控制機制。
-
核心目的:
- 流量過濾:控制哪些流量可以通過接口(入站/出站方向)。
- 安全策略:實施基本的安全策略,阻止非授權訪問(如防火墻策略的基礎)。
- 流量識別:為其他需要識別特定流量的功能(如QoS策略路由、NAT、VPN、路由過濾、策略路由)提供匹配依據。
- 用戶接入控制:結合身份認證(如802.1X、Portal),限制用戶訪問權限
-
主要類型:
- 基本ACL(Basic ACL):
- 序號為:2000~2999
- 只根據報文的源IP地址信息制定規則
- 高級ACL(Advanced ACL):
- 序號為:3000 ~ 3999
- 根據報文的源IP地址、目的IP地址、IP協議類型(TCP/UDP/ICMP/OSPF等)、源端口號、目的端口號、TCP標志位、ICMP類型/代碼、IP優先級/DSCP、分片信息的特性等三、四層信息制定規則
- 二層ACL(Layer 2 ACL / Ethernet Frame ACL):
- 序號為:4000 ~ 4999。
- 根據報文的源MAC地址、目的MAC地址、以太網幀類型(如0x0800-IPv4, 0x86DD-IPv6)、802.1p優先級、VLAN ID等二層信息制定規則
- 基本ACL(Basic ACL):
-
設置過濾規則
- 包過濾功能默認開啟
- 設置包過濾的默認過濾方式
- 系統默認的過濾方式是permit,即允許未匹配上的ACL規則的報文通過
- 可以配置包過濾的缺省動作為deny
- packet-filter default deny
-
匹配規則和動作:
- 規則(Rule):每條ACL規則包含:
- 匹配條件:根據ACL類型定義(如源IP、目的端口等)。
- 動作(Action):
permit
(允許) 或deny
(拒絕)。 - 規則ID:可手動指定或自動生成。H3C設備規則ID越小優先級越高。
- 規則匹配順序:
- 配置順序(config):按照用戶配置規則的先后順序進行匹配。這是默認的方式。
- 自動深度優先(auto / depth-first):設備自動按照規則的“深度”(條件描述的精確程度)排序,條件越具體(如指定了端口號)的規則優先級越高。需要顯式配置此模式。
- 匹配過程:數據包從上到下逐條匹配規則。一旦匹配到某條規則,則執行該規則的動作(
permit
或deny
),并停止后續規則的匹配。如果所有規則都不匹配,則執行該ACL的默認動作。
- 默認動作(Implicit Deny Any):任何ACL的末尾都隱含一條拒絕所有(deny any) 的規則。這意味著如果數據包沒有匹配到任何顯式配置的permit規則,它最終將被拒絕。這是安全性的重要保障。
- 規則(Rule):每條ACL規則包含:
-
應用方向(Application Direction):
- ACL只有被應用(apply) 到接口的特定方向上才會生效。
- 入方向(inbound):對進入該接口的數據包進行過濾。數據包到達接口后,先匹配入方向ACL,再查路由表決定轉發。
- 出方向(outbound):對離開該接口的數據包進行過濾。數據包查完路由表確定從該接口轉發出去之前,匹配出方向ACL。
- 選擇合適的應用方向至關重要,直接影響過濾效果和效率。
-
配置基本ACL
-
**第一步:**設置訪問控制列表序列號
-
acl basic acl-number
-
-
**第二步:**定義規則,允許或拒絕來自指定網絡的數據包,并定義參數
-
rule [ RULE_ID ] { deny | permit } source { SRC_IP_ADDR SRC_WILDCARD | any } [ time-range TIME_NAME ] [ logging ] [ description TEXT ]
-
-
-
配置高級ACL
-
**第一步:**設置訪問控制列表序列號
-
acl advanced acl-number
-
-
**第二步:**定義規則,其規則在基本訪問列表的基礎上增加了目的地址、協議號、端口以及操作符等信息
-
rule [ RULE_ID ] { deny | permit } PROTOCOL [ rule-specific-criteria ] [ time-range TIME_NAME ] [ logging ] [ description TEXT ]
-
-
-
配置二層ACL
-
**第一步:**設置訪問控制列表序列號
-
acl mac acl-number
-
-
**第二步:**配置規則,規則上主要為源MAC、目的MAC以及COS值等信息
-
rule [ RULE_ID ] { deny | permit } [ rule-specific-criteria ] [ time-range TIME_NAME ] [ logging ] [ description TEXT ]
-
-
-
重要注意事項:
- 規則順序:理解配置順序和自動深度優先的區別,確保規則按預期優先級匹配。
- 隱式拒絕:務必牢記ACL末尾隱含的
deny any
。如果想讓某些流量通過,必須有顯式的permit
規則匹配它。 - 應用方向:正確選擇
inbound
或outbound
是ACL生效的關鍵。 - 作用范圍:基本ACL通常建議應用在靠近目的地址的位置(避免意外阻斷合法源);高級ACL通常建議應用在靠近源地址的位置(盡早丟棄非法流量,節省帶寬和設備資源)。
- 性能影響:復雜的ACL或大量ACL規則會增加設備處理負擔,可能影響轉發性能。優化規則設計。
- 測試驗證:配置ACL后務必進行充分測試,確保其按預期允許和拒絕流量。使用
display packet-filter statistics
等命令查看匹配計數輔助調試。
實驗:
一、實驗拓撲
二、實驗需求
-
按照圖示配置IP地址
-
實現全網互通
-
在SERVER上配置開啟TELNET和FTP服務
-
配置ACL實現如下效果
(1)192.168.1.0/24 網段不允許訪問 192.168.2.0/24 網段
(2)PC1 可以訪問 SERVER 的 TELNET 服務,但不能訪問 FTP 服務
(3)PC2 可以訪問 SERVER 的 FTP 服務,但不能訪問 TELNET 服務
(4)PC3 可以訪問 SERVER 的 TELNET 服務和 FTP 服務,但 ping 不通SERVER
三、實驗步驟
-
按照圖示配置IP地址,略
-
實現全網互通,略
-
在SERVER上配置開啟TELNET和FTP服務,略
-
配置ACL
- 192.168.1.0/24 網段不允許訪問 192.168.2.0/24 網段
[R2]acl basic 2000 [R2-acl-ipv4-basic-2000]rule deny source 192.168.1.0 0.0.0.255 [R2-acl-ipv4-basic-2000]dis th # acl basic 2000rule 0 deny source 192.168.1.0 0.0.0.255 # return [R2-acl-ipv4-basic-2000]qu [R2]int g0/2 [R2-GigabitEthernet0/2]packet-filter 2000 outbound [R2-GigabitEthernet0/2]qu [R2]
- PC1 可以訪問 SERVER 的 TELNET 服務,但不能訪問 FTP 服務
- PC2 可以訪問 SERVER 的 FTP 服務,但不能訪問 TELNET 服務
[R1]acl advanced 3000 [R1-acl-ipv4-adv-3000]rule deny tcp source 192.168.1.1 0 destination-port range 20 21 [R1-acl-ipv4-adv-3000]rule deny tcp source 192.168.1.2 0 destination-port eq 23 [R1]int g0/1 [R1-GigabitEthernet0/1]packet-filter 3000 inbound
- PC3 可以訪問 SERVER 的 TELNET 服務和 FTP 服務,但無法 ping 通SERVER
[R2]acl advanced 3000 [R2-acl-ipv4-adv-3000]rule deny icmp source 192.168.2.3 0 destination 192.168.3. 1 0 [R2-GigabitEthernet0/1]packet-filter 3000 outbound
-
測試
- PC1 和 PC2 都無法 Ping 通 PC3
<PC1>ping 192.168.2.3 Ping 192.168.2.3 (192.168.2.3): 56 data bytes, press CTRL+C to break Request time out Request time out Request time out Request time out Request time out--- Ping statistics for 192.168.2.3 ---
<PC2>ping 192.168.2.3 Ping 192.168.2.3 (192.168.2.3): 56 data bytes, press CTRL+C to break Request time out Request time out Request time out Request time out Request time out--- Ping statistics for 192.168.2.3 ---
- PC1 可以連接 SERVER1 的 TELNET,但不能連接 FTP
<PC1>telnet 192.168.3.1 Trying 192.168.3.1 ... Press CTRL+K to abort Connected to 192.168.3.1 ...****************************************************************************** * Copyright (c) 2004-2021 New H3C Technologies Co., Ltd. All rights reserved.* * Without the owner's prior written consent, * * no decompiling or reverse-engineering shall be allowed. * ******************************************************************************Login: wiltjer Password: <SERVER>
<PC1>ftp 192.168.3.1 Press CTRL+C to abort. ftp: connect: Connection timed out ftp>
- PC2 可以連接 SERVER1的 FTP,但不能連接 TELNE
<PC2>ftp 192.168.3.1 Press CTRL+C to abort. Connected to 192.168.3.1 (192.168.3.1). 220 FTP service ready. User (192.168.3.1:(none)): wiltjer 331 Password required for wiltjer. Password: 230 User logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp>
<PC2>telnet 192.168.3.1 Trying 192.168.3.1 ... Press CTRL+K to abort Connected to 192.168.3.1 ... Failed to connect to the remote host!
- PC3 可以訪問 SERVER 的 TELNET 服務和 FTP 服務,但 ping 不通SERVER
<H3C>ping 192.168.3.1 Ping 192.168.3.1 (192.168.3.1): 56 data bytes, press CTRL+C to break Request time out Request time out Request time out Request time out Request time out--- Ping statistics for 192.168.3.1 ---
<H3C>telnet 192.168.3.1 Trying 192.168.3.1 ... Press CTRL+K to abort Connected to 192.168.3.1 ...****************************************************************************** * Copyright (c) 2004-2021 New H3C Technologies Co., Ltd. All rights reserved.* * Without the owner's prior written consent, * * no decompiling or reverse-engineering shall be allowed. * ******************************************************************************Login: wiltjer Password: <SERVER>
<H3C>ftp 192.168.3.1 Press CTRL+C to abort. Connected to 192.168.3.1 (192.168.3.1). 220 FTP service ready. User (192.168.3.1:(none)): wiltjer 331 Password required for wiltjer. Password: 230 User logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp>