首页 > 其他分享 >考古笔记14:访问控制列表ACL详解(真的很详细)

考古笔记14:访问控制列表ACL详解(真的很详细)

时间:2023-06-06 14:01:04浏览次数:38  
标签:14 seq 访问控制 192.168 ACL SW1 icmp config

访问控制列表

 ACL(Access Control List,访问控制列表)

         技术从来都是一把双刃剑,网络应用与互联网的普及在大幅提高企业的生产经营效率的同时,也带来了诸如数据的安全性,员工利用互联网做与工作不相干事等负面影响。如何将一个网络有效的管理起来,尽可能的降低网络所带来的负面影响就成了摆在网络管理员面前的一个重要课题。(听起来是不是防火墙干的事?实际上是的,早期的防火墙是包过滤防火墙实际上就是利用ACL技术实现的,但这种防火墙有很大的局限性所以短暂的流行后就被后来的基于会话状态的防火墙替了;基于会话状态防火墙能识别会话并进行更加智能的ACL配置;扯远了~)

         使用网络层的访问限制控制技术――访问控制列表(下文简称ACL)。可以在一定程度上解决网络安全问题。那么,什么是ACL呢?ACL是种什么样的技术,它能做什么,又存在一些什么样的局限性呢?

 ACL的基本原理、功能与局限性

         网络中常说的ACL是Cisco IOS所提供的一种访问控制技术,初期仅在路由器上支持,近些年来已经扩展到三层交换机(在三层交换上配置ACL可以将策略应用到vlan上),部分最新的二层交换机如2950之类也开始提供ACL的支持,只不过支持的特性不是那么完善而已。

         在其它厂商的路由器或多层交换机上也提供类似的技术,不过名称和配置方式都可能有细微的差别。本文所有的配置实例均基于 Cisco IOS的ACL进行编写。

 基本原理:

         ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。

 功能

         网络中的节点资源节点和用户节点两大类,其中资源节点提供服务或数据,用户节点访问资源节点所提供的服务与数据。ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点所能具备的访问权限。

 配置ACL的基本原则:

         在实施ACL的过程中,应当遵循如下两个基本原则:

  • 最小特权原则:只给受控对象完成任务所必须的最小的权限
  • 最靠近受控对象原则:所有的网络层访问权限控制

 局限性:

         由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到end to end的权限控制目的,需要和系统级及应用级的访问权限控制结合使用(现在有很多应用防火墙来解决更高层的问题)。

         ACL的工作流程

         当路由器的进入方向的接口收到一个分组的时候,首先检查它是否是可路由的,如果不可路由(比如并非是发往本路由的分组),则直接丢弃。如果可路由。

         接下来判断进入方向的接口是否配置了ACL,如果没有配置进入方向的ACL,则直接查询路由表,然后根据路由表中找到的端口准备往外转发;如果配置了进入方向的ACL则检查指令组是否允许该分组通过,不允许则丢弃,允许则查询路由表,选择外出接口准备往外转发,从这里可以看出入站的ACL检查是在查询路由表之前执行的。

         外出接口选择好之后,再检查外出接口上有没有配置ACL,如果配置了ACL则检查ACL指令组是否允许,没有配置ACL则直接转发。

 "ACL指令组"是逐条执行的,在逐条执行的过程中,只要发现有一条匹配,则使用那一条规定动作确定允许或拒绝(比如执行第一条的时候就匹配了,那么就使用第一条规定的动作允许或拒绝,后面的语句就不会被执行了),如果所有指令都不匹配,默认的动作是拒绝。

这里用用一张图,帮助更好的理解整个过程:

考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL

考古笔记14:访问控制列表ACL详解(真的很详细)_ACL_02

考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL_03

上面这三张图是我网上找到的,很清楚地描述了ACL的工作过程;忘记是哪里找来的了,不过还是感谢下原创此图的大佬。

标准与扩展ACL

