当前位置: 首页 > 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…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...