当前位置: 首页 > news >正文

【网络协议】ACL(访问控制列表)第一部分

概述

网络安全在网络中的重要性不言而喻。本文(即第一部分)将介绍ACL的基本概念以及标准ACL的配置。第二部分将重点讨论扩展ACL、其他相关概念以及ACL的故障排除。

文章目录

    • 概述
    • ACL定义
    • 数据包过滤
    • ACL
      • ACL配置指导原则
      • 配置ACL的三条规则
      • ACL功能
      • ACL工作原理
      • 出站ACL
      • ACL类型
        • 标准ACL
        • 扩展ACL
    • 如何应用ACL
      • 场景一
      • 场景二
      • 配置ACL
    • 总结

ACL定义

访问控制列表(ACL)是一组用于允许或拒绝从网络层及以上的数据流动的语句。它们根据安全策略的需求,用于过滤网络中的流量。

数据包过滤

数据包过滤是一种检查进出数据包是否符合特定条件,以决定它们是否应被转发或丢弃的方法。这通常由路由器完成。

路由器根据第三层信息转发数据包。当应用过滤器时,路由器会检查这些信息并决定数据包是否可以通过网络。如果数据包符合条件,则被转发;如果不符合,则被丢弃。

路由器用来判断数据包是否能通过网络的条件是通过配置ACL来实现的。使用ACL,我们可以基于以下条件过滤流量:目标和源的第三层地址、目标和源端口号以及所使用的协议。

ACL

ACL通常是路由器上执行的脚本,用于根据指定的条件检查数据包。

配置在路由器上的访问控制列表会根据管理员设定的规则检查数据包,以决定数据包是应该被转发还是丢弃。数据包会依次根据ACL中从第一条到最后一条的配置参数进行检查。

ACL配置指导原则

以下是一些配置ACL时可能有用的指导原则:

  • ACL应优先配置在充当网络防火墙的路由器上。
  • ACL应配置在网络中的路由器上,以控制对特定子网敏感信息的访问。例如,可以配置ACL来允许对财务部门网络的授权访问。
  • ACL应配置在网络的边缘,例如,将总部与其他分支的流量分开。
  • ACL应配置用于控制网络中可能配置的各种协议的流量。它们可以用于过滤进入或离开路由器的流量。

配置ACL的三条规则

配置ACL时需要遵循以下三条基本规则。这些规则决定了网络流量的流向,因此不能忽视:

  1. 每个协议配置一个ACL —— 用于控制路由器上配置的每种协议。
  2. 每个方向配置一个ACL —— 这里有两个方向:入站流量是指进入路由器的流量,出站流量是指离开路由器的流量。
  3. 每个接口配置一个ACL —— 用于控制从特定接口离开路由器的流量。

ACL功能

ACL通过以下方式工作:

  • 阻止特定流量,以提高网络性能。
  • 提供安全性,阻止发送到网络敏感区域的数据包。
  • 根据协议确定要转发的流量类型。
  • 拒绝某些用户访问互联网,同时允许其他用户访问。

ACL工作原理

ACL的操作由管理员设定的规则控制。当数据包进入路由器时,路由器会检查数据包的报头信息,以决定流量是被转发还是丢弃。路由器仅检查通过它们发送的流量,而不会检查它们自己生成的流量。

ACL可以在两个方向上进行配置:

  • 入站ACL:这种ACL类型会在路由器接收到流量后,根据配置的ACL规则进行检查,然后决定是否路由该流量。这种ACL类型非常重要,因为它避免了路由器浪费CPU资源去处理最终会被丢弃的数据包。

在这里插入图片描述

如图所示,入站ACL的操作流程如下:当数据包从路由器接口接收时,会根据ACL进行检查,数据包头部会被验证是否符合预设条件。如果数据包不符合任何条件,路由器默认认为该数据包不应被转发并将其丢弃。对于每条规则,都会作出决定是转发还是拒绝访问。所有被允许的数据包都可以由路由器处理,并被转发到出站接口。

