ACL简介
定义
访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
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服务器对客户端访问权限的设置。
使用基本ACL限制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
https://www.consul.io/api/acl/acl.html