标准访问控制列表只针对源地址进行过滤,标准访问控制列表建议配在接近于目标的位置,因为如果配置在接近于源的目标的位置,那么发出来的报文就会立刻被deny掉了,而且数据包不仅发送不到目标位置,甚至连接近于源的目标位置以外的其他的路由器也发送不到了,都不可以访问了。所以标准访问控制列表一定要放在接近于目标的位置。

扩展访问控制列表建议配置在接近于源的位置,如果配置在接近于目标位置或其他位置的路由器上面,因为产生的结构都是一样的,所以会浪费大量的带宽,而如果配置在接近于源的的目标位置就不会出现这种情况,所以,扩展访问控制列表一定要配置在接近于源的目标位置。

标准ACL: access-list-number编号1~99之间的整数,只针对源地址进行过滤。

扩展ACL: access-list-number编号100~199之间的整数,可以同时使用源地址和目标地址作为过滤条件,还可以针对不同的协议、协议的特征、端口号、时间范围等过滤。可以更加细微的控制通信量。

访问控制列表流量记录

网络管理员就是要能够合理的管理公司的网络,俗话说知己知彼方能百战百胜,有效的记录ACL流量信息可以第一时间的了解网络流量和病*毒的传播方式。如何保存访问控制列表的流量信息,方法就是在扩展ACL规则最后加上LOG命令。

小提示:如果在扩展ACL最后加上log-input,则不仅会保存流量信息,还会将数据包通过的端口信息也进行保存。使用LOG记录了满足访问控制列表规则的数据流量就可以完整的查询公司网络哪个地方流量大,哪个地方有病*毒了。简单的一句命令就完成了很多专业工具才能完成的工作。

版本差异

Cisco不同的IOS版本ACL所能使用的命令或者配置方式是有差别的;有个简单的判断方法,如果使用"show access-lists"看不到每个条目前面的行号,就说明当前路由器的IOS版本不支持新的(更加方便好用)的配置方法;主要差异有:

         ——通过行号删除acl条目

          Cisco IOS 12.0以后的版本支持

         ——为acl设定名称(标准命名ACL)

         标准命名ACL与Cisco IOS 11.2以后的版本支持

         ACL配置步骤

        ——创建ACL

        ——在接口下调用

        无论标准和扩展都一样

         配置ACL的注意事项:

         (1)每个ACL表的末尾都会隐含”deny”语句, 从而丢弃所有不符合规则的包;

         (2)源和目的的地址位掩码配置中,“0”代表精确匹配,”1”代表忽略该位.如允许来自192.168.1.0/24网段机器的访问,则其掩码是0.0.0.255;而针对具体主机的掩码,则是0.0.0.0;

         (3) 具有严格限制条件的语句应放在访问列表所有语句的最上面;

         (4)系统是按照顺序一条条去匹配ACL的规则,当发现匹配的规则后,它将忽略掉后面的语句;而如果发现ACL里所有语句均不匹配,那么默认将丢掉该数据包;

         (5).ACL所包含的规则在精不在多;配置具体规则时不光需要考虑该规则是否影响数据包传送,还必须考虑数据包能否返回;

         (6)ACL一旦绑定到具体端口上时,即可生效,所以以后每次对该ACL表做的任何更改,也就会立即生效;如果配置错误的规则就会对整个网络访问产生影响;

         (7)同一接口可以绑定多个ACL,此时需要给每个ACL设置相应的优先级;

         (8)系统是按照顺序一条条去匹配ACL的规则,当发现匹配的规则后,它将忽略掉后面的语句;而如果发现ACL里所有语句均不匹配,那么默认将丢掉该数据包.也就是说,每个ACL的末尾都会隐含一"deny all"的规则.这一点在配置时需要非常注意,并且顺序很重要、顺序很重要、顺序很重要.


动手实验

一 基础连通行设定

原理部分讲完,接下来我们开始实践部分;首先完成下图所示拓扑的基本设定。

考古笔记14:访问控制列表ACL详解(真的很详细)_访问控制列表_04

