ACL簡介
定義
訪問控制列表ACL(Access Control List)是由一條或多條規則組成的集合。所謂規則,是指描述報文匹配條件的判斷語句,這些條件可以是報文的源地址、目的地址、端口號等。
ACL本質上是一種報文過濾器,規則是過濾器的濾芯。設備基於這些規則進行報文匹配,可以過濾出特定的報文,並根據應用ACL的業務模塊的處理策略來允許或阻止該報文通過。
ACL匹配機制
ACL在匹配報文時遵循“一旦命中即停止匹配”的原則。其實,這句話就是對ACL匹配機制的一個高度的概括。
當然,ACL匹配過程中,還存在很多細節。比如,ACL不存在系統會怎麼處理?ACL存在但規則不存在系統會怎麼處理?爲了對整個ACL匹配過程展開詳細的介紹,小編畫了一張ACL匹配流程圖,相信對大家理解ACL匹配機制能有所幫助。
從整個ACL匹配流程可以看出,報文與ACL規則匹配後,會產生兩種匹配結果:“匹配”和“不匹配”。
- 匹配(命中規則):指存在ACL,且在ACL中查找到了符合匹配條件的規則。不論匹配的動作是“permit”還是“deny”,都稱爲“匹配”,而不是隻是匹配上permit規則纔算“匹配”。
- 不匹配(未命中規則):指不存在ACL,或ACL中無規則,再或者在ACL中遍歷了所有規則都沒有找到符合匹配條件的規則。切記以上三種情況,都叫做“不匹配”。
無論報文匹配ACL的結果是“不匹配”、“允許”還是“拒絕”,該報文最終是被允許通過還是拒絕通過,實際是由應用ACL的各個業務模塊來決定的。
不同的業務模塊,對命中和未命中規則報文的處理方式也各不相同。例如,在Telnet模塊中應用ACL,只要報文命中了permit規則,就允許通過;而在流策略中應用ACL,如果報文命中了permit規則,但流行爲動作配置的是deny,該報文會被拒絕通過。
ACL目的
隨着網絡的飛速發展,網絡安全和網絡服務質量QoS(Quality of Service)問題日益突出。
企業重要服務器資源被隨意訪問,企業機密信息容易泄露,造成安全隱患。
Internet病毒肆意侵略企業內網,內網環境的安全性堪憂。
網絡帶寬被各類業務隨意擠佔,服務質量要求最高的語音、視頻業務的帶寬得不到保障,造成用戶體驗差。
以上種種問題,都對正常的網絡通信造成了很大的影響。因此,提高網絡安全性服務質量迫在眉睫。ACL就在這種情況下應運而生了。
通過ACL可以實現對網絡中報文流的精確識別和控制,達到控制網絡訪問行爲、防止網絡攻擊和提高網絡帶寬利用率的目的,從而切實保障網絡環境的安全性和網絡服務質量的可靠性。
ACL的使用場景
ACL可以應用於諸多業務模塊,其中最基本的ACL應用,就是在簡化流策略/流策略中應用ACL,使設備能夠基於全局、VLAN或接口下發ACL,實現對轉發報文的過濾。
此外,ACL還可以應用在Telnet、FTP、路由等模塊。
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、組播協議 |
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以外的地址的報文因匹配不上任何規則會被拒絕登錄。
2:使用基本ACL限制FTP訪問權限示例
組網需求
如圖所示,Switch作爲FTP服務器,對網絡中的不同用戶開放不同的訪問權限:
- 子網1(172.16.105.0/24)的所有用戶在任意時間都可以訪問FTP服務器。
- 子網2(172.16.107.0/24)的所有用戶只能在某一個時間範圍內訪問FTP服務器。
- 其他用戶不可以訪問FTP服務器。
已知Switch與各個子網之間路由可達,要求在Switch上進行配置,實現FTP服務器對客戶端訪問權限的設置。
配置思路
採用如下的思路在Switch上進行配置:
- 配置時間段和ACL,使設備可以基於時間的ACL,對網絡中不同用戶的報文進行過濾,從而控制不同用戶的FTP訪問權限。
- 配置FTP基本功能。
- 在FTP模塊中應用ACL,使ACL生效。
Consul Access Control(ACLS)
Consul使用
Access Control Lists (ACLs)
來保護UI、API、CLI、服務間通信和agent間通信。ACL的核心是將規則分組到策略中,然後將一個或多個策略與一個Token關聯起來。Consul ACL可以用來控制數據和接口的訪問。
應用:consul配置acl:允許註冊和訪問所有節點,並讀取任何服務
參考鏈接:
https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#domain-acls
https://learn.hashicorp.com/consul/security-networking/production-acls
https://forum.huawei.com/enterprise/zh/thread-336589.html
https://support.huawei.com/enterprise/zh/doc/EDOC1100038902/9aca1495
https://juejin.im/post/5d3ffce56fb9a06af7121025
https://support.huawei.com/enterprise/zh/doc/EDOC1100116596/bcfa479c