1、ACL應用范圍
通過前兩期的ACL理論學習,大家知道ACL並不能單獨完成控制網絡訪問行為或者限制網絡流量的效果,而是需要應用到具體的業務模塊才能實現上述功能。
那么ACL到底可以應用在哪些業務中呢?
小編總結了一下,ACL應用的業務模塊非常多,但主要分為以下四類:
| 業務分類 |
應用場景 |
涉及業務模塊 |
| 登錄控制 | 對交換機的登錄權限進行控制,允許合法用戶登錄,拒絕非法用戶登錄,從而有效防止未經授權用戶的非法接入,保證網絡安全性。
例如,一般情況下交換機只允許管理員登錄,非管理員用戶不允許隨意登錄。這時就可以在Telnet中應用ACL,並在ACL中定義哪些主機可以登錄,哪些主機不能。 |
Telnet、SNMP、FTP、 TFTP、SFTP、HTTP |
| 對轉發的報文進行過濾 | 對轉發的報文進行過濾,從而使交換機能夠進一步對過濾出的報文進行丟棄、修改優先級、重定向、IPSEC保護等處理。
例如,可以利用ACL,降低P2P下載、網絡視頻等消耗大量帶寬的數據流的服務等級,在網絡擁塞時優先丟棄這類流量,減少它們對其他重要流量的影響。 |
QoS流策略、NAT、IPSEC |
| 對上送CPU處理的報文進行過濾 | 對上送CPU的報文進行必要的限制,可以避免CPU處理過多的協議報文造成占用率過高、性能下降。
例如,發現某用戶向交換機發送大量的ARP攻擊報文,造成交換機CPU繁忙,引發系統中斷。這時就可以在本機防攻擊策略的黑名單中應用ACL,將該用戶加入黑名單,使CPU丟棄該用戶發送的報文。 |
黑名單、白名單、
用戶自定義流 |
| 路由過濾 | ACL可以應用在各種動態路由協議中,對路由協議發布和接收的路由信息進行過濾。
例如,可以將ACL和路由策略配合使用,禁止交換機將某網段路由發給鄰居路由器。 |
BGP、IS-IS、OSPF、
OSPFv3、RIP、RIPng、 組播協議 |
2、ACL業務模塊的處理機制
各類ACL應用的業務模塊對命中/未命中ACL的處理機制是各不相同的。
例如,在流策略中應用ACL時,如果ACL中存在規則但報文未匹配上,該報文仍可以正常通過;但在Telnet中應用ACL,這種情況下,該報文就無法正常通過了。
再如,在黑名單中應用ACL時,無論ACL規則配置成permit還是deny,只要報文命中了規則,該報文都會被系統丟棄,其他模塊卻不存在這種情況。
所以,大家在配置ACL規則並應用到業務模塊中時,一定要格外小心。
為了方便大家查閱,小編特地將常用ACL業務模塊的處理機制進行了整理。
| 業務模塊 |
匹配上了permit規則 | 匹配上了deny規則 | ACL中配置了規則,但未匹配上任何規則 | ACL中沒有配置規則 | ACL未創建 | |
| Telnet |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) | |
| HTTP |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) | |
| SNMP |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) | |
| FTP |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) | |
| TFTP |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) | |
| SFTP |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) | |
| 流策略 |
流行為是permit時:permit(允許通過)
流行為是deny時:deny(丟棄報文) |
deny(丟棄報文) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) | |
| NAT |
permit(進行NAT轉換) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) | |
| IPSEC |
permit(數據流經過IPSec處理后再轉發) | 不允許出現此情況 | permit(功能不生效,按照原轉發方式進行轉發) | 不允許出現此情況 | 不允許出現此情況 | |
| 本機防攻擊策略 |
白名單 | permit(CPU優先處理) | deny(丟棄報文) | permit (功能不生效,正常上送報文) | permit(功能不生效,正常上送報文) | permit(功能不生效,正常上送報文) |
| 黑名單 |
deny(丟棄報文) | deny(丟棄報文) |
permit (功能不生效,正常上送報文) |
permit (功能不生效,正常上送報文) |
permit (功能不生效,正常上送報文) |
|
| 用戶自定義流 | 用戶自定義流的處理動作是deny時:deny(丟棄報文)
動作是car時:permit(進行CAR限速) |
deny(丟棄報文) | permit (功能不生效,按照原轉發方式進行轉發) | permit (功能不生效,正常上送報文) | permit (功能不生效,正常上送報文) | |
| 路由 |
Route Policy | 匹配模式是permit時:permit(允許執行路由策略)
匹配模式是deny時: deny(不允許執行路由策略) |
deny(功能不生效,不允許執行路由策略) | deny(功能不生效,不允許執行路由策略) | permit(對經過的所有路由生效) | deny(功能不生效,不允許執行路由策略) |
| Filter Policy | permit(允許發布或接收該路由) | deny(不允許發布或接收該路由) | deny(不允許發布或接收該路由) | deny(不允許發布或接收路由) | permit(允許發布或接收路由) | |
| 組播 |
igmp-snooping ssm-policy | permit(允許加入SSM組播組范圍) | deny(禁止加入SSM組地址范圍) | deny(禁止加入SSM組地址范圍) | deny(禁止加入SSM組地址范圍,所有組都不在SSM組地址范圍內) | deny(禁止加入SSM組地址范圍,只有臨時組地址范圍232.0.0.0~232.255.255.255在SSM組地址范圍內) |
| igmp-snooping group-policy | 配置了default-permit時:permit(允許加入組播組)
未配置default-permit: permit(允許加入組播組) |
配置了default-permit時:deny(禁止加入組播組)
未配置default-permit:deny (禁止加入組播組) |
配置了default-permit時:permit(允許加入組播組)
未配置default-permit:deny(禁止加入組播組) |
配置了default-permit時:permit(允許加入組播組)
未配置default-permit:deny(禁止加入組播組) |
配置了default-permit時:permit(允許加入組播組)
未配置default-permit:deny(禁止加入組播組) |
|
3、ACL應用方式
每個業務模塊的ACL應用方式,風格也是各不相同。為此,小編同樣進行了一番整理,供大家參考查閱。
| 業務模塊 |
ACL應用方式 | 可使用的ACL編號范圍 | |
| Telnet |
方式一:
系統視圖下執行命令telnet [ ipv6 ] serveracl acl-number 方式二: a、執行命令user-interface vty first-ui-number [ last-ui-number ],進入VTY用戶界面視圖 b、執行命令acl [ ipv6 ] acl-number{inbound | outbound } |
2000~3999 | |
| HTTP |
系統視圖下執行命令http acl acl-number | 2000~3999 | |
| SNMP |
SNMPv1和SNMPv2c:
系統視圖下執行命令snmp-agent acl acl-number 或snmp-agent community { read |write } { community-name | ciphercommunity-name } [ mib-view view-name | acl acl-number ] * SNMPv3: 系統視圖下執行命令snmp-agent acl acl-number、snmp-agent group v3group-name { authentication | privacy| noauthentication } [ read-view read-view| write-view write-view | notify-viewnotify-view ]* [ acl acl-number ]或snmp-agent usm-user v3 user-name[ groupgroup-name | acl acl- number ]* |
2000~2999 | |
| FTP |
系統視圖下執行命令ftp [ ipv6 ] acl acl-number | 2000~3999 | |
| TFTP |
系統視圖下執行命令tftp-server [ ipv6 ]aclacl-number | 2000~3999 | |
| SFTP |
方式一:
系統視圖下執行命令ssh [ ipv6 ] serveraclacl-number 方式二: a、執行命令user-interface vty first-ui-number [ last-ui-number ],進入VTY用戶界面視圖 b、執行命令acl [ ipv6 ] acl-number{inbound | outbound } |
2000~3999 | |
| 流策略 |
a、 系統視圖下執行命令traffic classifierclassifier-name [ operator { and | or} ] [ precedence precedence-value],進入流分類視圖。
b、執行命令if-match acl { acl-number |acl-name },配置ACL應用於流分類。 c、 系統視圖下執行命令traffic behaviorbehavior–name,定義流行為並進入流行為視圖。 d、配置流動作。報文過濾有兩種流動作:deny 或permit。 e、 系統視圖下執行命令traffic policypolicy-name [ match-order { auto |config } ],定義流策略並進入流策略視圖。 f、 執行命令classifier classifier-namebehavior behavior-name,在流策略中為指定的流分類配置所需流行為,即綁定流分類和流行為。在系統視圖、接口視圖或VLAN視圖下,執行命令traffic-policy policy-name{ inbound| outbound },應用流策略。 |
ACL:2000~5999
ACL6:2000~3999 |
|
| NAT |
方式一:
a、 系統視圖下執行命令nat address-group group-index start-addressend-address,配置公網地址池。 b、 執行命令interface interface-typeinterface-number.subnumber,進入子接口視圖。 c、 執行命令nat outbound acl-numberaddress-group group-index [ no-pat ],,配置帶地址池的NAT Outbound。 方式二: a、 系統視圖下執行命令interfaceinterface-type interface-number.subnumber,進入子接口視圖。 b、 執行命令nat outbound acl-number,配置Easy IP。 |
2000~3999 | |
| IPSEC |
方式一:
a、 系統視圖下執行命令ipsec policypolicy-name seq-number manual,創建手工方式安全策略,並進入手工方式安全策略視圖。 b、 執行命令security acl acl-number,在安全策略中引用ACL。 方式二: a、 系統視圖下執行命令ipsec policypolicy-name seq-number isakmp,創建IKE動態協商方式安全策略,並進入IKE動態協商方式安全策略視圖。 b、 執行命令security acl acl-number,在安全策略中引用ACL。 方式三: a、 系統視圖下執行命令ipsec policy-template template-name seq-number,創建策略模板,並進入策略模板視圖。 b、 執行命令security acl acl-number,在安全策略中引用ACL。 c、 系統視圖下執行命令ipsec policypolicy-name seq-number isakmptemplatetemplate-name,在安全策略中引用策略模板。 |
3000~3999 | |
| 本機防攻擊策略 |
白名單 | a、 系統視圖下執行命令cpu-defend policypolicy-name,創建防攻擊策略並進入防攻擊策略視圖。
b、 執行命令whitelist whitelist-id aclacl-number,創建自定義白名單。 c、 系統視圖下執行命令cpu-defend-policypolicy-name [ global ],或槽位視圖下執行命令cpu-defend-policypolicy-name,應用防攻擊策略。 |
2000~4999 |
| 黑名單 | a、 系統視圖下執行命令cpu-defend policypolicy-name,創建防攻擊策略並進入防攻擊策略視圖。
b、 執行命令blacklist blacklist-id aclacl-number,創建黑名單。 c、 系統視圖下執行命令cpu-defend-policypolicy-name [ global ],或槽位視圖下執行命令cpu-defend-policypolicy-name,應用防攻擊策略。 |
2000~4999 | |
| 用戶自定義流 | a、 系統視圖下執行命令cpu-defend policypolicy-name,創建防攻擊策略並進入防攻擊策略視圖。
b、 執行命令user-defined-flow flow-idacl acl-number,配置用戶自定義流。 c、 系統視圖下執行命令cpu-defend-policypolicy-name [ global ],或槽位視圖下執行命令cpu-defend-policypolicy-name,應用防攻擊策略。 |
2000~4999 | |
| 路由 |
Route Policy | a、 系統視圖下執行命令route-policyroute-policy-name { permit | deny }node node,創建Route-Policy,並進入Route-Policy視圖。
b、 執行命令if-match acl { acl-number| acl-name },配置基於ACL的匹配規則;或者配置apply子句為路由策略指定動作,如執行命令apply cost [ + | –] cost,設置路由的開銷值等。 c、 應用路由策略。路由協議不同,命令行不同。例如針對OSPF協議,可以在OSPF視圖下,執行命令import-route { limit limit-number | { bgp [permit-ibgp ] | direct | unr | rip [process-id-rip ] | static | isis[process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tagtag | route-policyroute-policy-name ]* },引入其他路由協議學習到的路由信息;針對RIP協議,可以在RIP視圖下,執行命令import-route { {static | direct | unr } | { { rip | ospf |isis } [ process-id ] } } [ cost cost |route-policyroute-policy-name ]*。 |
2000~2999 |
| Filter Policy | 路由協議不同,過濾方向不同,命令行不同。例如針對RIP協議,對引入的路由進行過濾,可以在RIP視圖下執行命令filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] }import [ interface-type interface-number];對發布的路由進行過濾,可以在RIP視圖下執行命令filter-policy {acl-number | acl-name acl-name | ip-prefix ip-prefix-name } export [ protocol [ process-id ] | interface-type interface-number ] 。 | 2000~2999 | |
| 組播 |
igmp-snooping ssm-policy | VLAN視圖下執行命令igmp-snooping ssm-policy basic-acl-number | 2000~2999 |
| igmp-snooping group-policy | VLAN視圖下執行命令igmp-snooping group-policy acl-number [ versionversion-number ] [ default-permit ] | 2000~3999 | |
好啦,有了小編整理的這兩張表做參考,配置ACL應用案例就可以輕松搞定啦!下面就跟隨小編一起,動手試試吧~
4、ACL應用案例
案例1:使用ACL限制Telnet訪問權限
為了保障遠程維護網絡設備的安全性,現要求只有管理員(源地址是10.1.1.1/32)才能telnet登錄交換機,其他人不允許登錄。

