ACL详解

目录

ACL

介绍

工作原理

ACL 的作用

ACL的匹配规则

ACL分类

ACL应用场景

基本ACL配置

配置确认

高级ACL配置

应用


ACL

全称:Access Control List

中文:访问控制列表

介绍

ACL 是网络当中策略的一种,策略:我们之前学的内容只够我们把网络连通,但网络不仅仅是能连通那么简单,在保证网络能连通的基础上,应该还有更高一层的追求,即对网络进行一些控制。比如说:对某些人的流量进行限制、对某些人的流量做一些保障、不允许某些人访问某些网站等的控制行为。这些都需要通过策略来完成。

ACL 就是众多策略中的一种,是最简单的一种工具,可以帮助我们实现一些基本的功能,比如说:实现 访问控制列表 的功能。

企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定。

ACL可以定义一系列不同的规则,设备根据这些规则对数据进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。

工作原理

某些设备配置了ACL,ACL中声明了一些匹配规则,通过这个规则来匹配一些流量,对匹配到的流量再执行相应的动作,即,提前设定好了怎么处理这些流量,比如说,是让它访问还是不让访问,从而就实现了控制的功能。

ACL 在很多设备上都是可以应用的,后面主要讲在路由器上的应用,讲述在路由器上怎么配置 ACL

ACL 的作用

  1. 访问控制:在路由器流量流入或留出的接口上,匹配流量,然后执行设定好的动作。

    • 配置位置:在路由器的接口上:把接口分为流量流入、流出的接口。

      现在如果用PC1访问PC3,那么对于左边的路由器来说:g 0/0/1 是流量流入的接口,g 0/0/0 是流量流出的接口。

      PC3回包的时候情况正好相反。

      所以:流入、流出是一个相对的概念,不是固定的。

    • 执行的动作

      只有两种:permit 允许 , deny

  2. 抓取感兴趣流:ACL可以和其他服务结合使用。ACL只负责匹配流量,其他服务则对匹配的流量执行对应的动作0

    • ACL的功能很单一 --- 只有两个动作,但ACL在某些场景下,有时候我们需要做策略并不是一刀切的,即,很干净利落就两种情况:允许、拒绝。就比如说做流控,不是说不让访问,可以访问,但要对流量、速度等做一些限制,遇到这样的情况,光靠这两种动作是无法实现这个功能的,所以,ACL在某些情况下只做第一件事 --- 只抓取流量,但不去做动作。动作交给其它的服务来做,即,和其它服务去打配合。ACL 和别的服务去结合 ,就可以实现更多更丰富的功能,而不仅仅是访问控制。

eg:

流控 --- 对流量进行控制和管理

QoS(服务质量技术)

ACL 和 QoS 配合:ACL负责抓取流量,QoS负责对流量进行相应的操作

后面只讲述 ACL 的第一个作用:访问控制

ACL的匹配规则

自上而下,逐一匹配,如果匹配上,则按照对应的动作执行,不再向下匹配。

  • 思科体系的设备:在ACL列表末尾隐含一条拒绝所有的规则

  • 华为体系的设备:在ACL列表末尾隐含一条允许所有的规则 —— 不准确

    • 实际上的默认规则:对于没有匹配上的不做处理,相当于允许。

  • 每个ACL可以包含多个规则,RTA根据规则来对数据流量进行过滤

ACL分类

思科 和 华为 不一样

华为:

分类编号范围参数
基本ACL2000-2999仅关注数据包中的源IP地址
高级ACL3000-3999不仅关注数据包中的源IP地址,还会关注数据包中的目标IP地址,以及协议和目标端口号
二层ACL4000-4999源MAC地址、目的MAC地址、以太帧协议类型等
用户自定义ACL————

后面只讲述前两种ACL:基本ACL、高级ACL

ACL应用场景

  • ACL可以通过定义规则来允许或拒绝流量的通过。

     

  • ACL可以根据需求来定义过滤的条件以及匹配条件后所执行的动作。

    (疑问? 感觉应该不能执行动作,只能抓取流量)

 

