ACL报文访问控制列表【华为(访问控制,流量抓取)】

root
233
文章
0
评论
2020年12月16日11:20:26 评论 10288字阅读34分17秒

ACL报文访问控制列表【华为(访问控制,流量抓取)】

ACL只能过滤别的设备产生的流量,自己产生的流量不生效

定义

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

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

目的

随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。

  • 企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。
  • Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。
  • 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。

以上种种问题,都对正常的网络通信造成了很大的影响。因此,提高网络安全性服务质量迫在眉睫。ACL就在这种情况下应运而生了。

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

 

一个典型的ACL应用组网场景。

  • 某企业为保证财务数据安全,禁止研发部门访问财务服务器,但总裁办公室不受限制。实现方式:

    在Interface 1的入方向上部署ACL,禁止研发部门访问财务服务器的报文通过。Interface 2上无需部署ACL,总裁办公室访问财务服务器的报文默认允许通过。

  • 保护企业内网环境安全,防止Internet病毒入侵。实现方式:

    在Interface 3的入方向上部署ACL,将病毒经常使用的端口予以封堵。

ACL的基本原理

ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。

 

ACL的组成

一条ACL的结构组成,

  • ACL编号用于标识ACL,表明该ACL是数字型ACL
    • 根据ACL规则功能的不同,ACL被划分基本ACL高级ACL二层ACL用户ACL这几种类型,每类ACL编号的取值范围不同。关于每类ACL编号的详细介绍,请参见ACL的分类。
    • 除了可以通过ACL编号标识ACL,设备还支持通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆。这种ACL,称为命名型ACL

命名型ACL实际上是“名字+数字的形式可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。例如,下面就是一个既有名字“deny-telnet-login”又有编号“3998”的ACL。

#                                                                                
acl name deny-telnet-login 3998                                                  
 rule 0 deny tcp source 10.152.0.0 0.0.63.255 destination 10.64.0.97 0 destination-port eq telnet                                                                
 rule 5 deny tcp source 10.242.128.0 0.0.127.255 destination 10.64.0.97 0 destination-port eq telnet                                                             
#
  • 规则:即描述报文匹配条件的判断语句。
    • 规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。

      ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。所以,上图中的rule 5排在首位,而规则编号最大的rule 4294967294排在末位。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。

    • 动作包括permit/deny两种动作,表示允许/拒绝。
    • 匹配项ACL定义了极其丰富的匹配项。除了上图中的源地址和生效时间段,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。关于每种匹配项的详细介绍,请参见ACL的常用匹配项。

ACL的匹配机制

设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制,如图

首先系统会查找设备上是否配置了ACL。

  • 如果ACL不存在,则返回ACL匹配结果为:不匹配。
  • 如果ACL存在,则查找设备是否配置了ACL规则。
    • 如果规则不存在,则返回ACL匹配结果为:不匹配。
    • 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
  • 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
  • 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
  • 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。

从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。

  • 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。

    不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。

  • 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。

    以上三种情况,都叫做“不匹配”。

ACL的分类

基于ACL标识方法的划分

划分如下:

  • 数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
  • 命名型ACL:通过名称代替编号来标识ACL。

用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL,如表前面的图所示。同时,为了便于记忆和识别,用户还可以创建命名型ACL,即在创建ACL时为其设置名称。命名型ACL,也可以是“名称 数字”的形式,即在定义命名型ACL时,同时指定ACL编号。如果不指定编号,系统则会自动为其分配一个数字型ACL的编号。

说明:

命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。

仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。

 

基于对IPv4和IPv6支持情况的划分

划分如下:

  • ACL4:通常直接叫做“ACL”,特指仅支持过滤IPv4报文的ACL。
  • ACL6:又叫做“IPv6 ACL”,特指仅支持过滤IPv6报文的ACL。

以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”。各类型ACL对IPv4和IPv6的支持情况。

基于ACL规则定义方式的划分

分类

适用的IP版本

规则定义描述

编号范围

基本ACL

IPv4

仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。

2000~2999

高级ACL

IPv4

既可使用IPv4报文的源IP地址,也可使用目的IP地址IP协议类型ICMP类型TCP源/目的端口UDP源/目的端口号、生效时间段等来定义规则。

3000~3999

二层ACL

IPv4&IPv6

使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等。

4000~4999

用户自定义ACL

IPv4&IPv6

使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以报文头为基准,指定从报文的第几个字节开始与字符串掩码进行“与”操作,并将提取出的字符串与用户自定义的字符串进行比较,从而过滤出相匹配的报文。

