一、ACL简介
1.定义
访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
ACL本质上是一种报文过滤器,设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
ACL配置完成后,必须应用在业务模块中才能生效,其中最基本的ACL应用,就是在简化流策略/流策略中应用ACL,使设备能够基于全局、VLAN或接口下发ACL,实现对转发报文的过滤。
2.目的
ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。
二、ACL工作流程
1.访问控制列表的入口规则
当数据包进入到接口时,首先判断接口上是否存在访问控制列表,若接口不存在ACL,则直接转发数据;若接口上存在ACL,则比较ACL中的列表信息,若与ACL列表相符则根据规则处理数据信息,若与ACL列表不相符则根据规则丢弃数据信息。
2.访问控制列表的出口规则
当数据经过路由器的接口向外转发时,首先查看路由表的信息,是否有到达目的段的路由信息或默认路由信息,若无则丢弃数据,若有则检测接口上的ACL列表信息。首先判断接口上是否存在访问控制列表,若接口不存在ACL,则直接转发数据;若接口上存在ACL,则比较ACL中的列表信息,若与ACL列表相符则根据规则处理数据信息,若与ACL列表不相符则根据规则丢弃数据信息。
三、ACL匹配机制
设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制
四、应用模块的ACL默认动作和处理机制(以华为设备为列)
在各类业务模块中应用ACL时,ACL的默认动作各有不同,所以各业务模块对命中/未命中ACL规则报文的处理机制也各不相同。
例如,流策略中的ACL默认动作是permit,在流策略中应用ACL时,如果ACL中存在规则但报文未匹配上,该报文仍可以正常通过。而Telnet中的ACL默认动作是deny,在Telnet中应用ACL时,如果遇到此种情况,该报文会被拒绝通过。
此外,黑名单模块中的ACL处理机制与其他模块有所不同。在黑名单中应用ACL时,无论ACL规则配置成permit还是deny,只要报文命中了规则,该报文都会被系统丢弃。
1.各业务模块的ACL默认动作及ACL处理机制
ACL默认动作及处理规则 | Telnet | STelnet | HTTP | FTP | TFTP |
---|---|---|---|---|---|
ACL默认动作 | deny | deny | deny | deny | deny |
命中permit规则 | permit(允许登录) | permit(允许登录) | permit(允许登录) | permit(允许登录) | permit(允许登录) |
命中deny规则 | deny(拒绝登录) | deny(拒绝登录) | deny(拒绝登录) | deny(拒绝登录) | deny(拒绝登录) |
ACL中配置了规则,但未命中任何规则 | deny(拒绝登录) | deny(拒绝登录) | deny(拒绝登录) | deny(拒绝登录) | deny(拒绝登录) |
ACL中未配置规则 | permit(允许登录) | permit(允许登录) | permit(允许登录) | permit(允许登录) | permit(允许登录) |
ACL未创建 | permit(允许登录) | permit(允许登录) | permit(允许登录) | permit(允许登录) | permit(允许登录) |
2.各业务模块的ACL默认动作及ACL处理机制
ACL默认动作及处理规则 | SFTP | SNMP | 流策略 | 简化流策略 | 本机防攻击策略(黑名单) |
---|---|---|---|---|---|
ACL默认动作 | deny | deny | permit | permit | permit |
命中permit规则 | permit(允许登录) | permit(允许登录) | 流行为是permit时:permit(允许通过)流行为是deny时:deny(丢弃报文)流行为是其他动作时:permit(执行流策略动作) | permit(执行简化流策略动作) | deny(丢弃报文) |
命中deny规则 | deny(拒绝登录) | deny(拒绝登录) | deny(丢弃报文)说明:报文命中deny规则时,只有在流行为是流量统计、MAC地址不学习或流镜像的情况下,设备才会执行流行为动作,否则流行为动作不生效。 | 简化流策略动作为报文过滤(traffic-filter或traffic-secure)时:deny(丢弃报文)简化流策略动作为其他动作时:permit(执行简化流策略动作) | deny(丢弃报文) |
ACL中配置了规则,但未命中任何规则 | deny(拒绝登录) | deny(拒绝登录) | permit(功能不生效,按照原转发方式进行转发) | permit(功能不生效,按照原转发方式进行转发) | permit(功能不生效,正常上送报文) |
ACL中未配置规则 | permit(允许登录) | permit(允许登录) | permit(功能不生效,按照原转发方式进行转发) | permit(功能不生效,按照原转发方式进行转发) | permit(功能不生效,正常上送报文) |
ACL未创建 | permit(允许登录) | permit(允许登录) | permit(功能不生效,按照原转发方式进行转发) | permit(功能不生效,按照原转发方式进行转发) | permit(功能不生效,正常上送报文) |
3.各业务模块的ACL默认动作及ACL处理机制
ACL默认动作及处理规则 | Route Policy | Filter Policy | igmp-snooping ssm-policy | igmp-snooping group-policy |
---|---|---|---|---|
ACL默认动作 | deny | deny | deny | 配置了default-permit时:permit未配置default-permit时:deny |
命中permit规则 | 匹配模式是permit时:permit(允许执行路由策略)匹配模式是deny时:deny(不允许执行路由策略) | permit(允许发布或接收该路由) | permit(允许加入SSM组播组范围) | 配置了default-permit时:permit(允许加入组播组)未配置default-permit时:permit(允许加入组播组) |
命中deny规则 | deny(功能不生效,不允许执行路由策略) | deny(不允许发布或接收该路由) | deny(禁止加入SSM组地址范围) | 配置了default-permit时:deny(禁止加入组播组)未配置default-permit时:deny(禁止加入组播组) |
ACL中配置了规则,但未命中任何规则 | deny(功能不生效,不允许执行路由策略) | deny(不允许发布或接收该路由) | deny(禁止加入SSM组地址范围) | 配置了default-permit时:permit(允许加入组播组)未配置default-permit时:deny(禁止加入组播组) |
ACL中未配置规则 | permit(对经过的所有路由生效) | deny(不允许发布或接收路由) | deny(禁止加入SSM组地址范围,所有组都不在SSM组地址范围内) | 配置了default-permit时:permit(允许加入组播组)未配置default-permit时:deny(禁止加入组播组) |
ACL未创建 | deny(功能不生效,不允许执行路由策略) | permit(允许发布或接收路由) | deny(禁止加入SSM组地址范围,只有临时组地址范围232.0.0.0~232.255.255.255在SSM组地址范围内) | 配置了default-permit时:permit(允许加入组播组)未配置default-permit时:deny(禁止加入组播组) |