ACL
ACL(Access Control List):訪問控制列表(多用於路由、三層交換中建立包過濾防火牆)
ACL主要基於三層和四層過濾,三層IP包頭的IP地址、四層TCP/UDP頭部的端口號、[五層防火牆過濾數據-組策略]不推薦使用,效率太低,可以使用IDS、IPS。ACL在路由器上配置,也可以在防火牆上配置(一般稱為策略)
ACL的作用
ACL根據人為定義好的規則對數據包進行過濾
ACL分類
標准型訪問控制列表
-
只能基於源IP 地址過濾
-
該種列表的訪問控制列表號為1~99
-
命令
conf t access-list 表號 permit/deny 源IP或源網段 反子網掩碼
注釋:反子網掩碼:將正子網掩碼0和1倒置
255.0.0.0 -- 0.255.255.255
255.255.0.0 -- 0.0.255.255
255.255.255.0 -- 0.0.0.255
反子網掩碼作用:用來匹配條件,與0對應的需要嚴格匹配,與1對應的忽略! -
例如:
access-list 1 deny 10.0.0.0 0.255.255.255 //該條目用來拒絕所有源IP為10開頭的! access-list 1 deny 10.1.1.1 0.0.0.0 //該條目用來拒絕所有源IP為10.1.1.1的主機 access-list 1 deny host 10.1.1.1 //該條目用來拒絕所有源IP為10.1.1.1的主機-簡寫 access-list 1 deny 0.0.0.0 255.255.255.255 //該條目用來拒絕所有所有人 access-list 1 deny any //該條目用來拒絕所有所有人-簡寫
-
完整的案例:
conf t acc 1 deny host 10.1.1.1 acc 1 deny 20.1.1.0 0.0.0.255 acc 1 permit any
-
查看ACL表
show ip access-list [表ID]
-
將ACL應用到接口
int f0/x ip access-group 表號 in/out exit sh run
擴展訪問控制列表
-
基於源IP、目的IP、指定協議、端口、標志過濾數據
-
該種列表的訪問控制列表號為100~199
-
命令
acc 100 permit/deny 協議 源IP或源網段 反子網掩碼 目標IP或源網段 反子網掩碼 [eq 端口號] //協議:tcp/udp/icmp/ip
-
案例
acc 100 permit tcp host 10.1.1.1 host 20.1.1.3 eq 80
acc 100 permit icmp host 10.1.1.1 20.1.1.0 0.0.0.255
acc 100 deny ip host 10.1.1.1 20.1.1.0 0.0.0.255
acc 100 permit ip any any
命名ACL
可以對標准或擴展ACL進行自定義命名,自定義命名更容易辨認,也便於記憶!
可以任意修改某一條,或刪除某一條,也可以往中間插入某一條
conf t
ip access-list standard/extended 自定義表名 //添加表
開始從deny或permit編寫ACL條目
exit
ip access-list standard/extended 自定義表名 //刪除某一條
no 條目ID
exit
ip access-list standard/extended 自定義表名 //插入某一條
條目ID 動作 條件
exit
過濾參數
-
常用端口以及協議如下圖
-
訪問控制列表在接口應用的方向
出:已經過路由器的處理,正離開路由器接口的數據包
入:已達到路由器接口的數據包,將被路由器處理
ACL原理
匹配流程圖
匹配規則:自上而下所有,逐條匹配,默認隱含拒絕所有
- ACL表必須應用到接口的進或出方向才生效!
- 一個接口的一個方向只能應用一張表!
- 進還是出方向應用?取決於流量控制總方向
- ACL表是嚴格自上而下檢查每一條,所以要主要書寫順序
- 每一條是由條件和動作組成,當流量完全滿足條件當某流量沒有滿足某條件,則繼續檢查下一條
- 標准ACL盡量寫在靠近目標的地方
- 實際處理應用:
- 做流量控制,首先要先判斷ACL寫的位置(那個路由器?那個接口的哪個方向?)
- 再考慮怎么寫ACL。
- 如何寫?
- 首先要判斷最終要允許所有還是拒絕所有
- 然后寫的時候要注意:將嚴格的控制寫在前面
- 一般情況下,標准或擴展acl一旦編寫號,無法修改某一條,也無法刪除某一條,也無法修改順序,也無法往中間插入新的條目,只能一直在最后添加新的條目
如想修改或插入或刪除,只能刪除整張表,重新寫!conf t no access-list 表號