要實現這個需求,一定是在Telnet模塊中應用ACL。那么該如何配置ACL規則呢?大家是不是認為應該先配置一條permit規則允許10.1.1.1/32登錄,然后再配置多條deny規則拒絕其他地址登錄呢?其實大可不必。
查閱Telnet模塊的報文處理機制參照表,當ACL中存在規則的情況下,如果報文匹配上permit規則,則該地址允許登錄設備;如果未匹配上規則,該地址被拒絕登錄設備。
| 業務模塊 |
匹配上了permit規則 | 匹配上了deny規則 | ACL中配置了規則,但未匹配上任何規則 | ACL中沒有配置規則 | ACL未創建 |
| Telnet |
permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
因此,我們僅需配置一條允許10.1.1.1/32地址通過的permit規則即可,10.1.1.1/32以外的地址的報文因匹配不上任何規則會被拒絕登錄。
案例1關鍵配置的配置文件如下:
#
telnet server port 1025
#
acl number 2001 //創建基本ACL,編號為2001
rule 5 permit source 10.1.1.1 0 //僅允許10.1.1.1/32登錄
#
aaa
local-user admin1234 password irreversible-cipher ****** //登錄密碼用******代替,請根據實際情況配置
local-user admin1234 privilege level 3
local-user admin1234 service-type telnet
#
user-interface maximum-vty 8
user-interface vty 0 7
acl 2001 inbound //對通過用戶界面的登錄進行限制
案例2:使用基於時間的ACL限制用戶訪問服務器權限
某企業禁止市場部門和研發部門在上班時間(8:00至17:30)訪問工資查詢服務器(IP地址為10.10.4.9/32),而總裁辦公室不受限制,可以隨時訪問。