出站ACL

对于出站ACL,数据包通常会被处理并转发到出站ACL进行过滤。在这种ACL中,路由器首先会检查其路由表,以确认数据包是否有目的地。如果目的地不在路由表中,数据包会被丢弃。

接下来,路由器会检查出站接口是否为数据包配置了ACL。如果接口没有为该数据包配置ACL,数据包会被转发。

最后,对于绑定到出站接口的ACL,数据包会根据ACL规则组进行检查,验证是否匹配任何条件。如果匹配条件,路由器决定是转发还是丢弃数据包。如果数据包不匹配任何条件,且ACL没有允许其通过,数据包将被丢弃。

下图演示了这一过程的具体实现。

在这里插入图片描述

隐含的全拒绝(Implicit deny all)
如果数据包已经检查了所有的ACL语句,且没有匹配到任何条件,路由器将会丢弃该数据包。这是因为路由器假定只有与ACL中某条语句匹配的流量才应被允许通过。为了避免过滤掉那些未匹配任何ACL语句但仍需要通过路由器的流量,可以使用命令 permit any 来允许这些流量通过。

ACL类型

ACL有多种类型,但在本文中,我们将重点关注两种类型:标准ACL和扩展ACL。

标准ACL

在标准ACL中,管理员只能根据数据包的源IP地址来允许或拒绝数据包。这类ACL不会检查数据包的其他条件,因此通常不会检查数据包的目的地信息。

扩展ACL

扩展访问控制列表(Extended ACL)会根据管理员设置的多个条件对流量进行检查。通过这些ACL,管理员对想要过滤的流量具有更大的控制权。这些条件可能包括:

在这里插入图片描述

如何应用ACL

在配置ACL时,我们需要通过将其应用到合适的接口来激活它们。有一些指导原则可以帮助我们更有效地使用ACL。

对于扩展ACL,应将其放置在靠近流量源的位置。由于扩展ACL可以基于多种条件过滤流量,将它们放置在靠近流量源的路由器上可以避免域内其他路由器处理不需要的流量,从而提高效率。

标准ACL不检查目标地址,因此应将它们放置在靠近目标网络的位置。例如,如果需要过滤从网络A到网络B的流量,标准ACL应尽可能靠近网络B。

当路由器根据配置的ACL检查数据包时,它会按照顺序逐条检查,即从上到下。因此,在配置ACL时,匹配流量最多的规则应放置在顶部,而较少使用的规则应放在ACL组的末尾。此外,在任何ACL中至少需要有一个permit语句,否则所有流量都会被拒绝。

在这里插入图片描述

上图展示了如何应用标准和扩展访问控制列表来控制网络流量。

在网络拓扑中,有三个局域网:网络192.168.1.0/26、网络192.168.30.0/24和网络172.16.2.0/24。网络管理员被要求根据以下条件配置访问控制列表:

场景一

要求使用**标准访问控制列表(ACL)**阻止192.168.1.0/26网络的流量到达192.168.30.0/24网络。

根据前面提到的规则,标准访问控制列表应尽可能靠近目标网络。

因此,如果在R1上配置访问控制列表,由于在该处阻止了192.168.1.0/26网络的流量,会同时阻止R2网络的主机访问目标网络,这将不符合要求。

在这种情况下,要阻止192.168.1.0/26网络的流量到达192.168.30.0/24网络,应将访问控制列表应用到R3的入站接口s0/3上。这在图中通过接口上的红色“X”标记出来。

场景二

网络管理员仅能控制192.168.1.0/26网络,并且需要阻止FTP和TELNET流量到达R2的172.16.2.0/24网络,而其他流量应被允许通过。

由于标准访问控制列表只能根据源IP地址进行过滤,无法区分不同类型的流量,因此在这种情况下,使用标准ACL会阻止所有流量,而不是仅阻止FTP和TELNET流量。因此,需要使用扩展访问控制列表(ACL),来从R1阻止FTP和TELNET流量到达R2的局域网,其余流量则允许通过。

