ACL
什么是ACL?
访问控制列表ACL是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址,目的地址,端口号等。
ACL本质上是一种报文过滤器,规则是过滤器的滤芯,设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略允许或者阻止该报文通过。
为什么使用ACL?
ACL作为一个过滤器,设备通过应用ACL来阻止和允许特定流量的流入和流出,如果没有它,任何流量都会自由的流入和流出,使得网络容易收到攻击。
如下图所示,为保证财务数据安全,企业在路由设备上应用ACL可以阻止内网内部研发部门主机对财务服务器的访问,同时允许总裁办公室访问财务服务器。为了保护企业内网的安全,在路由设备上应用ACL可以封堵网络病毒常用的端口,防止internet的恶意流量入侵。
借助ACL,可以实现以下功能:
1,提供安全访问:企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。使用ACL可以指定用户访问特定的服务器,网络与服务,从而避免随意访问的情况。
2 ,防止网络攻击:Internet病毒肆意侵略企业内网,内网环境的安全隐患堪忧。使用ACL可以风度高危端口,从而达成外网流量的阻塞。
3,提高网络带宽利用率:网路带宽被各类业务随意挤占,服务质量要求最高的语音,视频业务的带宽得不到保障,造成用户体验极差。使用ACL实现对网络流量的精确识别和控制,限制部分网络流量从而保障主要业务的质量。
ACL的组成
ACL的每一条规则都允许或者阻止特定的流量,在定义一条合理的ACL规则之前,需要了解其基本组成。
1,ACL标识:使用数字或者名称来标识ACL。
a,使用数字标识ACL:不同的类型ACL使用不同的数字进行标识。
b,使用名称标识ACL:可以使用字符标识ACL,就像用域名代替IP地址一样,更加方便记忆。
2,规则:即描述匹配条件的判断语句。
a,规则编号:用于标识ACL规则,所有规则均按照规则编号从小到大进行排序。
b,动作:包括permit/deny两种动作,表示设备所匹配的数据包接收或者丢弃。
c,匹配项:ACL定义了及其丰富的匹配项。包括生效时间段,IP协议(ICMP,TCP,UDP),源/目的地址以及相应的端口号(21,23,80等)。
ACL的分类
基本ACL
基本ACL规则只包含IP源地址,对设备的CPU消耗较少,可用于简单的部署,但是使用场景有限,不能提供强大的安全保障。
高级ACL
相较于基本ACL,高级ACL提供更高的扩展性,可以对流量进行更精细的匹配。通过配置高级ACL,可以阻止特定主机或者整个网端的源或者目标。除此之外,还可以使用协议信息(IP,ICMO,TCP,UDP)去过滤相应的流量。
二层ACL
在公司的内部网络中,想对特定的终端进行访问权限控制,这时就需要二层ACL。使用二层ACL,可以根据MAC地址,目的MAC地址,802.1p优先级,二层协议类型等二层信息对流量进行管控。
用户ACL
由于企业内部同部门的工作人员的终端不在同一个网段难以管理,需要将其纳入一个用户组,并对其用户进行访问权限管理,这时候就需要用户ACL,用户ACL在高级ACL的基础上增加了用户组的配置项,可以实现对不同用户组的流量管控。
基本ACL |
高级ACL |
二层ACL |
用户ACL | |||
---|---|---|---|---|---|---|
ACL标识 |
ACL编号 |
2000~2999 |
3000~3999 |
4000~4999 |
6000~6031 |
|
ACL名称 |
Y |
Y |
Y |
Y |
||
规则
|
规则编号 |
- |
Y |
Y |
Y |
Y |
动作 |
permit/deny |
Y |
Y |
Y |
Y |
|
匹配项
|
生效时间段 |
Y |
Y |
Y |
Y |
|
IP协议类型 |
- |
Y |
Y |
Y |
||
IPv4 |
Y |
Y |
- |
Y |
||
Y |
Y |
- |
Y |
|||
源IP地址 |
Y |
Y |
- |
Y |
||
源MAC地址 |
- |
- |
Y |
- |
||
源端口号 |
- |
Y |
Y |
Y |
||
目的地址 |
- |
Y |
- |
Y |
||
目的MAC地址 |
- |
- |
Y |
- |
||
目的端口号 |
- |
Y |
Y |
Y |
||
用户组 |
- |
- |
- |
Y |
如何使用ACL?
ACL的使用分为两个步骤:
1设置相应的ACL规则:
为ACL设置相关规则的时候,需要了解入口流量与出口流量
当外部internet访问内部网络时,通过路由器接口2的入口流量,其源IP地址为外部的公网IP;
当内部网络需要访问外部网络时,通过路由器的接口1的入口流量,其源IP地址则为内网的IP
2,将ACL应用在相应的设备接口的特定方向(in/out)上。规则设置完成后,需要将ACL因公在设备的接口上才能正常工作。以为所有的路由和转发决策都是由设备的硬件做出的,所以ACL语句可以更快的执行。
匹配机制
ACL规则的匹配遵循”一旦命中即停止匹配“的机制。当ACL处理数据包时,一旦数据包与某条ACL规则匹配,就会停止匹配,设备根据该条匹配的语句内容决定允许或拒绝该数据包。如果数据包内容与ACL语句不匹配,那么将依次使用ACL列表中的下一条语句去匹配数据包直到列表的末尾。一般在ACL的列表末尾会有一条隐式的拒绝所有的语句,所以数据包与所有的规则都不匹配的情况下会被直接拒绝,此时设备不会将此数据包流入或流出接口,而是直接将其丢弃。
ACL的应用场景
在NAT中使用ACL
通过NAT的端口映射可以使得外网访问内部网络。考虑到内部的网络安全,不可能允许所有的外部用户访问内部网络,这时可以设置ACL规则并应用在企业路由器上,使得特定的外网用户可以访问内部网络。
如上图所示,当公网主机想建立与内网主机的通信时,其法向内部网络主机的流量经过NAT设备时,设备利用ACL流量进行过滤,阻断了PC4对PC2的访问,同时经过PC3对PC1的访问
在防火墙中使用ACL
防火墙用在内外网络边缘处,防止外部网络对内部网络的入侵,也可以用来保护网络内部大型服务器和重要的资源(如数据)。由于ACL直接在设备的转发硬件中配置。在防火墙中配置ACL在保护网络安全的同时不会影响服务器的性能。
在QoS中使用ACL限制用户互访
ACL应用在QoS的六策略中,可以实现不同网段用户之间权限的限制,从而避免用户之间随意访问形成安全隐患。
如上图所示,某公司财务部和市场部规划了两个网段的IP地址。为了避免两个部门之间互相访问造成公司机密的泄露。可以在两个部门连接Router的接口的方向上应用绑定ACL的六策略。从而禁止两个部门的互访
匹配规则
一条ACL由多条rule规则组成时,这些规则可能存在重复或矛盾的地方。例如,在一条ACL中先后配置以上两条规则。
对于目的IP=10.1.1.1的报文,如果系统先将deny规则与其匹配,则该报文会被拒绝通过。相反,如果系统先将permint规则与其匹配,则该报文会得到允许通过。
因此,对于规则之间存在重复或矛盾的情况,报文的匹配结果与ACL的匹配顺序时息息相关的。
设备支持两种ACL匹配顺序:配置顺序(config模式)和自动排序(auto模式)。缺省的ACL匹配顺序时config模式。
配置顺序:即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配
1,如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。
2,如果匹配规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且时步长整数倍的最小整数,因此该规则会被最后匹配。
自动排序:是指系统使用”深度优先“的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到底的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配。各类ACL的”深度优先“顺序匹配原则如下表
ACL类型 |
匹配顺序(从高到低) |
---|---|
基本ACL&ACL6 |
|
高级ACL&ACL6 |
|
二层ACL |
|
用户自定义ACL |
用户自定义ACL规则的匹配顺序只支持配置顺序,即规则编号从小到大的顺序进行匹配。 |
用户ACL&ACL6 |
|
在自动排序的ACL中配置规则时,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。
例如,在auto模式的高级ACL3001中,先后匹配以下两条规则:
两条规则均没有带VPN实例,且协议范围,源IP地址规范相同,所以根据上表中高级ACL的深度优先匹配原则,接下来需要进一步比较规则的目的IP地址范围。由于permit规则指定的目的地址范围小于deny规则,所以permit规则的精确度更高,系统为其分配的规则编号更小。配置完上述两条规则后,ACL3001的规则排序如下:
此时,如果再插入一条新的规则rule deny ip destination 10.1.1.1 0(目的IP地址范围是主机地址,优先级高于以上两条规则),则系统将按照规则的优先级关系,重新为各规则分配编号。插入新规则后,ACL3001新的规则排序如下:
相比config模式的ACL,auto模式ACL的规则匹配顺序更为复杂,但是auto模式ACL有其独特的应用场景。例如,在网络部署初始阶段,为了保证网络安全性,管理员定义了较大的ACL匹配范围,用于丢弃不可信网段范围的所有IP报文。随着时间的推移,实际应用中需要允许这个大范围中某些特征的报文通过。此时,如果管理员采用的是auto模式,则只需要定义新的ACL规则,无需再考虑如何对这些规则进行排序避免报文被误丢弃