网络基础:(六)访问控制列表(ACL)

admin 2022年08月10日 578次浏览

1、访问控制列表(ACL)简介

1.1、ACL 概述

访问控制列表 ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等

ACL 本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用 ACL 的业务模块的处理策略来允许或阻止该报文通过

通过 ACL 可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性

1.2、ACL 匹配规则

  • 总是按顺序将分组与访问控制列表的每一行进行比较,即总是首先与访问控制列表的第一行进行比较,然后是第二行和第三行,以此类推

  • 不断比较,直到满足条件为止。在访问控制列表中,找到分组满足的条件后,对分组采取相应的措施,且不再进行比较

  • 每个访问控制列表末尾都有一条隐式的 deny 语句,这意味着如果不满足访问控制列表中任何行的条件,分组将被丢弃

1.3、ACL 分类

  • 基本访问控制列表: 它们只将分组的源 IP 地址用作测试条件,所有的决策都是根据源 IP 地址作出的。这意味着基本访问控制列表要么允许要么拒绝整个协议族,它们不区分 IP 数据流类型(如 Web Telnet UDP 等)

  • 高级访问控制列表: 它们能够检查 IP 分组第3层和第4层报头中的众多其他字段。它们能够检查源 IP 地址、目标 IP 地址、网络层报头的协议字段、传输层报头中的端口号。高级访问列表能够做出更细致的数据流控制决策

  • 命名访问控制列表: 命名访问控制列表要么是标准的,要么是高级的,并非一种新类型

1.3、使用 ACL

创建访问控制列表后,除非将其应用于接口,否则它不能发挥任何作用。要将访问控制列表用作分组过滤器,需要将其应用于要进行数据流过滤的路由器接口,而且还必须指定要使用访问控制列表来过滤哪个方向的数据流

  • 入站访问控制列表: 将访问控制列表应用于入站分组时,将根据访问控制列表对这些分组进行处理,然后再将其路由到出站接口。遭到拒绝的分组不会被路由,因为在调用路由选择进程前,它们已被丢弃

  • 出站访问控制列表: 将访问控制列表应用于出站分组时,分组将首先被路由到出站接口,然后再将分组排队前根据访问控制列表对其进行处理

1.4、创建和实现 ACL 的原则

  • 在接口的特定方向上,每种协议只能有一个入站访问控制列表和一个出站访问控制列表

  • 在访问控制列表中,将具体的测试条件放在前面

  • 新增的语句将放在访问控制列表的末尾

  • 不能仅删除访问控制列表中的一行,而是删除一整条访问控制列表,因此最好先将其复制到文本编辑器中,重新编辑好后,替换原有 ACL(使用命名 ACL 例外)

  • 除非访问控制列表以 permit any 命令结尾,否则不满足任何条件的分组都将被丢弃。访问控制列表至少应包含一条 permit 语句,否则它将拒绝所有的数据流

  • 创建访问控制列表后,应将其应用于接口。如果访问控制列表没有包含任何测试条件,即使将其应用于接口,它也不会过滤数据流

  • 访问控制列表用于过滤穿越路由器的数据流,它们不会对始发于当前路由器的数据流进行过滤

  • 基本访问控制列表 放在离目的地尽可能近的地方

  • 高级访问控制列表 放在离信源尽可能近的地方

1.5、通配符掩码

在访问控制列表中,可使用通配符来指定特定主机、特定网络或网络的一部分。通配符和子网掩码比较类似,同样是使用块大小来识别主机范围的(块大小可以参考 CIDR),只是通配符使用 “0” 的部分必须匹配,非 “0” 的部分使用块大小来识别包含主机的数量

我们常用的就是控制某一台主机或者某一个网段的访问

  • 指定一台主机: 192.168.1.1 0.0.0.0
  • 指定一个 IP 网段: 192.168.1.1 0.0.0.255

2、基本访问控制列表

2.1、简介

基本访问控制列表通过查看分组的源 IP 地址来过滤网络数据流。创建基本 IP 访问控制列表时,使用访问控制列表编号 2000-2999,通常使用编号来区分访问控制列表的类型

2.2、配置基本 ACL 思路

  • 创建一个基本 ACL 列表
  • 在 ACL 中添加策略
  • 在接口上使能 ACL

2.3、示例

  • 功能要求

    禁止 192.168.1.100 主机访问 192.168.20.100

  • 未配置 ACL 的效果

  • 配置 ACL

    # 创建 ACL
    ## 根据实现 ACL 的原则,我们在 AR2 上创建并使能 ACL 
    [AR2]acl 2000
    [AR2-acl-basic-2000]rule 10 deny source 192.168.1.100 0.0.0.0
    [AR2-acl-basic-2000]rule permit source any
    
    # 在端口入方向使能 ACL
    [AR2-GigabitEthernet0/0/0]traffic-filter inbound acl 2000
    

3、高级访问控制列表

高级 ACL 既可使用 IPv4 报文的源 IP 地址,也可使用目的 IP 地址、IP 协议类型、ICMP 类型、TCP 源/目的端口、UDP 源/目的端口号、生效时间段等来定义规则。使用访问控制列表编号 3000-3999

高级 ACL 的配置思路和基本 ACL 相同,不同的是在 rule 的配置方面

  • 配置高级 ACL rule 语法

    rule id permit/deny 协议类型 source 源IP 通配符 destination 目标IP 通配符
    
  • 示例

    只允许 192.168.1.100 ping 192.168.20.100

    # 创建 ACL
    ## 根据实现 ACL 的原则,我们在 AR1 上创建并使能 ACL
    [AR1]acl 3000
    [AR1-acl-adv-3000]rule 10 permit icmp source 192.168.1.100 0 destination 192.168.20.100 0
    [AR1-acl-adv-3000]rule 20 deny icmp source any destination 192.168.20.100 0
    
    # 使能 ACL
    [AR1]int g0/0/0
    [AR1-GigabitEthernet0/0/0]traffic-filter outbound acl 3000