5000~5999

用户ACL

IPv4

既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。

6000~6031

基本ACL6

IPv6

可使用IPv6报文的源IPv6地址、分片信息和生效时间段来定义规则。

2000~2999

高级ACL6

IPv6

可以使用IPv6报文的源IPv6地址目的IPv6地址、IPv6协议类型、ICMPv6类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。

3000~3999

ACL的步长设定

步长的含义

步长,是指系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值。

系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。例如ACL中包含规则rule 5和rule 12,ACL(特指基本ACL、高级ACL、二层ACL、用户ACL)的缺省步长为5,大于12且是5的倍数的最小整数是15,所以系统分配给新配置的规则的编号为15。

[Huawei-acl-basic-2001] display this
#                                                                                
acl number 2001              //空ACL                                              
#                                                                                
return                             
[Huawei-acl-basic-2001] rule deny source 10.1.1.0 0.0.0.255 //配置首条不指定规则编号的规则 
[Huawei-acl-basic-2001] display this
#                                                                                
acl number 2001                                                                  
 rule 5 deny source 10.1.1.0 0.0.0.255         
#                                                                                
return          
[Huawei-acl-basic-2001] rule 12 deny source 10.2.2.0 0.0.0.255 //配置一条规则编号为12的规则      
[Huawei-acl-basic-2001] display this
#                                                                                
acl number 2001                                                                  
 rule 5 deny source 10.1.1.0 0.0.0.255                                            
 rule 12 deny source 10.2.2.0 0.0.0.255                                           
#                                                                                
return                                    
[Huawei-acl-basic-2001] rule deny source 10.3.3.0 0.0.0.255 //再次配置一条不指定规则编号的规则      
[Huawei-acl-basic-2001] display this
#                                                                                
acl number 2001                                                                  
 rule 5 deny source 10.1.1.0 0.0.0.255                                            
 rule 12 deny source 10.2.2.0 0.0.0.255                                           
rule 15 deny source 10.3.3.0 0.0.0.255   
#                                                                                
return

如果重新调整了步长值(例如调整为2),系统则会自动从当前步长值开始重新排列规则编号,规则编号变成2、4、6…。恢复步长值为缺省值后,系统则会立刻按照缺省步长重新调整规则编号,规则编号变成5、10、15…。

[Huawei-acl-basic-2001] display acl 2001
Basic ACL 2001, 3 rules                                                          
Acl's step is 5
 rule 5 deny source 10.1.1.0 0.0.0.255                           
 rule 12 deny source 10.2.2.0 0.0.0.255                          
 rule 15 deny source 10.3.3.0 0.0.0.255  

[Huawei-acl-basic-2001] step 2   //配置步长值为2 
[Huawei-acl-basic-2001] display acl 2001
Basic ACL 2001, 3 rules                                                          
Acl's step is 2  
 rule 2 deny source 10.1.1.0 0.0.0.255                           
 rule 4 deny source 10.2.2.0 0.0.0.255                           
 rule 6 deny source 10.3.3.0 0.0.0.255                          

[Huawei-acl-basic-2001] undo step   //恢复步长值为缺省值 
[Huawei-acl-basic-2001] display acl 2001
Basic ACL 2001, 3 rules                                                          
Acl's step is 5 
 rule 5 deny source 10.1.1.0 0.0.0.255                           
 rule 10 deny source 10.2.2.0 0.0.0.255                          
 rule 15 deny source 10.3.3.0 0.0.0.255

 

步长的作用

设置步长的作用,在于方便后续在旧规则之间插入新的规则。

假设,一条ACL中,已包含了三条规则rule 5、rule 10、rule 15。如果希望源IP地址为10.1.1.3的报文也被拒绝通过,该如何处理?

rule 5 deny source 10.1.1.1 0  //表示拒绝源IP地址为10.1.1.1的报文通过                    
rule 10 deny source 10.1.1.2 0 //表示拒绝源IP地址为10.1.1.2的报文通过                     
rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0/24网段地址的报文通过

由于ACL匹配报文时遵循“一旦命中即停止匹配”的原则,所以源IP地址为10.1.1.1和10.1.1.2的报文,会在匹配上编号较小的rule 5和rule 10后停止匹配,从而被系统拒绝通过;而源IP地址为10.1.1.3的报文,则只会命中rule 15,从而得到系统允许通过。若想让源IP地址为10.1.1.3的报文也被拒绝通过,则必须为该报文配置一条新的deny规则。可以在rule 15之前插入一条新规则rule 11,这样源IP地址为10.1.1.3的报文,就会因先命中rule 11而被系统拒绝通过。插入rule 11后,该ACL的旧规则编号不受影响,且新的规则排序为rule 5、rule 10、rule 11、rule 15。