扩展访问控制列表在靠近源网络处最为有效,因此,访问控制列表应应用于R1的出站接口,并应包含需要阻止的端口号。

配置ACL

在本节中,我们将学习如何配置标准和扩展访问控制列表。拓扑图显示了实验中使用的网络结构。

  • 第1部分:专注于标准访问控制列表的配置。
  • 第2部分:专注于扩展访问控制列表的配置。

在下方的拓扑图中,有三个路由器和六个局域网。任务是根据组织的要求和安全策略配置访问控制列表。

在这里插入图片描述

下表展示了网络中所有设备的IP地址分配方案。

在这里插入图片描述

在本场景中,我们需要同时使用标准访问控制列表(ACL)和扩展访问控制列表(ACL)。首先,配置任务如下,确保网络中的所有设备都可以相互通信:

在这里插入图片描述

标准访问控制列表(ACL)配置
第一个场景要求我们配置标准ACL,以根据以下策略限制流量:

  1. 网络192.168.1.0/26上的主机不应该能够访问位于网络192.168.3.0/30上的HTTPS服务器,但它们可以访问其他所有网络。
  2. 仅有网络192.168.30.0/24上的主机可以访问网络172.16.2.128/25。
  3. 网络192.168.1.128/26上的主机只能访问192.168.1.0/26网络。
  4. 位于网络172.16.2.131/25上的PC D不应该能够访问PC E。

配置命令

access-list global”配置命令用于定义编号范围在1到99之间的标准ACL。

标准ACL命令的完整语法如下:

在这里插入图片描述

过滤特定主机的标准ACL命令完整语法如下:

在这里插入图片描述

在这里插入图片描述

允许所有地址的命令为:

在这里插入图片描述

ACL可以应用在入站(inbound)出站(outbound) 方向。此命令需要在接口配置模式下输入,具体如下所示:


任务 1:来自网络 192.168.1.0/26 的主机不应能够访问位于网络 192.168.3.0/30 上的 HTTPS 服务器,但可以访问所有其他网络。

标准 ACL 应仅阻止从此网络到 192.168.3.0 的流量,其他所有流量都应被允许。根据配置 ACL 的规则,我们需要尽可能靠近目标(HTTPS 服务器)配置此 ACL,这意味着 ACL 将应用于通往 HTTPS 服务器的出站接口,即 R3 上的 fa0/0 接口。

第一个命令将阻止来自 192.168.1.0/26 的流量访问 HTTPS 服务器,并将在 R3 上进行配置,命令如下所示。

在这里插入图片描述

第二条命令应允许所有其他网络访问该网络,因为如果没有应用 permit access-list,则此访问控制列表(ACL)会由于隐式的“拒绝所有”规则而阻止所有流量。

在这里插入图片描述

最后一步,是将此访问控制列表应用到 R3 上的 Fa0/0 出口接口,并设置出站方向,如下所示。

在这里插入图片描述

当执行此命令时,来自网络 192.168.1.0/26 的流量将无法访问 192.168.3.0/30 网络上的 HTTPS 服务器,但网络中的其他主机将能够访问。


任务 2:只有 192.168.30.0/24 网络上的主机才能访问 172.16.2.128/25 网络。

标准 ACL 应该能够仅允许来自 192.168.30.0/24 的流量访问 172.16.2.128/25。

所需的唯一命令是一个允许 ACL,用于允许指定的流量访问 172.16.2.128/25 网络,此命令应在 R2 上配置并应用于 fa0/1 接口的出站方向。隐式的“拒绝所有”将拒绝所有其他流量访问该网络。为了实现这一点,所需的命令如下所示。

在这里插入图片描述

当执行这些命令时,来自 192.168.30.0/24 的流量将被允许访问 172.16.2.128/25 网络,而所有其他流量将被阻止。


任务 3:192.168.1.128/26 网络上的主机应该只能访问 192.168.1.0/26 网络。

该任务意味着,192.168.1.128/26 网络上的流量应限制在 R1 上,这意味着要阻止该流量通过该路由器。

我们可以使用 deny 语句来拒绝此流量访问其他网络,并使用 permit 语句允许所有其他流量。这个 ACL 仅可以应用到 R1 的出站串行接口。

为了实现这一点,所需的命令如下所示,拒绝来自 192.168.1.128/25 网络的流量访问 R1 之外的网络:

在这里插入图片描述

允许所有其他流量访问 R1 之外的网络:

在这里插入图片描述

将配置应用于 R1 的串行接口:

在这里插入图片描述

这将限制 192.168.1.128/25 网络上的用户只能访问 192.168.1.0/26 网络,而 192.168.1.0/26 网络上的用户将能够访问 R1 之外的网络。


任务 4:位于 172.16.2.128/25 网络上的 PC D 不应能够访问 PC E。

此配置旨在限制仅一个主机的访问。为此,我们需要在 R3 上应用此访问控制列表,阻止 IP 地址为 172.16.2.131 的 PC D 访问 IP 地址为 192.168.30.2 的 PC A。这样做时,我们应该不会破坏任何配置策略,即我们应遵循任务 2 的意图。

为此,我们将使用命令阻止 PC D 访问 PC E,同时允许 PC C,这将在 R3 上执行,并使用以下命令,拒绝 PC D 访问 PC E:

在这里插入图片描述

允许 172.16.2.128/25 网络上的所有其他主机访问 192.168.30.0/24 网络,同时确保不违反任何策略:

在这里插入图片描述

应用访问控制列表到接口:

在这里插入图片描述

总结

在第二部分,我们将探讨扩展 ACL、其他 ACL 概念,最后完成扩展 ACL 的配置和故障排除。

相关文章:

【网络协议】ACL(访问控制列表)第一部分

概述 网络安全在网络中的重要性不言而喻。本文(即第一部分)将介绍ACL的基本概念以及标准ACL的配置。第二部分将重点讨论扩展ACL、其他相关概念以及ACL的故障排除。 文章目录 概述ACL定义数据包过滤ACLACL配置指导原则配置ACL的三条规则ACL功能ACL工作原…...

2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计

题目来源:buuctf [RCTF2015]EasySQL1 目录 一、打开靶机,整理信息 二、解题思路 step 1:初步思路为二次注入,在页面进行操作 step 2:尝试二次注入 step 3:已知双引号类型的字符型注入,构造…...

Spring Boot 整合 Knife4j:打造更优雅的 API 文档

在现代 Web 应用开发中,API 文档的重要性不言而喻。清晰、准确、易用的 API 文档不仅可以方便开发者理解和使用 API,还能提高团队协作效率。Knife4j 是一个基于 Swagger 的增强型 API 文档工具,它可以为 Spring Boot 项目生成美观、易于交互的…...

Kafka 源码分析(一) 日志段

首先我们的 kafka 的消息本身是存储在日志段中的, 对应的源码是下面这段代码: class LogSegment private[log] (val log: FileRecords,val lazyOffsetIndex: LazyIndex[OffsetIndex],val lazyTimeIndex: LazyIndex[TimeIndex],val txnIndex: TransactionIndex,val baseOffset:…...

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦,保证给大家讲懂嗷; 1,线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的,或者即将工作,正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …...

Redis学习笔记1【数据类型和常用命令】

Redis学习笔记 基础语法 1.数据类型 String: 最基本的类型,可以存储任何数据,例如文本或数字。示例值为 hello world。Hash: 用于存储键值对,适合存储对象或结构体。示例值为 {"name": "Jack", "age": 21}。…...

JavaWeb项目——查询角色列表到页面中——转发模式

一、知识点 1、req.getRequestDispatch与resp.sendRedirect跳转方式的比较 一、实现原理 1、req.getRequestDispatcher: 属于服务器端跳转,在服务器内部将请求转发给另一个资源(如另一个 Servlet 或 JSP 页面)。调用 getReques…...

feign调用跳过HTTPS的SSL证书校验配置详解

一、问题抛出 如果不配置跳过SSL证书校验,当Feign客户端尝试连接到一个使用自签名证书的服务器时,可能会抛出类似以下的异常: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building faile…...

今天也是记录小程序进展的一天(破晓时8)

嗨嗨嗨朋友们,今天又来记录一下小程序的进展啦!真是太激动了,项目又迈出了重要的一步,231啦!感觉每一步的努力都在积累,功能逐渐完善,离最终上线的目标越来越近了。大家一直支持着这个项目&…...

SQL-leetcode—1084. 销售分析 III

1084. 销售分析 III 表: Product --------------------- | Column Name | Type | --------------------- | product_id | int | | product_name | varchar | | unit_price | int | --------------------- product_id 是该表的主键(具有唯一值的列&…...

Linux C\C++编程-文件位置指针与读写文件数据块

【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 Linu…...

Flask简介与安装以及实现一个糕点店的简单流程

目录 1. Flask简介 1.1 Flask的核心特点 1.2 Flask的基本结构 1.3 Flask的常见用法 1.3.1 创建Flask应用 1.3.2 路由和视图函数 1.3.3 动态URL参数 1.3.4 使用模板 1.4 Flask的优点 1.5 总结 2. Flask 环境创建 2.1 创建虚拟环境 2.2 激活虚拟环境 1.3 安装Flask…...

【自动化测试】—— Appium使用保姆教程

目录 一. 连接手机 1. 授权 2. 调试 3. 获取参数 二. 启动APP 1. 启动Appium服务 2. 启动Appium Inspector 3. 配置Appium Inspector 三. 功能说明 1. 主菜单功能 2. 快照视图菜单 3. 元素视图菜单 四. 常见问题 1. appPackage有多个设备时 一. 连接手机 1. 授权 首先将手机的开…...

西门子【Library of General Functions (LGF) for SIMATIC S7-1200 / S7-1500】

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 通用函数库 (LGF) 扩展了 TIA Portal 中用于 PLC 编程的 STEP 7 指令(数学函数、时间、计数器 等)。该库可以不受限制地使用,并包含 FIFO 、搜索功能、矩阵计算、 astro 计…...

IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载

IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载 在 IntelliJ IDEA 2023.3 中配置 Spring Boot 项目的热加载,可以让你在不重启应用的情况下看到代码修改的效果。以下是详细的配置步骤: 添加 spring-boot-devtools 依赖 在 pom.xml 文件中添加 …...

Python----Python高级(正则表达式:语法规则,re库)

一、正则表达式 1.1、概念 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、 regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母&#xff0…...

通过Ukey或者OTP动态口令实现windows安全登录

通过 安当SLA(System Login Agent)实现Windows安全登录认证,是一种基于双因素认证(2FA)的解决方案,旨在提升 Windows 系统的登录安全性。以下是详细的实现方法和步骤: 1. 安当SLA的核心功能 安…...

Node.js接收文件分片数据并进行合并处理

前言:上一篇文章讲了如何进行文件的分片:Vue3使用多线程处理文件分片任务,那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录: 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…...

Lsky-Pro在线图片搭建教程(Docker部署方式)

Lsky Pro+ 是一个使用 PHP 语言,采用 Laravel 框架开发的一款 Web 图片管理程序,中文名:兰空图床。如果你需要一个在线图床程序,那么这个开源项目可以帮助到你,部署流程非常简单。本章教程记录如何部署Lsky-Pro。 一、拉取镜像 docker pull halcyonazure/lsky-pro-docke…...

“深入浅出”系列之算法篇:(2)openCV、openMV、openGL

OpenCV是一个的跨平台计算机视觉库,可以运行在Linux囚、Windows 和Mac OS操作系统上。它轻量级而且高效,由一系列 C函数和少量C类构成,同时也提供了Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenMV是一个开源,低成本&am…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析

MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...

第22节 Node.js JXcore 打包

Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…...