zoukankan      html  css  js  c++  java
  • ACL访问控制列表

    ACL概述

    • 访问控制列表ACL(Access Control List)是由一系列permit或deny语句组成的、有序规则的列表,它通过匹配报文的相关信息实现对报文的分类;
    • ACL本身只能够用于报文的匹配和区分,而无法实现对报文的过滤功能,针对ACL所匹配的报文的过滤功能,需要特定的机制来实现(例如在交换机的接口上使用traffic-filter命令调用ACL来进行报文过滤),ACL只是一个匹配用的工具;
    • ACL除了能够对报文进行匹配,还能够用于匹配路由;
    • ACL是一个使用非常广泛的基础性工具,能够被各种应用或命令所调用。

    一、ACL技术背景

    二、ACL的应用

    • 匹配IP流量(可基于源、目IP地址、协议类型、端口号等元素)
    • 在Traffic-filter中被调用
    • 在NAT中被调用
    • 在路由路由策略中被调用
    • 在IPSec VPN中被调用
    • 在防火墙的策略部署中被调用
    • 在QoS中被调用
    • 其他……

    三、ACL包过滤原理

    1)基于ACL的包过滤技术

    • 对进出的数据包逐个过滤,丢弃或允许通过
    • ACL应用于接口上,每个接口的出入双向分别过滤
    • 仅当数据包经过一个接口时,才能被此接口的此方向的ACL过滤

    2)入站包过滤工作流程

    3)出站包过滤工作流程

    四、通配符掩码

    1)概述

    • 通配符掩码(wildcard-mask)俗称 反掩码
    • 通配符掩码和IP地址结合使用,以描述一个地址范围

    • 通配符掩码和子网掩码相似,但含义不同
      • 0表示对应位须比较
      • 1表示对应位不比较

    2)特殊的通配符掩码

    192.168.1.1 0.0.0.0    =    192.168.1.1 0

    精确匹配192.168.1.1这个IP

    0.0.0.0 255.255.255.255    =    any

    匹配所有IP

    3)应用示例

    示例:匹配192.168.1.0/24这个子网中最后一个8位组为基数的IP地址,例如192.168.1.1、192.168.1.3、192.168.1.5等。

    五、ACL分类

    1)ACL的标识

    • 可以给访问控制列表指定名称,便于维护
    • 利用数字序号标识访问控制列表

    2)基本ACL

    • 基本访问控制列表只根据报文的源IP地址信息制定规则

    3)高级ACL

    • 高级访问控制列表根据报文的源IP地址、目的IP地址、IP承载的协议类型、协议特性等三、四层信息制定规则

    4)二层ACL

    • 二层ACL根据报文的源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息制定匹配规则

    5)ACL的步长

    • ACL 中的每条规则都有自己的编号,这个编号在该ACL中是唯一的。在创建规则时,可以手工为其指定一个编号,如未手工指定编号,则由系统为其自动分配一个编号。
    •  由于规则的编号可能影响规则匹配的顺序,因此当由系统自动分配编号时,为了方便后续在已有规则之前插入新的规则,系统通常会在相邻编号之间留下一定的空间,这个空间的大小(即相邻编号之间的差值)就称为ACL的步长。
    • 譬如,当步长为5 时,系统会将编号0、5、10、15……依次分配给新创建的规则。

     六、配置ACL包过滤

    1)ACL包过滤配置任务

    • 根据需要选择合适的ACL分类
    • 创建正确的规则
      • 设置匹配条件
      • 设置合适的动作(Permit/Deny)
    • 在路由器的接口上应用ACL,并指明过滤报文的方向(入站/出站)

    2)设置包过滤规则

    • 包过滤功能默认开启
    • 设置包过滤的默认过滤方式
      • 系统默认的过滤方式是permit,即允许未匹配上ACL规则的报文通过
      • 可以配置包过滤的缺省动作为deny

    [H3C] packet-filter default deny

    3)配置基本ACL

    • 配置基本ACL,并指定ACL序号
      • 基本IPv4 ACL的序号取值范围为2000~2999

    [H3C] acl basic acl-number

    • 定义规则
      • 制定要匹配的源IP地址范围
      • 指定动作是permit或deny

    [H3C-acl-basic-2000] rule [ rule-id ]{ deny | permit } [ counting | fragment | logging | source{ sour-addrsour-wildcard| any }|time-range time-range-name]

    4)配置高级ACL

    • 配置高级IPv4 ACL,并指定ACL序号
      • 高级IPv4 ACL的序号取值范围为3000~3999

    [H3C] acl advanced acl-number

    • 定义规则
      • 需要配置规则来匹配源IP地址、目的IP地址、IP承载的协议类型、协议端口号等信息
      • 指定动作是permit或deny

    [H3C-acl-adv-3000]rule [ rule-id ] { deny | permit } protocol [ destination { dest-addr dest-wildcard| any } | destination-port operator port1[ port2 ] established | fragment | source { sour-addr sour-wildcard | any } | source-port operator port1[ port2 ] |time-range time-range-name

    5)配置二层ACL

    • 配置二层ACL,并指定ACL序号
      • 二层ACL的序号取值范围为4000~4999

    [H3C] acl mac acl-number

    • 定义规则
      • 需要配置规则来匹配源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息
      • 指定动作是permit或拒绝deny

    [H3C-acl-ethernetframe-4000]rule [ rule-id ] { deny| permit } [ cos vlan-pri | dest-mac dest-addr dest-mask| lsap lsap-type lsap-type-mask | source-mac sour-addr source-mask| time-range time-range-name

    6)在接口上应用ACL

    • 将ACL应用到接口上,配置的ACL包过滤才能生效
    • 指明在接口上应用的方向是Outbound(数据离开路由器的方向)还是Inbound(数据进入路由器的方向)

    [H3C-Serial2/0 ] packet-filter { acl-number |name acl-name } { inbound| outbound}

    7)ACL包过滤显示与调试

    七、ACL包过滤的注意事项

    1)ACL规则的匹配顺序

    • 匹配顺序指ACL中规则的优先级
    • ACL支持两种匹配顺序:
      • 配置顺序(config):按照用户配置规则的先后顺序进行规则匹配
      • 自动排序(auto):按照“深度优先”的顺序进行规则匹配,即地址范围小的规则被优先进行匹配
    • 配置ACL的匹配顺序:

    [H3C] acl number acl-number[match-order {auto | config}]

    2)不同匹配顺序导致结果不同

    3)在网络中的正确位置配置ACL包过滤

    • 尽可能在靠近数据源的路由器接口上配置ACL,以减少不必要的流量转发
    • 高级ACL
      • 应该在靠近被过滤源的接口上应用ACL,以尽早阻止不必要的流量进入网络
    • 基本ACL
      • 过于靠近被过滤源的基本ACL可能阻止该源访问合法目的
      • 应在不影响其他合法访问的前提下,尽可能使ACL靠近被过滤的源

    4)ACL部署位置示例

    • 基本ACL部署位置示例

    • 高级ACL部署位置示例

     

    5)ACL包过滤的局限性

    • ACL包过滤是根据数据包头中的二、三、四层信息来进行报文过滤的,对应用层的信息无法识别
      • 无法根据用户名来决定数据是否通过
      • 无法给不同的用户授予不同的权限级别
    • ACL包过滤防火墙是静态防火墙,无法对应用层的协议进行动态检测
  • 相关阅读:
    jackson 枚举 enum json 解析类型 返回数字 或者自定义文字 How To Serialize Enums as JSON Objects with Jackson
    Antd Pro V5 中ProTable 自定义查询参数和返回值
    ES6/Antd 代码阅读记录
    es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
    Antd Hooks
    使用.Net Core开发WPF App系列教程(其它 、保存控件内容为图片)
    使用.Net Core开发WPF App系列教程( 三、与.Net Framework的区别)
    使用.Net Core开发WPF App系列教程( 四、WPF中的XAML)
    使用.Net Core开发WPF App系列教程( 二、在Visual Studio 2019中创建.Net Core WPF工程)
    使用.Net Core开发WPF App系列教程( 一、.Net Core和WPF介绍)
  • 原文地址:https://www.cnblogs.com/ananing/p/12979248.html
Copyright © 2011-2022 走看看