rule 5 deny source 10.1.1.1 0  //表示禁止源IP地址为10.1.1.1的报文通过                    
rule 10 deny source 10.1.1.2 0 //表示禁止源IP地址为10.1.1.2的报文通过                     
rule 11 deny source 10.1.1.3 0 //表示拒绝源IP地址为10.1.1.3的报文通过  
rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0网段地址的报文通过

试想一下,如果这条ACL的规则间隔不是5,而是1(rule 1、rule 2、rule 3…),这时再想插入新的规则,就只能先删除已有的规则,然后再配置新规则,最后将之前删除的规则重新配置还原。

因此,为了避免上述操作造成的麻烦,ACL引入了步长的概念。通过设置ACL步长,使规则之间留有一定的空间,就可以轻松的在旧规则中插入新规则了。

ACL应用场景【待完成】

  • 抓路由
  • 抓流量
  • 访问控制

 

基础ACL配置练习

[R1]acl ?
  INTEGER<2000-2999>  Basic access-list(add to current using rules)
  INTEGER<3000-3999>  Advanced access-list(add to current using rules)
  INTEGER<4000-4999>  Specify a L2 acl group
  ipv6                ACL IPv6 
  name                Specify a named ACL
  number              Specify a numbered ACL

首先测试PC1 VLAN 10的连通性

PC1>ping 114.114.114.114

Ping 114.114.114.114: 32 data bytes, Press Ctrl_C to break
From 114.114.114.114: bytes=32 seq=1 ttl=254 time=62 ms

--- 114.114.114.114 ping statistics ---
  1 packet(s) transmitted
  1 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 62/62/62 ms

测试PC2 VLAN 20的连通性

PC2>ping 114.114.114.114

Ping 114.114.114.114: 32 data bytes, Press Ctrl_C to break
From 114.114.114.114: bytes=32 seq=1 ttl=254 time=109 ms
From 114.114.114.114: bytes=32 seq=2 ttl=254 time=78 ms

--- 114.114.114.114 ping statistics ---
  2 packet(s) transmitted
  2 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 78/93/109 ms

在R1上设置ACL和规则

[R1]alc 2000
//rule 规则的编号建议10,20,30这样的,方便以后追加
[R1-acl-basic-2000]rule 10 deny source 192.168.10.0 0.0.0.255
[R1-acl-basic-2000]rule 20 deny source 192.168.20.0 0.0.0.255
[R1-acl-basic-2000]dis this
#
acl number 2000  
 rule 10 deny source 192.168.10.0 0.0.0.255 
 rule 20 deny source 192.168.20.0 0.0.0.255 
#
return

在R1对应入端口上开启规则,出方向是outbound

[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]traffic-filter inbound acl 2000

[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]traffic-filter inbound acl 2000

测试PC机连通性

PC1>ping 114.114.114.114

Ping 114.114.114.114: 32 data bytes, Press Ctrl_C to break
Request timeout!

--- 114.114.114.114 ping statistics ---
  2 packet(s) transmitted
  0 packet(s) received
  100.00% packet loss
PC2>ping 114.114.114.114

Ping 114.114.114.114: 32 data bytes, Press Ctrl_C to break
Request timeout!

--- 114.114.114.114 ping statistics ---
  1 packet(s) transmitted
  0 packet(s) received
  100.00% packet loss

 

高级ACL练习

禁止VLAN 10 的主机访问VLAN 20的主机

[SW2]acl ?
  INTEGER<2000-2999>  Basic access-list(add to current using rules)
  INTEGER<3000-3999>  Advanced access-list(add to current using rules)
  INTEGER<4000-4999>  Specify a L2 acl group
  ipv6                ACL IPv6 
  name                Specify a named ACL
  number              Specify a numbered ACL
[SW2]acl 3000
[SW2-acl-adv-3000]rule 10 deny ?
  <1-255>  Protocol number
  gre      GRE tunneling(47)
  icmp     Internet Control Message Protocol(1)
  igmp     Internet Group Management Protocol(2)
  ip       Any IP protocol
  ipinip   IP in IP tunneling(4)
  ospf     OSPF routing protocol(89)
  tcp      Transmission Control Protocol (6)
  udp      User Datagram Protocol (17)

SW2配置acl策略

[sw2-acl-adv-3000]rule 10 deny ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255

测试PC1与PC2的连通性