分析上述需求,實際上就是要對源IP=10.10.1.0/24訪問目的IP=10.10.4.9/32的轉發流量、以及源IP=10.10.2.0/24訪問目的IP=10.10.4.9/32的轉發流量,在特定時間內進行限制,其他訪問流量則不受限制,所以我們可以通過在流策略中應用ACL來解決。
1) 首先,查閱流策略模塊的ACL處理機制參照表,為需要過濾的報文配置ACL規則。
當ACL中存在規則的情況下,如果報文匹配上deny規則,則被拒絕通過;如果未匹配上,則會被正常轉發。因此,根據上述需求,我們只需要針對兩類需限制的流量,分別配置deny規則即可。其他地址訪問服務器的報文因匹配不上任何規則而被正常轉發,不受限制。
| 業務模塊 |
匹配上了permit規則 | 匹配上了deny規則 | ACL中配置了規則,但未匹配上任何規則 | ACL中沒有配置規則 | ACL未創建 |
| 流策略 |
流行為是permit時:
permit(允許通過) 流行為是deny時: deny(丟棄報文) |
deny(丟棄報文) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) | permit(功能不生效,按照原轉發方式進行轉發) |
2) 其次,我們需要注意,需求中強調了是在一定時間范圍內進行流量限制,所以僅僅進行流量控制是不可行的,還必須在規則中引入生效時間段。
我們定義一個時間段名稱為control-time,並配置該時間段為8:00至17:30,然后在規則中指定time- name參數為control-time,即把生效時間段與ACL關聯起來了。
3) 最后,我們再查閱流策略ACL應用方式參照表,將ACL應用到流策略中。
根據上述需求,我們為市場部和研發部分別配置兩個流分類c_market、c_rd,然后將配置的兩條deny規則對應的ACL應用到兩個流分類中,並配置兩個流行為動作為deny。同時為市場部和研發部分別創建流策略p_market和p_ rd,並將流分類和流行為與流策略綁定,最后再在接口上應用流策略。
在選擇流策略的應用方向時,一定要注意,需求中是要對源自市場部和研發部的報文進行過濾,即對從接口GE1/0/0和接口GE1/0/1進入交換機的報文進行過濾,所以流策略的應用方向必須指定為入方向(inbound)。如果應用方向配置成了出方向(outbound),那就達不到過濾的效果了。
小編提醒,上述案例我們還可以通過這樣的配置來實現需求:在一條ACL中配置兩條規則,在一個流分類中應用這條ACL,配置一個流行為動作為deny,最后創建並應用一個流策略。這樣配置起來更加簡潔和方便,但同時又帶來了新的問題:若后續企業增加了市場部對其他服務器的訪問限制,這時該如何處理呢?
如果之前市場部和研發部使用的是同一個ACL、流分類、流行為和流策略(這整套ACL的相關配置小編統稱為“ACL策略配置”),那么這時只能重新再為市場部配置一條新的ACL策略;如果之前兩個部門使用的是不同的ACL策略,那么現在只需在市場部的ACL策略中,增加一條ACL規則即可解決。所以,為各個部門部署獨立的ACL策略,可以讓您在后續需求擴充或發生改變時,更加方便的維護網絡配置。小編建議大家能把眼光放的更加長遠一些,不要只顧眼前配置的簡單噢~
案例2關鍵配置的配置文件如下:
| time-range control-time 08:00 to 17:30 working-day //配置生效時間段,工作日8:00至17:30 # acl number 3002 rule 5 deny ip source 10.10.1.0 0.0.0.255 destination 10.10.4.9 0 time-range control-time //限制市場部人員在上班時間不能訪問工資服務器 # acl number 3003 rule 5 deny ip source 10.10.2.0 0.0.0.255 destination 10.10.4.9 0 time-range control-time //限制研發部人員在上班時間不能訪問工資服務器 # traffic classifier c_market operator or precedence 5 //為市場部配置基於ACL的流分類 if-match acl 3002 //對匹配ACL 3002的報文(即源地址是市場部IP的報文)進行分類 traffic classifier c_rd operator or precedence 10 //為研發部配置基於ACL的流分類 if-match acl 3003 //對匹配ACL 3003的報文(即源地址是研發部IP的報文)進行分類 # traffic behavior b_market deny //配置流行為,拒絕匹配上規則的報文通過 traffic behavior b_rd deny //配置流行為,拒絕匹配上規則的報文通過 # traffic policy p_market match-order config //為市場部配置流策略 classifier c_market behavior b_market //在流策略中綁定流分類和流行為 traffic policy p_rd match-order config //為研發部配置流策略 classifier c_rd behavior b_rd //在流策略中綁定流分類和流行為 # interface GigabitEthernet1/0/0 port link-type access port default vlan 10 traffic-policy p_market inbound //接口下應用流策略(市場部從接口GE1/0/0接入) # interface GigabitEthernet1/0/1 port link-type access port default vlan 20 traffic-policy p_rd inbound //接口下應用流策略(研發部從接口GE1/0/1接入) |
結束了ACL應用案例的配置,本期ACL應用篇也要完結了。限於篇幅問題,小編只能為大家講解兩個最為典型的ACL案例。好學的你,一定覺得不過癮吧!
