業務訪問控制-ACL與包過濾
ACL的定義及應用場景
-
ACL(Access Control List,訪問控制列表)是用來實現數據包識別功能的;
-
ACL可以應用于諸多場景:
- 包過濾功能:對數據包進行放通或過濾操作。
- NAT(Network Address Translation,網絡地址轉換)
- 按需撥號
- Qos流分類ACL:只對數據包進行匹配,或者說對數據包進行流量分類。
- 路由過濾ACL:對路由進行方向或過濾操作。
- 路由策略ACL:只對路由進行匹配。
ACL包過濾的工作原理
網絡訪問控制需求
- 網絡訪問控制需求
- 要求192.168.1.192 - 255 不能訪問192.168.2.128 - 255.
ACL包過濾基本原理
- ACL包過濾
- 第一步ACL:每條ACL都由若干條ACL規則條目組成。
- ACL規則條目:由1個匹配條件和執行動詞(permit或deny)組成。
- 第二步ACL包過濾:講ACL綁定到設備接口上,進行數據包過濾。
- 匹配permit規則條目的允許放行。
- 匹配deny規則條目的拒絕通過。
- 第一步ACL:每條ACL都由若干條ACL規則條目組成。
- 設備接口的入方向和出方向
- 入方向(in):數據包進入設備的方向。
- 出方向(out):數據包離開設備的方向。
- 兩個方向都可以綁定ACL對數據包進行過濾。
- 包過濾ACL綁定:每個接口的每個方向只能綁定1條ACL
一條ACL可以包含很多條規則條目,在Cisco設備,隱含規則條目會拒絕所有,即沒有配置任何ACL規則條目的情況下。在華為和華三的設備沒有限制。
思科ACL包過濾基本原理
- 思科ACL包過濾原理
- 思科IP轉發流程
- 入處理執行in方向ACL包過濾
- 出處理執行out方向ACL包過濾
入方向處理
出方向處理
華為/H3C ACL包過濾基本原理
- 華為華三ACL包過濾基本原理
- 華為華三IP轉發流程
- 入處理執行in方向ACL包過濾
- 出處理執行out方向ACL包過濾
ACL的分類及應用
ACL規則條目組成——序號/名字+字段匹配
- 利用數字序號標識訪問控制列表
- 可以給訪問控制列表指定名稱,便于維護
ACL規則條目組成——序號/名字+執行動作+字段匹配
IP數據包字段匹配方法:
- 數據包中的各個字段
- 數據包中的各個字段都可以進行匹配
- 常用匹配五元組:源IP、目標IP、協議、源端口、目標端口
-
數據包中的IP地址字段匹配
-
匹配字段
- 匹配源IP
- 匹配目標IP
- 同時匹配源IP和目標IP
-
匹配方法
- IP地址 通配符
- 通配符32位,按位通配,位為0表示這位不能變,位為1表示這位可變。
- IP地址 通配符
-
匹配案列1
- 匹配:192.168.1.1 - 192.168.1.254
- 答案:192.168.1.0 0.0.0.255
-
匹配案列2
- 匹配:192.168.2.128 - 192.168.2.254
- 答案:192.168.2.128 0.0.0.127
-
匹配案列3
- 匹配:192.168.1.192
- 答案:192.168.1.192 0.0.0.0
- 可以簡寫為:host 192.168.1.192
-
匹配案列4
- 匹配:所有IP地址
- 答案:0.0.0.0 255.255.255.255
- 可以簡寫為:any
-
匹配案列5
- 匹配:所有偶數IP地址
- 答案:192.168.1.1 0.0.0.254
-
匹配案列6
- 所有奇數IP地址
- 答案:192.168.1.0 0.0.0.254
-
-
TCP/UDP包中的端口字段匹配
-
匹配字段
- 匹配源端口
- 匹配目標端口
- 同時匹配源端口和目標端口
-
匹配方法
-
端口范圍操作符、端口號
操作符 全稱 含義 示例作用 eq
equal 匹配“等于”某個端口號 eq 80
:表示 HTTP 服務neq
not equal 匹配“不等于”某個端口號 neq 23
:除 Telnet 以外的服務gt
greater 匹配“大于”某個端口號 gt 1023
:過濾高位端口lt
less 匹配“小于”某個端口號 lt 1024
:匹配常用低端口(0-1023)range
范圍 匹配“在兩個端口之間”的端口 range 20 21
:FTP數據和控制端口
-
-
匹配案例1
- 匹配:DNS端口
- 答案:eq 53
-
匹配案列2
- 匹配:DHCP服務器端口
- 答案:eq 67
-
匹配案例3
- 匹配:DHCP客戶端端口
- 答案:eq 68
-
匹配案列4
- 匹配:80 - 123端口
- 答案:range 80 123
-
匹配案例5
- 匹配:1024及以上的端口
- 答案:gt 1023
-
匹配案例6
- 匹配:1024及以下的端口
- 答案:lt 1024
-
ACL分類
命名ACL
- 標準ACL與擴展ACL的缺陷(序號)
- 對任意一條ACL規則條目的刪除、修改、插入都需要先刪除整個ACL,然后重新配置。
-
命名ACL
-
按序號順序匹配,可按序號增加、刪除、修改、插入規則條目。
-
Cisco設備,如果省略序號,默認開始序號10,默認步長為10。
-
標準命名ACL
-
擴展命名ACL
-
-
命名ACL應用案例
- 可按序號增加、刪除、修改、插入規則條目。
ACL高級應用
基于時間ACL配置案例
- 需求:上班時間(9:00 - 18:00)不允許員工的主機(172.16.1.0/24)訪問Internet,下班時間可以訪問Internet上的Web服務。
自反ACL
- 單向訪問控制需求
- 只允許內網訪問外網,不允許外網訪問內網
-
自反ACL
- reeflect name1:
- 根據流出的數據流動自動產生回程需要的源目反向的ACL規則條目
- evaluate1 name1
- 調用自動產生的ACL
- reeflect name1:
典型ACL包過濾案例
標準ACL
- 標準ACL應用案例一
- 只有192.168.1.0-254、192.168.2.0-191能訪問192.168.3.0網段。
- 不允許10.0.0.0/8訪問本路由器的網段
- 標準ACL應用案例二
- 只有192.168.3.1-254才能Telnet到RT1。
擴展ACL
- 擴展ACL應用案例一
- 要求192.168.1.192 - 255不能訪問192.168.2.128 - 255
- 擴展ACL應用案例二
- 192.168.1.0網段自動獲取IP導致,且只能訪問192.168.x.x
放置位總結:**標準靠目標,擴展靠源頭;ACL要綁接口,PC是無能手。**即標準ACL放在靠近目標PC的那邊的路由器上,因為標準ACL只能看源IP,放在太前面,容易誤封。擴展ACL要放在靠近源目標的那邊的路由器上,因為擴展ACL能精確的識別IP、各種協議等,放在前面可以節省寬帶資源。
交換機IP ACL
- 思科交換機IP ACL
? 一、ACL包過濾回顧(核心知識)
🔹 ACL(Access Control List)訪問控制列表
是一種**基于規則對數據包進行匹配與控制(放行/拒絕)**的技術,應用于:
- 包過濾(最常見)
- 路由策略、NAT、防火墻等
- QoS分類、按需撥號等
🔹 ACL匹配原則
- 自上而下按順序匹配
- 一旦匹配成功就不再繼續往下匹配
- 若沒有匹配任何規則,則默認拒絕(Cisco)或看平臺默認策略(華為默認放行)
? 二、ACL匹配結構
每條ACL規則 = 執行動作 + 匹配條件
例如:
access-list 101 permit tcp any any eq 80
表示:允許任何人訪問目的端口為80(HTTP)的主機
? 三、ACL端口匹配方式(核心知識點)
ACL在過濾 TCP 或 UDP 協議 時,可以匹配源端口或目的端口。這時就要用到你提到的端口范圍操作符:
操作符 | 含義 | 示例 | 作用 |
---|---|---|---|
eq | 等于 | eq 80 | 匹配特定端口(如HTTP) |
neq | 不等于 | neq 23 | 除了該端口之外的都匹配 |
gt | 大于 | gt 1023 | 高端口匹配 |
lt | 小于 | lt 1024 | 匹配常見系統端口(如FTP、DNS) |
range | 范圍(含頭尾) | range 20 21 | 匹配一段連續的端口(如FTP) |
? 四、常見端口匹配案例
場景 | 命令 |
---|---|
匹配 DNS 服務 | eq 53 |
匹配 DHCP 服務器端口 | eq 67 |
匹配 DHCP 客戶端端口 | eq 68 |
匹配 Web 服務 | eq 80 |
匹配 HTTPS 服務 | eq 443 |
匹配 FTP 控制端口 | eq 21 |
匹配 FTP 數據端口 | eq 20 |
匹配 80–123 之間的服務 | range 80 123 |
匹配 1024及以上端口 | gt 1023 |
匹配 1024以下端口 | lt 1024 |
? 五、完整ACL配置示例(Cisco)
🎯 示例1:允許訪問HTTP和HTTPS,禁止其他訪問
access-list 110 permit tcp any any eq 80
access-list 110 permit tcp any any eq 443
access-list 110 deny ip any any
interface f0/0
ip access-group 110 in
🎯 示例2:僅允許FTP服務端口范圍
access-list 120 permit tcp any any range 20 21
access-list 120 deny ip any any
? 六、補充注意事項
- ACL分類:
- 標準ACL:只過濾源IP
- 擴展ACL:支持源IP + 目的IP + 協議 + 端口號(最常用于端口匹配)
- 接口方向綁定:
in
:進接口方向(數據進入設備時)out
:出接口方向(數據從設備出去時)
- 一個接口一個方向只能綁定一條ACL
- 端口匹配只能用于 TCP / UDP 協議,不能用于 ICMP、GRE 等非端口協議。
? 七、額外練習(你可以嘗試寫寫)
?問題1:
只允許 192.168.1.0/24 訪問 DNS 服務?
? 答案:
access-list 150 permit udp 192.168.1.0 0.0.0.255 any eq 53
?問題2:
禁止任意主機 telnet 到本設備(23端口)?
? 答案:
access-list 160 deny tcp any any eq 23
命令解釋:
? 示例1:允許訪問 HTTP 和 HTTPS,禁止其他訪問
access-list 110 permit tcp any any eq 80
access-list 110 permit tcp any any eq 443
access-list 110 deny ip any any
interface f0/0
ip access-group 110 in
🔍 第1行:
access-list 110 permit tcp any any eq 80
📖 解釋:
access-list 110
:定義一條編號為110的 擴展ACL(擴展ACL編號是100–199或2000–2699)permit
:表示 允許 匹配的流量通過tcp
:只作用于 TCP協議any any
:- 第一個
any
:表示任何源IP地址 - 第二個
any
:表示任何目標IP地址
- 第一個
eq 80
:表示 目標端口等于80(即 HTTP 服務)
? 結果:
允許所有主機訪問任意主機的 HTTP 服務
🔍 第2行:
access-list 110 permit tcp any any eq 443
📖 解釋:
- 跟上面結構一樣,只是目標端口變為
eq 443
,即 HTTPS(加密網頁服務)
? 結果:
允許所有主機訪問任意主機的 HTTPS 服務
🔍 第3行:
access-list 110 deny ip any any
📖 解釋:
deny
:拒絕匹配的流量ip
:表示匹配所有 IP 協議(包含 TCP、UDP、ICMP 等)any any
:任意源IP → 任意目標IP
? 結果:
拒絕所有非 HTTP/HTTPS 的 IP 流量(如 FTP、Telnet、DNS 等)
?? 注意:這一條也起到了“兜底”的作用,攔截其它未明確放行的流量。
🔍 第4、5行:
interface f0/0
ip access-group 110 in
📖 解釋:
interface f0/0
:進入接口配置模式,表示在 f0/0 接口上應用ACLip access-group 110 in
:- 表示將 ACL 編號 110 綁定到該接口
- 方向是
in
(表示進入接口的數據包要被檢查)
🧠 總體結果:
- 接口 f0/0 接收到的數據包中:
- 如果是 TCP 且目標端口是 80 或 443 → 放行
- 否則(所有其它服務/協議)→ 拒絕
? 示例2:只允許FTP(控制+數據端口)
access-list 120 permit tcp any any range 20 21
access-list 120 deny ip any any
🔍 第1行:
access-list 120 permit tcp any any range 20 21
📖 解釋:
permit tcp
:允許 TCP 協議流量any any
:任意源IP、任意目標IPrange 20 21
:目的端口號在 20~21 范圍內(包含20和21)
📌 說明:
- 端口20是 FTP 數據端口
- 端口21是 FTP 控制端口
? 結果:
允許所有主機訪問 FTP 服務(僅 FTP)
🔍 第2行:
access-list 120 deny ip any any
拒絕除 FTP 以外的所有 IP 流量
? 示例3:只允許 192.168.1.0/24 使用 DNS 服務
access-list 150 permit udp 192.168.1.0 0.0.0.255 any eq 53
🔍 解釋:
permit udp
:允許 UDP 協議流量192.168.1.0 0.0.0.255
:源IP范圍是192.168.1.0 ~ 192.168.1.255
any
:目標IP可以是任意eq 53
:目標端口為 53(DNS服務)
? 結果:
只允許 192.168.1.X 的主機訪問 DNS 服務(UDP 53端口)