基本ACL配置

 

配置确认

高级ACL配置

应用

如下给出一个场景:我们会给出一些需求,然后利用ACL来完成这些需求。

如下搭建的网络已经实现了全网可达:

 

配ip

 

 

 

 

配静态路由

[r1]ip route-static 192.168.3.0 24 192.168.2.2
[r1]
[r2]ip route-static 192.168.1.0 24 192.168.2.1
[r2]

ping

 

需求一:通过 ACL 实现PC1可以访问PC3和PC4,但是PC2不行

基本ACL的位置原则:因为基本ACL只关注数据包中的源IP地址,故调用时尽可能的靠近目标,避免对其他地址访问造成误伤。

 

如图有4个接口可供选择,按照上面所说的原则,我们选择接口4。

下面就开始配置ACL:

  1. 创建一张ACL列表

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

    这样就创建了一张ACL表,但只是个空表,没有规则。

  2. 在ACL列表中添加规则

    按照我们的需求:实现 PC2 无法访问到 PC3,PC4,那么就有以下两种方案:

    1. 拒绝PC2,允许所有

    2. 允许PC1,拒绝所有

    那么这两种选择哪一种比较好呢?

    其实要取决于体系,如果是华为体系的话,就选择第一种,因为华为体系的设备在ACL列表末尾隐含一条允许所有的规则。如果是思科体系的话,就选择第二种。

    下面我们开始添加规则:

    1. 拒绝PC2

      [r2-acl-basic-2000]rule ?
        INTEGER<0-4294967294>  ID of ACL rule
        deny                   Specify matched packet deny
        permit                 Specify matched packet permit
      [r2-acl-basic-2000]rule deny ?
        fragment             Check fragment packet
        none-first-fragment  Check the subsequence fragment packet  
        source               Specify source address
        time-range           Specify a special time
        vpn-instance         Specify a VPN-Instance
        <cr>                 Please press ENTER to execute command 
      [r2-acl-basic-2000]rule deny source ?
        IP_ADDR<X.X.X.X>  Address of source
        any               Any source
      [r2-acl-basic-2000]rule deny source 192.168.1.3 0.0.0.0 ---- 0.0.0.0——通配符:0代表不可变,1代表可变,统配符中0和1可以穿插使用
      [r2-acl-basic-2000]

    2. 允许所有(可以不写,默认允许)

      [r2-acl-basic-2000]rule permit source any
      [r2-acl-basic-2000]

    另外还有其他有关命令:

    查看 acl 2000 列表的规则

    [r2]display acl 2000
    Basic ACL 2000, 2 rules
    Acl's step is 5
    rule 5 deny source 192.168.1.3 0 
    rule 10 permit 
    ​
    [r2]

    自定义序号添加规则

    华为默认以5为步调,自动添加ACL的规则的序号。其目的在于匹配规则是从上向下按顺序匹配,这样便于在其中插入规则。

    [r2-acl-basic-2000]rule 6 deny source 192.168.1.2 0.0.0.0
    [r2-acl-basic-2000]q
    [r2]display acl 2000
    Basic ACL 2000, 3 rules
    Acl's step is 5
    rule 5 deny source 192.168.1.3 0 
    rule 6 deny source 192.168.1.2 0 
    rule 10 permit 
    ​
    [r2]

    按照序号删除规则

    [r2-acl-basic-2000]undo rule 6
    [r2-acl-basic-2000]q
    [r2]display acl 2000
    Basic ACL 2000, 2 rules
    Acl's step is 5
    rule 5 deny source 192.168.1.3 0 
    rule 10 permit 
    ​
    [r2]

  3. 在接口上调用ACL列表

    [r2-GigabitEthernet0/0/1]traffic-filter ?
      inbound   Apply ACL to the inbound direction of the interface  —— 流入方向
      outbound  Apply ACL to the outbound direction of the interface —— 流出方向
    [r2-GigabitEthernet0/0/1]traffic-filter outbound acl 2000
    [r2-GigabitEthernet0/0/1]

注意:在一个接口的一个方向上,只能调用一张ACL列表。

另外还有其他有关命令:

查看应用

[r2-GigabitEthernet0/0/1]display traffic-filter applied-record 
-----------------------------------------------------------
Interface                   Direction  AppliedRecord       
-----------------------------------------------------------
GigabitEthernet0/0/1        outbound   acl 2000
-----------------------------------------------------------
[r2-GigabitEthernet0/0/1]

删除应用

[r2-GigabitEthernet0/0/1]undo traffic-filter outbound
[r2-GigabitEthernet0/0/1]display traffic-filter applied-record
-----------------------------------------------------------
Interface                   Direction  AppliedRecord       
-----------------------------------------------------------
-----------------------------------------------------------
[r2-GigabitEthernet0/0/1]

PC1 ping PC3

 

需求二:要求PC1可以访问PC3,但是不能访问PC4

高级ACL的位置原则:因为高级ACL是精准匹配,所以,在调用时应该尽可能靠近源目标,避免造成额外的链路资源浪费。所以我们选择接口1

下面就开始配置ACL:

  1. 创建一张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
   [r1]acl name aa ?
     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
     advance             Advanced acl
     basic               Basic acl
     link                Link acl
     match-order         Set ACL's match order
     <cr>                Please press ENTER to execute command 
   [r1]acl name aa 3000  ---- 通过重命名的方式创建ACL列表
   [r1-acl-adv-aa]
  1. 在ACL列表中添加规则

    1. 拒绝PC4

  [r1-acl-adv-aa]rule deny ip source 192.168.1.2 0.0.0.0 destination 192.168.3.3 0.0.0.0
  [r1-acl-adv-aa]
  1. 在接口上调用ACL列表

    [r1-GigabitEthernet0/0/1]traffic-filter inbound acl name aa ---- 通过重命名的方式调用ACL列表
    [r1-GigabitEthernet0/0/1]

PC1 ping PC3、PC1 ping PC4

需求三:要求PC1可以ping通R2,但是不能telnet R2

在需求二中我们使用了高级ACL,但我们只用到了源IP、目标IP,而协议和端口号没用到,本实验我们就使用一下

telnet(远程登录协议)

作用:可以远程登录、控制、配置网络设备。

  • 带外管理:不依靠网络,直接对设备进行管理

    • 通过console接口连接console线对设备进行控制

      网络工程人员一般都会随身携带一根console线,所有的路由器、交换机等设备上面都有一根专门的接口——console口,console连接console线,一端连接在设备的console口(水晶头),另外一端连接在电脑上(串线头)。设备和电脑之间就建立了联系,之后只需要在电脑上启动一些连接软件就可以对设备进行控制了。

       

       

       

       

       

    • 通过miniUSB接口连接MINIUSB线对设备进行控制

      原理和console线一样。

      既然原理一样,那为什么有console口了,还要设置miniUSB口呢?

      答:万一设备的console坏了,还可以使用miniUSB接口。

  • 带内管理:通过网络对设备进行管理

    • 通过telnet管理路由器

    • 通过web界面管理路由器

    • 通过SNMP协议进行设备管理

telnet进行管理的前提条件 1,登录设备和被登录设备之间网络必须是连通的 2,被登录设备必须开启telnet服务

telnet —— C/S架构

  • 被登录设备充当telnet服务器的角色,登录设备充当telnet客户端的角色。

  • TCP 23

    • SPort:随机

    • DPort:23

路由器开启telnet服务的方法:

1,在AAA中创建用户名

  1. 进入aaa服务

    作用:专门存储和管理用户名和密码的地方

    目的:设置账号、密码

    [r2]aaa  
    [r2-aaa]

  2. 创建用户名和密码

    [r2-aaa]local-user aa privilege level 15 password cipher 123456
    Info: Add a new user.  —— 用户名:aa,密码:123456,权限:15
    [r2-aaa] 

  3. 设置用户服务类型

    [r2-aaa]local-user aa service-type telnet
    [r2-aaa]

2,开启虚拟的登录端口

[r2]user-interface vty 0 4
[r2-ui-vty0-4]

认证

[r2-ui-vty0-4]authentication-mode aaa
[r2-ui-vty0-4]

telnet PC2

 

由于eNSP无法开启客户端telnet,所以报错。

那我们用真机作为客户端:

开启telnet客户端

 

 

真机可以telnet虚拟机中的设备,但虚拟机中设备的ip都是随便配的。

由于虚拟机中的设备都是用的虚拟网卡,所以可以telnet 127.0.0.1,但我们还要区分不同的设备,可以用串口号进行区分

 

 

 

我们也可以使用软件——SecureCRT

 

我们可以用路由器代替电脑(PC1)

The device is running!
​
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys pc1
[pc1]int g 0/0/0
[pc1-GigabitEthernet0/0/0]ip address 192.168.1.10 24
May  8 2023 18:17:14-08:00 pc1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP
 on the interface GigabitEthernet0/0/0 has entered the UP state. 
[pc1-GigabitEthernet0/0/0]q
[pc1]ip route-static 0.0.0.0 0 192.168.1.1
[pc1]ping 192.168.2.2
  PING 192.168.2.2: 56  data bytes, press CTRL_C to break
    Request time out
    Reply from 192.168.2.2: bytes=56 Sequence=2 ttl=254 time=70 ms
    Reply from 192.168.2.2: bytes=56 Sequence=3 ttl=254 time=50 ms
    Reply from 192.168.2.2: bytes=56 Sequence=4 ttl=254 time=50 ms
    Reply from 192.168.2.2: bytes=56 Sequence=5 ttl=254 time=30 ms
​
  --- 192.168.2.2 ping statistics ---
    5 packet(s) transmitted
    4 packet(s) received
    20.00% packet loss
    round-trip min/avg/max = 30/50/70 ms
​
[pc1]q
<pc1>telnet 192.168.2.2
  Press CTRL_] to quit telnet mode
  Trying 192.168.2.2 ...
  Connected to 192.168.2.2 ...
​
Login authentication
​
​
Username:aa
Password:
<r2>

下面开始配置acl:

[r1]acl 3001
[r1-acl-adv-3001]rule deny tcp source 192.168.1.10 0.0.0.0 destination 192.168.2
.2 0.0.0.0 destination-port  eq 23
[r1-acl-adv-3001]
[r1-GigabitEthernet0/0/0]undo traffic-filter inbound
[r1-GigabitEthernet0/0/0]traffic-filter inbound acl 3001
[r1-GigabitEthernet0/0/0]

由于r2有两个网关,所以可以telnet 192.168.3.1

所以还要把r2的另一个接口搞一下

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Consul ACL(Access Control List)是Consul中用于配置和管理访问控制的功能。引用中提到了配置ACL的步骤,包括在各节点启动时启用ACL,并在配置文件夹目录中添加acl.hcl文件。这个文件包含了ACL的配置信息,如启用ACL、默认策略、令牌持久化等。通过重新启动节点,ACL的配置就会生效。 引用中提到了根据规则文件生成策略的步骤。在Consul中,可以通过创建策略来定义ACL的规则。可以使用命令行工具consul acl policy create来创建策略,并指定策略的名称、规则文件和对应的权限令牌。这样就可以为不同的访问需求创建不同的策略。 另外,引用提到了AWS SSM参数引导和管理Consul ACL的实用程序。这个工具可以让您安全地从AWS SSM中存储ACL定义和令牌ID,并简化在多环境场景中引导ACL的过程。 所以,Consul ACL是用于配置和管理Consul中访问控制的功能,它可以通过配置文件和命令行工具来实现。同时,AWS SSM参数也提供了方便的管理工具来简化ACL的引导和管理过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [consul--基础--06--ACL](https://blog.csdn.net/zhou920786312/article/details/127738110)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [consulssm:通过AWS SSM参数引导和管理Consul ACL](https://download.csdn.net/download/weixin_42162171/18299398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我和程序有一个能跑就行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值