这部分的配置非常简单,如果不是很清楚可以翻翻看前面的文章。

我这里就直接给出配置的结果;过程就省略了:

考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL_05

二 配置目标1-标准访问控制列表

考古笔记14:访问控制列表ACL详解(真的很详细)_ACL_06

在正式配置前我们先熟悉下ACL的配置命令:

SW1(config)#ip access-list ?
  extended    Extended Access List
  log-update  Control access list log updates
  logging     Control access list logging
  resequence  Resequence Access List
  standard    Standard Access List

SW1(config)#ip access-list standard ?
  <1-99>       Standard IP access-list number
  <1300-1999>  Standard IP access-list number (expanded range)
  WORD         Access-list name


SW1(config)#ip access-list extended ?
  <100-199>    Extended IP access-list number
  <2000-2699>  Extended IP access-list number (expanded range)
  WORD         Access-list name

SW1(config)#

SW1(config)#ip access-list standard deny-pc1-to-pc4
SW1(config-std-nacl)#?
Standard Access List configuration commands:
  <1-2147483647>  Sequence Number
  default         Set a command to its defaults
  deny            Specify packets to reject
  exit            Exit from access-list configuration mode
  no              Negate a command or set its defaults
  permit          Specify packets to forward
  remark          Access list entry comment

SW1(config-std-nacl)#deny ?
  Hostname or A.B.C.D  Address to match
  any                  Any source host
  host                 A single host address

SW1(config-std-nacl)#deny host 192.168.10.1 ?
  log  Log matches against this entry
  <cr>

SW1(config-std-nacl)#deny host 192.168.10.1
SW1(config-std-nacl)#permit ?
  Hostname or A.B.C.D  Address to match
  any                  Any source host
  host                 A single host address

SW1(config-std-nacl)#permit any ?
  log  Log matches against this entry
  <cr>

SW1(config-std-nacl)#permit any
SW1(config-std-nacl)#exit
SW1(config)#

>>我的版本支持Access-list Name

有些版本的IOS可能不支持直接定义Access-list Name;灵活变通即可。

标准ACL配置

##定义Access-List
SW1(config)#ip access-list standard deny-pc1-to-pc4
SW1(config-std-nacl)#deny host 192.168.10.1
SW1(config-std-nacl)#permit any
SW1(config-std-nacl)#exit
SW1(config)#

##定义需要到的位置和方向
##我们这里应用到vlan 40的入方向(这里有个坑可以仔细想一想)
入-vlan 10-出              入-vlan 40-出
##是不是认为只有定义在vlan 40的入方向才能既保证效果也不影响pc1访问其他设备
SW1(config)#inter vlan 40
SW1(config-if)#ip access-group deny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#end
SW1#wr


##查看Access-List
SW1#show access-lists
Standard IP access list deny-pc1-to-pc4
    10 deny   192.168.10.1
    20 permit any 
SW1#

测试pc1 ping pc4

PC-1> ping 192.168.40.1
192.168.40.1 icmp_seq=1 timeout
192.168.40.1 icmp_seq=2 timeout
84 bytes from 192.168.40.1 icmp_seq=3 ttl=63 time=30.533 ms
84 bytes from 192.168.40.1 icmp_seq=4 ttl=63 time=31.084 ms
84 bytes from 192.168.40.1 icmp_seq=5 ttl=63 time=29.864 ms

PC-1>


##重启下交换机,再测试
PC-1> ping 192.168.40.1
192.168.40.1 icmp_seq=1 timeout
84 bytes from 192.168.40.1 icmp_seq=2 ttl=63 time=30.043 ms
84 bytes from 192.168.40.1 icmp_seq=3 ttl=63 time=30.197 ms
84 bytes from 192.168.40.1 icmp_seq=4 ttl=63 time=30.263 ms
84 bytes from 192.168.40.1 icmp_seq=5 ttl=63 time=30.022 ms

PC-1>
还是可以访问,这就奇怪了吧!!!

##PC4测试ping PC1
PC-4> ping 192.168.10.1
84 bytes from 192.168.10.1 icmp_seq=1 ttl=63 time=30.384 ms
84 bytes from 192.168.10.1 icmp_seq=2 ttl=63 time=30.507 ms
84 bytes from 192.168.10.1 icmp_seq=3 ttl=63 time=29.720 ms
84 bytes from 192.168.10.1 icmp_seq=4 ttl=63 time=30.078 ms
84 bytes from 192.168.10.1 icmp_seq=5 ttl=63 time=31.067 ms

PC-4>

还是可以访问,这就奇怪了吧!!!

SW1#show access-lists
Standard IP access list deny-pc1-to-pc4
    10 deny   192.168.10.1
    20 permit any (5 matches)
SW1#

##在vlan 40的出方向加上限制
SW1(config)#inter vlan 40
SW1(config-if)#ip access-group deny-pc1-to-pc4 out
SW1(config-if)#exit
SW1(config)#end
SW1#wr
##可以看到通讯被限制了
PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=14.963 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=15.001 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=14.942 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=15.095 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=15.208 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>

##删除在vlan 40的入方向限制
SW1(config)#inter vlan 40
SW1(config-if)#no ip access-group deny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#end
SW1#wr

PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=29.917 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=15.080 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=15.177 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=15.391 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=14.932 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>
##PC4测试ping PC1
PC-4> ping 192.168.10.1
192.168.10.1 icmp_seq=1 timeout
192.168.10.1 icmp_seq=2 timeout
192.168.10.1 icmp_seq=3 timeout
192.168.10.1 icmp_seq=4 timeout
192.168.10.1 icmp_seq=5 timeout

PC-4>

这样就不对了,限制范围被扩大。

TIPs:标准ACL不支持插入或删除一行操作,可以将现有ACL拷贝到记事本里修改,然后粘贴到命令行中


实验做到这里是时候总结下问题了:

1、应用到vlan的ACL的in和out有什么区别?怎么理解?

2、标准ACL中定义的地址是目标地址还是源地址?

只要弄清楚这两两个问题,那么我想大家对ACL的理解就可以更进一步了。 首先,我们先看第二个问题,这个比较好解释:

创建标准ACL语法:

Router(config)#access-list 1~99 { permit | deny } 源网段地址或网段

若源地址为主机,则在地址前面需要加“host”;若源地址为网段,则要在网段地址后面加反掩码,如/24的反掩码就是0.0.0.255。

这里大家应该就很清楚回答问题2了;对照我们实验中的设定

SW1(config-std-nacl)#deny host 192.168.10.1

实际上这个192.168.10.1代表的是源地址;也就是说,

a.如果这个地址出现在数据包的源地址栏,数据包将会被阻止;

b.如果这个地址出现在数据包的目标地址栏,数据包将不会被阻止。

然后,我们看下第一个问题;我们需要先把ACL应用的对象(对路由器来说就是端口,对交换机来说就是vlan,对应在我们的实验目标就是vlan 40)是一个闸门;

in和out就是对应的的详细解释可以理解为:

  1. in:我是vlan 40,数据从我这里(in)出去;(来自内部)
  2. out:我是vlan 40,数据从外面(out)进来;(来自外部) 这里有点绕,大家多想想哈!!为了理解我们画个图:

考古笔记14:访问控制列表ACL详解(真的很详细)_访问控制列表_07


过程的分析

考古笔记14:访问控制列表ACL详解(真的很详细)_扩展ACL_08


考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL_09

考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL_10


所以通过上面的实验我们可以看到标准的ACL似乎已经无法满足我们独特的需求;这时我们需要实验扩展的ACL。


三 配置目标2-扩展的访问控制列表

拓扑还是这样的拓扑

考古笔记14:访问控制列表ACL详解(真的很详细)_网络安全_11

在正式配置前我们还是先熟悉下扩展ACL的配置命令:

SW1(config)#ip access-list extended ?
  <100-199>    Extended IP access-list number
  <2000-2699>  Extended IP access-list number (expanded range)
  WORD         Access-list name

SW1(config)#ip access-list extended exdeny-pc1-to-pc4 ?
  <cr>

SW1(config)#ip access-list extended exdeny-pc1-to-pc4
SW1(config-ext-nacl)#?
Ext Access List configuration commands:
  <1-2147483647>  Sequence Number
  default         Set a command to its defaults
  deny            Specify packets to reject
  dynamic         Specify a DYNAMIC list of PERMITs or DENYs
  evaluate        Evaluate an access list
  exit            Exit from access-list configuration mode
  no              Negate a command or set its defaults
  permit          Specify packets to forward
  remark          Access list entry comment

SW1(config-ext-nacl)#deny ?
  <0-255>  An IP protocol number
  ahp      Authentication Header Protocol
  eigrp    Cisco's EIGRP routing protocol
  esp      Encapsulation Security Payload
  gre      Cisco's GRE tunneling
  icmp     Internet Control Message Protocol
  igmp     Internet Gateway Message Protocol
  ip       Any Internet Protocol
  ipinip   IP in IP tunneling
  nos      KA9Q NOS compatible IP over IP tunneling
  ospf     OSPF routing protocol
  pcp      Payload Compression Protocol
  pim      Protocol Independent Multicast
  tcp      Transmission Control Protocol
  udp      User Datagram Protocol

SW1(config-ext-nacl)#
Router(config)#access-list access-list-number {deny|permit|remark} protocol source source-wildcard [operator operand] [port port-name or name] destination destination-wildcard [operator operand] [port port-name or name] [established]
 
/*
* "access-list-number"是扩展ACL编号,范围从100-199。
*
* {deny|permit|remark} 是这条ACL条目执行的操作,拒绝|允许|注释,
* 其中的"remark"是添加注释,相当于程序设计中的注释语句。
*
* "protocol"代表协议,可以用具体的协议名称代替,比如TCP、UDP、ICMP、IP等。
*
* "source source-wildcard",表示源地址以及通配符掩码。
*
* "destination destination-wildcard",表示目的地址以及通配符掩码。
*
* "[port port-name or name]"表示端口号或名称,输入telnet和23的效果是一样的。
*
* "[established]"在后面的"扩展ACL中的established"中介绍。
*/


扩展的ACL配置

首先我们删除之前的ACL定义和in /out设定

SW1#show run
……
!
interface Vlan40
 ip address 192.168.40.254 255.255.255.0
 ip access-group deny-pc1-to-pc4 in
!
……

SW1#show access-lists
Standard IP access list deny-pc1-to-pc4
    10 deny   192.168.10.1 (20 matches)
    20 permit any (25 matches)
SW1#


SW1#conf t
SW1(config)#inter vlan 40
SW1(config-if)#no ip access-group deny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#no ip access-list st
SW1(config)#no ip access-list standard deny-pc1-to-pc4
SW1(config)#end
SW1#wr
Building configuration...
[OK]
SW1#

此时务必确认下pc1-pc4以及pc4-pc1互相都能ping通。

1.定义ACL

##定义ACL
SW1#conf t
SW1(config)#ip access-list extended exdeny-pc1-to-pc4
SW1(config-ext-nacl)#deny icmp host 192.168.10.1 host 192.168.40.1
SW1(config-ext-nacl)#permit ip any any
SW1(config-ext-nacl)#exit
SW1(config)#

2.定义需要到的位置和方向

##定义需要到的位置和方向
##这次我们应用到vlan 40的入方向
SW1(config)#inter vlan 40
SW1(config-if)#ip access-group exdeny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#end
SW1#wr

3.测试PC-1和PC-4的连通性

##测试pc1 ping pc4
PC-1> ping 192.168.40.1
192.168.40.1 icmp_seq=1 timeout
192.168.40.1 icmp_seq=2 timeout
84 bytes from 192.168.40.1 icmp_seq=3 ttl=63 time=30.533 ms
84 bytes from 192.168.40.1 icmp_seq=4 ttl=63 time=31.084 ms
84 bytes from 192.168.40.1 icmp_seq=5 ttl=63 time=29.864 ms
PC-1>

##PC4测试ping PC1
PC-4> ping 192.168.10.1
84 bytes from 192.168.10.1 icmp_seq=1 ttl=63 time=30.384 ms
84 bytes from 192.168.10.1 icmp_seq=2 ttl=63 time=30.507 ms
84 bytes from 192.168.10.1 icmp_seq=3 ttl=63 time=29.720 ms
84 bytes from 192.168.10.1 icmp_seq=4 ttl=63 time=30.078 ms
84 bytes from 192.168.10.1 icmp_seq=5 ttl=63 time=31.067 ms
PC-4>

仔细想想整个ICMP的通讯过程;是不是发现还是方向问题我们这样的话我们依旧限定的是in方向源地址是192.168.10.1的包只是这次加了协议限定为ICMP而已;所以不影响两者的通讯。


4.修改限制方向

##在vlan 40的in方向删除限制并在out方向加上限制
SW1(config)#inter vlan 40
SW1(config-if)#no ip access-group exdeny-pc1-to-pc4 in
SW1(config-if)#ip access-group exdeny-pc1-to-pc4 out
SW1(config-if)#exit
SW1(config)#end
SW1#wr

5.再次测试PC-1和PC-4的连通性

##测试pc1 ping pc4
PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=15.002 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=15.471 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=61.282 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=15.201 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=14.814 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>



##PC4测试ping PC1
PC-4> ping 192.168.10.1
192.168.10.1 icmp_seq=1 timeout
192.168.10.1 icmp_seq=2 timeout
192.168.10.1 icmp_seq=3 timeout
192.168.10.1 icmp_seq=4 timeout
192.168.10.1 icmp_seq=5 timeout

PC-4>

可以看到这样还是不对,限制范围还是被扩大;我们的目的还是没有达到呢。

整理下icmp的通讯过程,这其实也是合理的;但是我们的目标没有实现;继续想办法。走到现在只有一个问题:pc4在ping pc1的的过程中,pc的回应包被丢弃了。

但是大家仔细想一想这种场景的要求对于包过滤机制的ACL需要更进一步的拆包匹配关键值。

6.调整配置参数

SW1(config-ext-nacl)#deny icmp host 192.168.10.12 host 192.168.40.1 ?
  <0-255>                      ICMP message type
  administratively-prohibited  Administratively prohibited
  alternate-address            Alternate address
  conversion-error             Datagram conversion
  dod-host-prohibited          Host prohibited
  dod-net-prohibited           Net prohibited
  dscp                         Match packets with given dscp value
  echo                         Echo (ping)
  echo-reply                   Echo reply
  fragments                    Check non-initial fragments
  general-parameter-problem    Parameter problem
  host-isolated                Host isolated
  host-precedence-unreachable  Host unreachable for precedence
  host-redirect                Host redirect
  host-tos-redirect            Host redirect for TOS
  host-tos-unreachable         Host unreachable for TOS
  host-unknown                 Host unknown
  host-unreachable             Host unreachable
  information-reply            Information replies
  information-request          Information requests
  log                          Log matches against this entry
  log-input                    Log matches against this entry, including input
                               interface
  mask-reply                   Mask replies
  mask-request                 Mask requests
  mobile-redirect              Mobile host redirect
  net-redirect                 Network redirect
  net-tos-redirect             Net redirect for TOS
  net-tos-unreachable          Network unreachable for TOS
  net-unreachable              Net unreachable
  network-unknown              Network unknown
  no-room-for-option           Parameter required but no room
  option                       Match packets with given IP Options value
  option-missing               Parameter required but not present
  packet-too-big               Fragmentation needed and DF set
  parameter-problem            All parameter problems
  port-unreachable             Port unreachable
  precedence                   Match packets with given precedence value
  precedence-unreachable       Precedence cutoff
  protocol-unreachable         Protocol unreachable
  reassembly-timeout           Reassembly timeout
  redirect                     All redirects
  router-advertisement         Router discovery advertisements
  router-solicitation          Router discovery solicitations
  source-quench                Source quenches
  source-route-failed          Source route failed
  time-exceeded                All time exceededs
  time-range                   Specify a time-range
  timestamp-reply              Timestamp replies
  timestamp-request            Timestamp requests
  tos                          Match packets with given TOS value
  traceroute                   Traceroute
  ttl-exceeded                 TTL exceeded
  unreachable                  All unreachables
  <cr>

SW1(config-ext-nacl)#





##echo-reply可能是有用的参数
##重新定义ACL
SW1#conf t
SW1(config)#ip access-list extended exdeny-pc1-to-pc4
SW1(config-ext-nacl)#no deny icmp host 192.168.10.1 host 192.168.40.1
SW1(config-ext-nacl)#no permit ip any any
SW1(config-ext-nacl)#permit icmp host 192.168.10.1 host 192.168.40.1 echo-reply
SW1(config-ext-nacl)#deny icmp host 192.168.10.1 host 192.168.40.1
SW1(config-ext-nacl)#permit ip any any
SW1(config-ext-nacl)#exit
SW1(config)#wr
SW1#show access-lists
Extended IP access list exdeny-pc1-to-pc4
    10 permit icmp host 192.168.10.1 host 192.168.40.1 echo-reply
    20 deny icmp host 192.168.10.1 host 192.168.40.1
    30 permit ip any any
SW1#

7.再次测试PC-1和PC-4的连通性

##测试pc1 ping pc4
PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=45.049 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=14.865 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=15.006 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=14.758 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=15.107 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>
##PC4测试ping PC1
PC-4> ping 192.168.10.1
84 bytes from 192.168.10.1 icmp_seq=1 ttl=63 time=30.112 ms
84 bytes from 192.168.10.1 icmp_seq=2 ttl=63 time=30.174 ms
84 bytes from 192.168.10.1 icmp_seq=3 ttl=63 time=29.724 ms
84 bytes from 192.168.10.1 icmp_seq=4 ttl=63 time=30.044 ms
84 bytes from 192.168.10.1 icmp_seq=5 ttl=63 time=30.234 ms

PC-4>

OK,目标达成!!!

实验做到这里我们再说个重点:

ACL只对穿越的数据包有作用;没有穿越的数据包不会起作用的。

例如:

PC1测试ping vlan 40的网关地址

##PC1测试ping vlan 40的网关地址

PC-1> ping 192.168.40.254
84 bytes from 192.168.40.254 icmp_seq=1 ttl=255 time=14.927 ms
84 bytes from 192.168.40.254 icmp_seq=2 ttl=255 time=14.960 ms
84 bytes from 192.168.40.254 icmp_seq=3 ttl=255 time=15.118 ms
84 bytes from 192.168.40.254 icmp_seq=4 ttl=255 time=14.768 ms
84 bytes from 192.168.40.254 icmp_seq=5 ttl=255 time=30.419 ms

PC-1>

这里还是可以通的,因为数据包没有穿过vlan 40。


好了,以上就是本篇文章的全部内容;喜欢的朋友可以收藏加点赞;谢谢!

本文作者:夏明亮

更新于:2023/6/6




标签:14,seq,访问控制,192.168,ACL,SW1,icmp,config
From: https://blog.51cto.com/mlxia/6424252

相关文章

  • 《深度剖析CPython解释器》19. Python类机制的深度解析(第三部分): 自定义类的底层实
    https://www.cnblogs.com/traditional/p/13593927.html楔子Python除了给我提供了很多的类之外,还支持我们定义属于自己的类,那么Python底层是如何做的呢?我们下面就来看看。自定义class老规矩,如果想知道底层是怎么做的,那么就必须要通过观察字节码来实现。classGirl:nam......
  • flinkv1.14启动过程分析
    今天阅读了一下flinkv1.14的代码,首先分析一下flink启动的过程。首先分2种,一种是SessionClusterEntrypoint,一种是JobClusterEntrypoint。分别对应session模式和per-job模式。session模式就是一次启动,可以执行多个job,执行完job还有后台进程在等待用户提交新的job。per-job模式......
  • 利用PImpl在C++14中优雅调用C++17方法
    诉求你的工程由C++14写成,某天你看中了一个功能强大的三方库,一切都好除了该库仅支持C++17编译,对于比较复杂的三方库使用C++14进行重构工作量太大,有没有优雅的办法?实现历史总是惊人的相似,为了解决这一问题前人发明了PImpl编程方法用于隐藏class的实现细节,头文件中仅声明抽象class......
  • Redis系列14:使用List实现消息队列
    Redis系列1:深刻理解高性能Redis的本质Redis系列2:数据持久化提高可用性Redis系列3:高可用之主从架构Redis系列4:高可用之Sentinel(哨兵模式)Redis系列5:深入分析Cluster集群模式追求性能极致:Redis6.0的多线程模型追求性能极致:客户端缓存带来的革命Redis系列8:Bitmap实现亿万级......
  • hdfs中acl权限管理的简单实用
    1、背景在我们开发的过程中有这么一种场景,/projectA目录是hadoopdeploy用户创建的,他对这个目录有wrx权限,同时这个目录属于supergroup,在这个组中的用户也具有这个目录的wrx权限,对于其他人,不可访问这个目录。现在有这么一个特殊的用户root,我想root用户可以访问这个目录,在不修改......
  • Mysql 主从备份 Last_Errno: 1146 Last_Error: Error executing row event: 错误问题
    本人在做主从备份的时候发现了此问题! 1主数据库是已经把这个表删除了丛数据库也是没有备份这个表但是一直报这个错原因是bin-log日志有这个表 但是没记录到已经把这个表删除了 主从表同步实际从库是根据主库的bin-log二进制的SQL进行执行的 这是Mysql的一个BUG1......
  • ORACLE 入门系列(3)
     pl/sql提供了可编辑数据的功能,需要在select语句后加个forupdate,执行后点击锁图标就可以开始编辑数据了。数据库字符串操作,oracle和mysql独有一个相同的字符串函数INSTR,如图。这个函数还是很有作用的。......
  • 完整支持Oracle PL/SQL,星环科技KunDB高兼容性实现低成本国产化替代
    从中兴、华为等一系列高新科技企业被美国制裁,到俄乌冲突事件爆发后,西方各国相继宣布制裁俄罗斯,以Oracle、IBM、微软、SAP为代表的科技巨头暂停在俄服务,这一系列动作给我们敲响了加速国产化替代的警钟。数据库作为提供数据存储与处理能力的基础软件,是信息系统的基础、信息安全的基石......
  • [NOI2014]动物园
    [NOI2014]动物园这题看题目描述就知道一定是跟KMP扯上关系了。首先,如果不考虑长度超过\(\dfrac{1}{2}\)的限制的话,那么就很简单,每次求出一个新的\(ne_i\)时,如下图所示图中红色的表示目前对于前\(i\)个字符来说,最长公共前后缀为红色部分,因为两个红色部分中一定都有前后......
  • 第13、14章读书笔记
    第13章密码协议导论密码协议是由协议的各个参与者之间进行一系列的消息交换组成的。主要的挑战:协议的设计者或者实现者并不能控制协议的过程。13.1角色一般交互双方定为Alice和Bob,攻击者为Eve单个实体可充当协议中的任意一方角色13.2信任信任是我们与他人进行所有往来(......