目录
前言
一、ACL概述
二、ACL的组成
三、通配符
四、ACL的分类与标识
五、ACL的基础配置及应用
网络飞速发展,网络业务变得越来越普及,人们已经不满足于仅仅能通信的目的,人们对网络安全与网络服务质量的要求也变得越来越高,于是诞生了(ACL,Access control list,访问控制列表),可以配合其他知识做到控制网络访问行为,防止网络攻击和提高网络带宽利用率的效果
ACL是由一系列permit或deny语句组成的,有序规则的列表
ACL只是一个匹配工具,它能够对报文进行抓取和区分
ACL 是由 permit 或 deny 语句组成的一系列有顺序的规则的集合;它通过匹配报文的相关字段实现对报文的分类。ACL是能够匹配一个 IP 数据包中的源 IP 地址、目的 IP 地址、协议类型、源目的端口等元素的基础性工具; ACL 还能够用于匹配路由条目。
个人理解就是acl是一个只进行区分和抓取报文工作的协议/工具,acl抓取指定报文后存放起来,然后工作就完成了 其他协议或工具再进行更加高级细致的操作,例如Trafic-filter NAT等等
•ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。
华为文档:
• ACL 的组成:▫ ACL 编号:在网络设备上配置 ACL 时,每个 ACL 都需要分配一个编号,称为 ACL 编号,用来标识 ACL 。不同分类的 ACL 编号范围不同,这个后面具体讲。▫ 规则:前面提到了,一个 ACL 通常由若干条“ permit/deny” 语句组成,每条语句就是该 ACL 的一条规则。▫ 规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识 ACL 规则。可以自定义,也可以系统自动分配。 ACL 规则的编号范围是 0 ~ 4294967294 ,所有规则均按照规则编号从小到大进行排序。▫ 动作:每条规则中的 permit 或 deny ,就是与这条规则相对应的处理动作。 permit 指“允许”, deny 指“拒绝”,但是 ACL 一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。▪ 比如: ACL 如果与流量过滤技术结合使用(即流量过滤中调用 ACL ), permit 就是“允许通行”的意思, deny 就是“拒绝通行”的意思。▫ 匹配项: ACL 定义了极其丰富的匹配项。例子中体现的源地址, ACL 还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源 MAC 、目的 MAC 、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如 TCP/UDP 端口号)等。
规则编号
• 编号( Rule ID ):一个ACL中的每一条规则都有一个相应的编号。
• 步长( Step ) :步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,缺省值为5(可以修改),例如:5/10/15.等等步长的作用是为了方便后续在旧规则之间,插入新的规则。
• Rule ID 分配规则:系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值(例如步长=5,首条规则编号为5)作为该规则的起始编号(缺省状态下);为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。
注:通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配。通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。
“0“代表的是匹配(不可变) ”1“代表是随机匹配(可以变化)
• 当进行 IP 地址匹配的时候,后面会跟着 32 位掩码位,这 32 位称为 通配符。• 通配符,也是点分十进制格式,换算成二进制后,“ 0” 表示“匹配”,“ 1” 表示“不关心”。• 具体 看下这 2 条规则:▫ rule 5: 拒绝源 IP 地址为 10.1.1.1 报文通过 —— 因为通配符为全 0 ,所以每一位都要严格匹配,因此匹配的是主机 IP 地址 10.1.1.1 ;▫ rule 15: 允许源 IP 地址为 10.1.1.0/24 网段地址的报文通过 —— 因为通配符: 0.0.0.11111111 ,后 8 位为 1 ,表示不关心,因此 10.1.1.xxxxxxxx 的后 8 位可以为任意值,所以匹配的是 10.1.1.0/24 网段。• 例子 : 如果 要精确匹配 192.168.1.1/24 这个 IP 地址对应的网段地址,通配符是 多少?▫ 可以得出:网络位需要严格匹配,主机位无所谓,因此通配符为“ 0.0.0.255 ”。
注:基本的ACL只可以根据源IP地址进行区分
用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号。
•基本ACL:
▫主要针对IP报文的源IP地址进行匹配,基本ACL的编号范围是2000-2999。比如这个例子,创建的是acl 2000,就意味着创建的是基本ACL
•高级ACL:
▫可以根据IP报文中的源IP地址、目的IP地址、协议类型,TCP或UDP的源目端口号等元素进行匹配,可以理解为:基本ACL是高级ACL的一个子集,高级ACL可以比基本ACL定义出更精确、更复杂、更灵活的规则。
注:
ACL的规则编号越小越容易被匹配,在匹配时先从最小的开始匹配,一但匹配到合适的就结束匹配,所以对同一IP进行截流时的两条不同命令编号小的生效
不在ACL内通过的表,默认为deny
ACL技术总是与其他技术结合在一起使用的,因此,所结合的技术不同,“允许 (permit)”及“拒绝 (deny)”的内涵和作用也会不同。例如,当ACL技术与流量过滤技术结合使用时,permit就是“允许通行”的意思,deny就是“拒绝通行”的意思。
一定要注意配置的位置,位置分入站和出战(应在合适位置,不固定)
1.创建基本ACL(2000~2999)
[Huawei] acl [ number ] acl-number [ match-order config ]
使用名称创建一个命名型的基本ACL,并进入基本ACL视图。
[Huawei] acl name acl-name { basic | acl-number } [ match-order config ]
2.配置ACL的规则
[Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ]
华为官方解释:• [Huawei] acl [ number ] acl -number [ match-order config ]▫ acl -number :指定访问控制列表的编号。▫ match-order config :指定 ACL 规则的匹配顺序, config 表示配置顺序。• [Huawei] acl name acl -name { basic | acl -number } [ match-order config ]▫ acl -name :指定创建的 ACL 的名称。▫ basic :指定 ACL 的类型为基本 ACL 。• 配置基本 ACL 规则• [Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ]▫ rule-id :指定 ACL 的规则 ID 。▫ deny :指定拒绝符合条件的报文。▫ permit :指定允许符合条件的报文。▫ source { source-address source-wildcard | any } :指定 ACL 规则匹配报文的源地址信息。如果不配置,表示报文的任何源地址都匹配。其中:▪ source-address :指定报文的源地址。▪ source-wildcard :指定源地址通配符。▪ any :表示报文的任意源地址。相当于 source-address 为 0.0.0.0 或者 source-wildcard 为 255.255.255.255 。▫ time-range time-name :指定 ACL 规则生效的时间段。其中, time-name 表示 ACL 规则生效时间段名称。如果不指定时间段,表示任何时间都生效。
实例
配置需求:
在Router上部署基本ACL后,ACL将试图穿越Router的源地址为192.168.1.0/24网段的数据包过滤掉,并放行其他流量,从而禁止192.168.1.0/24网段的用户访问Router右侧的服务器网络
1.先完成路由器和IP地址相关配置
2.在router上创建并禁止192.168.1.0 24网段访问服务器网络
[Router] acl 2000
[Router-acl-basic-2000] rule deny source 192.168.1.0 0.0.0.255
[Router-acl-basic-2000] rule permit source any
3.因为在router处就需要过滤192.168.1.0/24网段,所以应该在router g 0/0/1处配置acl进行拦截
[Router] interface GigabitEthernet 0/0/1
[Router-GigabitEthernet0/0/1] traffic-filter inbound acl 2000
[Router-GigabitEthernet0/0/1] quit