PC>ping 192.168.20.254

Ping 192.168.20.254: 32 data bytes, Press Ctrl_C to break
From 192.168.20.254: bytes=32 seq=1 ttl=255 time=47 ms

--- 192.168.20.254 ping statistics ---
  1 packet(s) transmitted
  1 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 47/47/47 ms

SW2的入接口开启控制

[sw2-Ethernet0/0/2]traffic-filter inbound acl 3000

测试PC1与PC2的连通性

PC>ping 192.168.20.254

Ping 192.168.20.254: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!

--- 192.168.20.254 ping statistics ---
  2 packet(s) transmitted
  0 packet(s) received
  100.00% packet loss

 

禁止ICMP报文

禁止ICMP报文的话,只需要禁止ICMP的reply报文就可以了

[SW2]acl name out_icmp advance
[SW2-acl-adv-out_icmp]rule 10 deny icmp icmp-type ?
  INTEGER<0-255>        ICMP type
//icmp请求reuqest报文
  echo                  Type=8, Code=0
//icmp的reply报文
  echo-reply            Type=0, Code=0
//禁止源ICMP回包的地址是114.114.114.114/32网段,目的地址是192.168.10.0/24
[sw2-acl-adv-out_icmp]rule 10 deny icmp icmp-type echo-reply source 114.114.114.114 0.0.0.0 destination 192.168.10.0 0.0.0.255

测试PC1的连通性

PC>ping 114.114.114.114

Ping 114.114.114.114: 32 data bytes, Press Ctrl_C to break
From 114.114.114.114: bytes=32 seq=1 ttl=254 time=78 ms
From 114.114.114.114: bytes=32 seq=2 ttl=254 time=47 ms

--- 114.114.114.114 ping statistics ---
  2 packet(s) transmitted
  2 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 47/62/78 ms

SW2的入接口开启acl策略

[sw2-Ethernet0/0/3]traffic-filter inbound acl 3999
[sw2-Ethernet0/0/3]dis this
#
interface Ethernet0/0/3
 port link-type access
 port default vlan 12
 traffic-filter inbound acl name out_icmp
#
return

在PC1上进行测试

PC>ping 114.114.114.114

Ping 114.114.114.114: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!

--- 114.114.114.114 ping statistics ---
  2 packet(s) transmitted
  0 packet(s) received
  100.00% packet loss

 

 

ACL规则限制指定IP使用telnet访问指定IP地址【筛选端口】

[R1-acl-adv-3000]rule 10 deny tcp source 1.1.1.1 0.0.0.0 destination 3.3.3.3 0 destination-port eq telnet

 

ACL规则限制所有去往百度的流量

[R1-acl-adv-3000]rule 20 deny tcp source 192.168.10.0 0.0.0.255 destination 114.114.114.114 0.0.0.0 destination-port eq 80

//range筛选目的端口范围,61000-62000
[R1-acl-adv-3000]rule 20 deny tcp source 192.168.10.0 0.0.0.255 destination 114.114.114.114 0.0.0.0 destination-port range 61000 62000

 

查看acl是否有流量

//15个匹配
[R1-GigabitEthernet0/0/0]dis acl 3999
Advanced ACL out_icmp 3999, 1 rule
Acl's step is 5
 rule 10 deny icmp source 114.114.114.114 0 destination 192.168.10.0 0.0.0.255 icmp-type echo-reply (15 matches)

 

 

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年12月16日11:20:26
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
OSPF综合练习 Route

OSPF综合练习

OSPF综合练习   IP地址规划 R5/R6/R7之间的网段为:172.16.146.X R5/R6/R2之间的网段为:172.16.100.X 所有路由器都有一个Loopbacck 0接...
IS-IS链路状态路由协议 Route

IS-IS链路状态路由协议

IS-IS链路状态路由协议   IS-IS的由来 IS-IS是国际标准组织ISO为OSI中的无连接网络协议CLNP设计的一种动态路由协议。 现网使用TCP/IP协议,为了提供对IP路由的支持...
路由引入 Route

路由引入

路由引入 什么情况下需要路由引入 不同的路由协议需要互相学习到对方的路由信息 外部路由协议的优先级全都按照OSPF外部路由优先级150计算   情况有很多种 单点单向重分发 单点双向重分发 ...
OSPF其它特性 Route

OSPF其它特性

OSPF其它特性 只要有5类 LSA或7类 LSA产生就会产生LSA 静默接口/被动接口 启用找接口,PC机不会收到hello包了,不收到LSA报文了 ospf silent-interface g0...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: