访问控制列表(ACL)


前言

前面我们学习了很多关于网络如何连接和通信的知识,今天来学习在网络连通环境基础上来进行相应的限制

因为在实际环境中网络管理员经常会面临左右为难的局面,如必须拒绝那些不希望的访问连接,同时又要允许正常的访问连接,以及连接里面可以有更加细化的限制

接下来要讲的ACL可以提供基本的通信流量过滤能力,从而满足上面的需求,解决实际工作中的问题


一、ACL概述

访问控制列表(Access Control List,ALT)是应用在路由器接口的指令列表(即规则),用来告诉路由器,哪些数据包可以接受,哪些数据包需要拒绝

访问控制列表(ACL)
其基本原理为:

ACL使用包过滤技术,在路由器上读取OSI七层模型的第三次及第四层包头中的信息,如源地址、目的地址、源端口、目的端口

根据预先定义好的规则对包进行过滤,从而达到访问控制的目的

  • ACL通过在路由器接口处控制是转发还是丢弃数据包来过滤通信流量
  • 路由器根据ACL中指定的条件来检测通过路由器的数据包,从而决定是转发还是丢弃该数据包

二、工作原理

ACL是一组规则的集合,它应用在路由器的某个接口上,且应用到接口的方向与数据方向有关

对路由器而言,ACL有两个方向
访问控制列表(ACL)

  • 出:已经过路由器的处理,正离开路由器接口的数据包
  • 入:已到达路由器接口的数据包,将被路由器处理

如果对接口应用了ACL,也就是说该接口应用了一组规则,那么路由器将对数据包应用该组规则进行顺序检查
访问控制列表(ACL)

  1. 如果匹配第一条规则,则不再往下检查,路由器将决定允许该数据包通过或拒绝通过
  2. 如不匹配第一条,则依次往下检查,直到有任意一条规则匹配,路由器才决定允许该数据包通过或拒绝通过
  3. 如果没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包
    由此可见,数据包要么被允许,要么被拒绝
    根据以上的检查规则可知,在ACL中,各规则的放置顺序很重要,一旦找到了某一匹配规则,就结束比较过程,不再检查之后的其他规则

隐含的拒绝(过滤):只放行匹配的,其他全部拒绝

应用规则

  1. 一个接口的同一个方向,只能调用一个ACL
  2. 一个ACL里面可以有多个规则,按照规则ID从小到大排序,从上往下依次执行
  3. 数据包一但被某规则匹配,就不再向下匹配
  4. 用来做数据包访问控制时,默认隐含放过所有(华为设备)

三、ACL类型

  1. 基本ACL(2000~2999):只能匹配源IP地址
  2. 高级ACL(3000~3999):可以匹配源IP、目标IP、源端口、目标端口等三层和四层的字段
  3. 根据数据包的源MAC地址、目标MAC地址、802.1p优先级、二层协议类型等二层信息指定规则(一般用不到,了解仅可)

应用原则:

  • 基本ACL尽量用在靠近目的点
  • 高级ACL尽量用在靠近源的地方(可以保护带宽和其他资源)

四、ACL相关命令(eNSP)

1、基本ACL配置命令

[Huawei] acl number 2000 ###创建acl 2000
[Huawei-acl-basic-2000] rule 5 deny source 192.168.1.1 0 ###拒绝源地址为192.168.10.1的流量, 0代表仅此一台, 5是这条规则的序号(可不加)
[Huawei] interface GigabitEthernet 0/0/1
[Huawei-GiqabitEthernet0/0/1]ip address 192.168.2.254 24
[Huawei-GiqabitEthernet0/0/1]traffic-filter outbound acl 2000 ###接口出方向调用acl
outbound代表出方向, inbound代表进入方向
[Huawei-GigabitEthernet0/0/1] undo sh
[Huawei] acl number 2001 ##进入acl 2000列表
[Huawei-acl-basic-2001] rule permit source 192.168.1.0 0.0.0.255 ###permit代表允许, source代表来源,掩码部分为反掩码
[Huawei-acl-basic-2001] rule deny source any ##拒绝所有访问, any代表所有0.0.0.0 255.255.255.255 或者 rule deny
[Huawei]interface GigabitEthernet 0/0/1 ###进入出口接口
[Huawei-GiqabitEtherneto/0/1] ip address 192.168.2.254 24
[Huawei-GiqabitEtherneto/0/1] traffic-filter outbound acl 2001

2、高级ACL配置命令

[Huawei] acl nmuber 3000 ##拒绝tcp为高级控制,所以3000起
[Huawei-acl-adv-3000] rule deny icmp source 192.168.1.0 0.0.0.255 destination 192.168.3.1 0 ##拒绝Ping
[Huawei-acl-adv-3000] rule permit tcp source 192.168.1.3 0 destination 192.168.3.1 0 destination-port eq 80 ###destination代表目的地地址, destination-port代表目的端口号, 80可用www代替
[Huawei-acl-adv-3000] rule deny tcp source any destination 192.168.3.1 0 destination-port eq 80
[Huawei-acl-adv-3000] rule deny tcp source 192.168.10.0 0.0.0.255 destination 12.0.0.2 destination-port eq 21 ###拒绝源地址192.168.10.0网段访问FTP服务器12.0.0.2
[Huawei-acl-adv-3000]dis this ##查看当前ACL配置是否配置成功
[Huawei]interface g0/0/0
[Huawei-GigabitEtherneto/0/1]ip address 192.168.2.254 24
[Huawei-GigabitEtherneto/0/0]traffic-filter inbound acl 3000 ##在接口入方向应用acl
[Huawei-GigabitEtherneto/0/1] undo traffic-filter inbound ##在接口上取消acl的应用
[Huawei] display acl 3000 ##显示ac1配置
[Huawei] acl nmuber 3000
[Huawei-acl-adv-3000]dis this ##查看规则序号
[Huawei-acl-adv-3000] undo rule 5 ##删除一条acl语句
[Huawei] undo acl number 3000 ##删除整个ACL

五、eNSP实验

如下图所示,有需要实现的条件,现在我们来一一实现
访问控制列表(ACL)

1、仅允许PC1访问192.168.2.0/24网络

访问控制列表(ACL)

访问控制列表(ACL)
不要忘记了配置PC哦

访问控制列表(ACL)
访问控制列表(ACL)
访问控制列表(ACL)

再来PING测试一下

访问控制列表(ACL)

PC1可以PING通,这个时候再来测试一下ACL是否生效,可以再PING一下PC就知道了

访问控制列表(ACL)
OK,完成了仅允许PC1访问192.168.2.0/24网络这个ACL

2、禁止192.168.1.0/24网络ping Web服务器

访问控制列表(ACL)

配置服务器

访问控制列表(ACL)

用PC1和PC2 ping服务器,若不能到达则实验目的达成

访问控制列表(ACL)

注:要是有好奇的同学试了试,为什么PC3也不能连通客户端呢?
你可以回过头去看看我们完成的第一个实验目的

3、仅允许Client1访问WEB服务器的www服务

配置路由器R1,此时注意配置acl时有端口号配置,所以需要用高级acl功能
访问控制列表(ACL)

到了最后的测试环节:配置服务器和客户端,获取文件

访问控制列表(ACL)

访问控制列表(ACL)

访问控制列表(ACL)

访问控制列表(ACL)

终于完成了!!!!