什么是ACL?
ACL全稱訪問控制列表(Access Control List),主要通過配置一組規則進行過濾路由器或交換機接口進出的數據包,
是控制訪問的一種網絡技術手段, ACL適用於所有的被路由支持的協議,如IP、tcp、udp、ftp、www等。
什么是反掩碼?
反掩碼就是通配符掩碼 , 通過標記0和1告訴設備應該匹配到哪位。 在反掩碼中,相應位為1的地址在比較中忽略,
為0的必須被檢查。IP地址與反掩碼都是32位的數 由於跟子網掩碼剛好相反,所以也叫反掩碼 。
路由器使用的通配符掩碼與源或目標地址一起來分辨匹配的地址范圍,它與子網掩碼不同。它不像子網掩碼告訴
路由器IP地址是屬於哪個子網(網段),通配符掩碼告訴路由器為了判斷出匹配,它需要檢查IP地址中的多少位。
例如:
255.255.255.0 反掩碼(wildcard-mask)就是0.0.0.255
255.255.255.248 反掩碼(wildcard-mask)就是0.0.0.7
ACL工作原理:
ACL使用包過濾技術,在路由器上讀取OSI七層模型的第3層和第4層包頭中的信息。如源地址,目標地址,源端口,目標端口等,根據預先定義好的規則,對包進行過濾,從而達到訪問控制的目的。
對於路由器接口而言,ACL是有兩個方向:
注意:如果發現沒有匹配的ACL規則,默認會丟棄該數據包,思科ACL規則默認會有一條隱藏的deny any any規則,而華三ACL規則默認是permit any any規則。
入站----如果是入站訪問列表,則當路由器接收到數據包時,Cisco IOS 軟件將檢查訪問列表中的條件語句,看是否有匹配。如果數據包被允許,則軟件將繼續處理該數據包。如果數據包被拒絕,則軟件會丟棄該數據包。
出站----如果是出站訪問列表,則當軟件到接收數據包並將群其路由至出站接口后,軟件將檢查訪問列表中的條件語句,看是否有匹配。如果數據包被允許,則軟件會發送該數據包。如果數據包被拒絕,則軟件會丟棄該數據包。
ACL兩種類型:
標注:允許在標准ACL和擴展ACL中使用名稱代替訪問控制列表號。
1、 標准的ACL
根據數據包的源IP地址來控制允許轉發或拒絕數據包,訪問控制列表號1~99。
標准訪問控制列表配置命令如下:
Router(config)#access-list access-list-number {permit|deny} source [souce-wildcard]
或者
Router(config)#ip access-list standard access-list-number
Router(config-std-nacl)#Sequence Number{permit|deny} source [souce-wildcard]
下面是命令參數的詳細說明
access-list-number:訪問控制列表號,標准ACL取值是1-99,可以使用名稱替代列表號。
Sequence Number:每條ACL規則列表序列號,可使用范圍1-2147483647。
permit | deny:如果滿足規則,則允許/拒絕通過。
source:數據包的源地址,可以是主機地址,也可以是網絡地址
2、 擴展的ACL
根據數據包的源IP地址、目的IP地址、指定協議,端口、標志和時間來控制允許轉發或拒絕數據包,訪問控制列表號100~199
擴展訪問控制列表配置命令如下:
Router(config)#access-list access-list-number {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
或者
Router(config)#ip access-list extended access-list-number
Router(config-std-nacl)#{permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
下面是命令參數的詳細說明
access-list-number:訪問控制列表號,擴展ACL取值100-199,可以使用名稱替代列表號。
Sequence Number:每條ACL規則列表序列號,可使用范圍1-2147483647。
permit|deny:如果滿足規則,則允許/拒絕通過。
protocol:用來指定協議的類型,如IP,TCP,UDP,ICMP等。
source、destination:源和目的,分別用來標示源地址和目的地址。
souce-wildcard、destination-wildcard:子網反碼,souce-wildcard是源反碼,destination-wildcard是目標反碼。
operator operan:lt(小於)、gt(大於)、eq(等於)、neq(不等於)、rand(范圍端口號)等。
ACL應用分類:
Port ACL基於MAC的ACL
ACL應用在二層接口上,但二層接口只支持in方向,一個接口只能使用一條ACL規則,IP或MAC的ACL都可以應用到二層接口,但不能應用到端口聚合(EtherChannel)
VLAN ACL基於VLAN的ACL
使用VLAN與VLAN之間的ACL,相同的VLAN也是可以過濾,只要流量進入或離開指定的VLAN都會被過濾,可以同時控制二層與三層流量。
VLAN ACL只是VLAN調用了ACL規則,in或out的VLAN流量都會被檢測,無論是通過二層轉發還是三層轉發。VLAN ACL是不能定義方向的,
雖然VLNA調用ACL規則會有in或out選項,但只針對VLAN源地址和目標地址而言。VLAN調用ACL是不能實現vlan 10 ping不通vlan 20,
但vlan 20 ping通vlan10類似的功能,除非交換機支持自反ACL規則。
Router ACL基於 IP 的ACL
ACL應用到三層接上,但只能是IP ACL,不能是MAC ACL,Router ACL是in和out方向都可以使用,每個接口每個方向只能使用一條ACL規則。
Time ACL基於時間的ACL
Time ACL是在原來的ACL規則上增加的功能,可以應用於二層或三層,在原來的ACL規則和時間相結合使用,控制起來將更加靈活多變。
實例(VLAN ACL)
注意:配置VLAN ACL需要注意以下問題:
1、VLAN ACL不能具體定義入站和出站規則,VLANACL的in和out是針對VLAN的本身而言,ACL源地址與應用的VLAN相同網段時,
就使用in方向,如果ACL目標地址與應用的VLAN相同網段時,就使用out方向。
2、當數據包匹配思科ACL規則發現沒有匹配的規則,則會匹配思科ACL默認一條隱藏的deny any any規則,默認丟棄該數據包。
3、如果你刪除access-list-number訪問控制列表號,則access-list-number里的所有會被清除,建議進入每條access-list-number
后在根據需求刪除相應的序列號。
4、ACL規則是按從上到下進行匹配,如果先匹配了后面就不會再進行匹配。
設計思路:
1、 一台核心思科3560交換機,三台匯聚思科2960交換機
2、 3560交換機配置VTP、VLAN、trunk
3、 VLAN 30服務器192.168.30.30開啟www服務,服務器192.168.30.31開啟ftp
實驗拓撲圖:
核心交換機3560SW
##配置VTP服務器
3650SW>enable
3650SW#vlan database
3650SW(vlan)#vtp domain CCTV
3650SW(vlan)#vtp server
##創建VLAN
3650SW(vlan)#vlan 10 name VLAN10
3650SW(vlan)#vlan 20 name VLAN20
3650SW(vlan)#vlan 30 name VLAN30
3650SW(vlan)#exit
##配置VLAN IP地址
3650SW#configure terminal
3650SW(config)#interface vlan 10
3650SW(config-if)#ip address 192.168.10.1 255.255.255.0
3650SW(config-if)#exit
3650SW(config)#interface vlan 20
3650SW(config-if)#ip address 192.168.20.1 255.255.255.0
3650SW(config-if)#exit
3650SW(config)#interface vlan 30
3650SW(config-if)#ip address 192.168.30.1 255.255.255.0
3650SW(config-if)#exit
##開啟三層交換機默認路由
3560SW(config)#ip routing
#設置端口匯聚(trunk)
3650SW(config)#interface range fastEthernet 0/22-24
3650SW(config-if-range)#3650SWport trunk encapsulation dot1q
3650SW(config-if-range)#3650SWport mode trunk
3650SW(config-if-range)#no shutdown
3650SW(config-if-range)#exit
2960交換機SW01
##配置VTP客戶端
SW01#vlan database
SW01(vlan)#vtp domain CCTV
SW01(vlan)#vtp client
SW01(vlan)#exit
##設置端口匯聚(trunk)
SW01#configure terminal
SW01(config)#interface fastEthernet 0/24
SW01(config-if)#switchport mode trunk
SW01(config-if)#no shutdown
SW01(config-if)#exit
##分配VLAN所屬端口
SW01#configure terminal
SW01(config)#interface range fastEthernet 0/1-5
SW01(config-if-range)#switchport access vlan 10
SW01(config-if-range)#switchport mode access
SW01(config-if-range)#no shutdown
SW01(config-if-range)#exit
2960交換機SW02
##配置VTP客戶端
SW01#vlan database
SW01(vlan)#vtp domain CCTV
SW01(vlan)#vtp client
SW01(vlan)#exit
##設置端口匯聚(trunk)
SW01#configure terminal
SW01(config)#interface fastEthernet 0/24
SW01(config-if)#switchport mode trunk
SW01(config-if)#no shutdown
SW01(config-if)#exit
##分配VLAN所屬端口
SW01#configure terminal
SW01(config)#interface range fastEthernet 0/1-5
SW01(config-if-range)#switchport access vlan 20
SW01(config-if-range)#switchport mode access
SW01(config-if-range)#no shutdown
SW01(config-if-range)#exit
2960交換機SW03
##配置VTP客戶端
SW01#vlan database
SW01(vlan)#vtp domain CCTV
SW01(vlan)#vtp client
SW01(vlan)#exit
##設置端口匯聚(trunk)
SW01#configure terminal
SW01(config)#interface fastEthernet 0/24
SW01(config-if)#switchport mode trunk
SW01(config-if)#no shutdown
SW01(config-if)#exit
##分配VLAN所屬端口
SW01#configure terminal
SW01(config)#interface range fastEthernet 0/1-5
SW01(config-if-range)#switchport access vlan 30
SW01(config-if-range)#switchport mode access
SW01(config-if-range)#no shutdown
SW01(config-if-range)#exit
重要操作*******核心交換機3560SW配置ACL規則***********
黑名單和白名單
1、默認設置黑名單,再設置白名單。(如果ACL規則限制多推薦使用)
2、默認設置白名單,再設置黑名單。(如果ACL規則限制少推薦使用)
###查看ACL規則的相關命令
3650W#show ip access-lists
3650W#show ip access-lists 102
3650W#show running-config
###刪除ACL規則的相關命令
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#no 20
***操作實驗1:默認設置黑名單,再設置白名單***
標注:同網段的主機無法限制,擴展ACL是按順序執行
###創建三條擴展ACL分別是禁止所有訪問
3650W#configure terminal
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#1000 deny ip any any
3650W(config)#ip access-list extended 102
3650W(config-ext-nacl)#1000 deny ip any any
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#1000 deny ip any any
###創建的擴展ACL分別應用到不同的VLAN
3650W(config)#interface vlan 10
3650W(config-if)#ip access-group 101 in
3650W(config)#interface vlan 30
3650W(config-if)#ip access-group 103 in
3650W(config)#interface vlan 20
3650W(config-if)#ip access-group 102 in
1、配置192.168.10.10主機只允許與192.168.30.30主機相互訪問
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#10 permit ip host 192.168.10.10 host 192.168.30.30
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#10 permit ip host 192.168.30.30 host 192.168.10.10
2、配置vlan 10與vlan 30所有主機相互訪問
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#20 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#20 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
3、配置vlan 10 所有主機只允許與 vlan 30的192.168.30.30主機相互訪問
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#30 permit ip 192.168.10.0 0.0.0.255 host 192.168.30.30
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#30 permit ip host 192.168.30.30 192.168.10.0 0.0.0.255
4、配置192.168.30.30主機80端口只允許vlan 10的所有主機訪問(不能反向訪問192.168.10.10的80和21端口)
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#40 permit tcp 192.168.10.0 0.0.0.255 host 192.168.30.30 eq www
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#40 permit tcp host 192.168.30.30 192.168.10.0 0.0.0.255
5、配置192.168.30.30 主機 80/21端口只允許192.168.10.10主機訪問(不能反向訪問192.168.10.10的80和21端口)
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#50 permit tcp host 192.168.10.10 host 192.168.30.30 range 80 21
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#50 permit tcp host 192.168.30.30 host 192.168.10.10
***操作實驗2:默認設置白名單,再設置黑名單***
###創建一條擴展ACL分別是允許所有訪問
3650W#configure terminal
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#1000 permit ip any any
###創建的擴展ACL分別應用到不同的VLAN
3650W(config)#interface vlan 30
3650W(config-if)#ip access-group 103 out
1、禁止vlan 10 vlan 20所有主機不能訪問192.168.30.30主機的80端口,但允許192.168.30.30.主機去訪問任何主機的80端口
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#10 deny tcp any host 192.168.30.30 eq www
2、禁止192.168.30.30.主機去訪問vlan 10和vlan 20任何主機的80端口
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#20 deny tcp host 192.168.30.30 any eq www
3650W(config)#interface vlan 30
3650W(config-if)#ip access-group 103 in