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

AI 新动态:技术突破与应用拓展

目录 一.大语言模型的持续进化 二.AI 在医疗领域的深度应用 疾病诊断 药物研发 三.AI 与自动驾驶的新进展 四.AI 助力环境保护 应对气候变化 能源管理 后记 在当下科技迅猛发展的时代,人工智能(AI)无疑是最具影响力的领域之一。AI 技…...

从CRUD到高级功能:EF Core在.NET Core中全面应用(三)

目录 IQueryable使用 原生SQL使用 实体状态跟踪 全局查询筛选器 并发控制使用 IQueryable使用 在EFCore中IQueryable是一个接口用于表示可查询的集合,它继承自IEnumerable但具有一些关键的区别,使得它在处理数据库查询时非常有用,普通集…...

【记录】Jenkins版本及JDK关系介绍的官网地址

Redhat Jenkins Packages...

vue3-json-viewer和vue-json-pretty插件使用,vue3 json数据美化展示

本文介绍vue3如何进行json数据pretty展示 1 vue3-json-viewer 1.1 安装 npm install vue3-json-viewer --save1.2 全局引入 在main.ts中引入,然后直接在组件中使用 import { createApp } from vue import App from ./App.vue import JsonViewer from "vue3…...

python转转商超书籍信息爬虫

1基本理论 1.1概念体系 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以按照我们设置的规则自动化爬取网络上的信息,这些规则被称为爬虫算法。是一种自动化程序,用于从互联网上抓取数据。爬虫通过模拟浏览器的行为,访问网页并…...

Spring Boot 中的 InitializingBean:Bean 初始化背后的故事

在 Spring Boot 应用中,Bean 的生命周期管理至关重要。InitializingBean 接口允许 Bean 在完成属性注入后执行自定义初始化逻辑。本文将深入探讨 InitializingBean 接口在 Spring Boot 中的应用,揭示其工作原理,并分享一些最佳实践&#xff0…...

微信小程序:实现单选,多选,通过变量控制单选/多选

一、实现单选功能 微信小程序提供了 radio 组件来实现单选功能。radio 组件需要配合 radio-group 使用。 1. WXML 代码 <radio-group bindchange"onRadioChange"><label wx:for"{{items}}" wx:key"id"><radio value"{{it…...

MOS怎样选型,步骤详解

一&#xff1a;选用N沟道还是P沟道   为设计选择正确器件的第一步是决定采用N沟道还是P沟道MOSFET。在典型的功率应用中&#xff0c;当一个MOSFET接地&#xff0c;而负载连接到干线电压上时&#xff0c;该MOSFET就构成了低压侧开关。在低压侧开关中&#xff0c;应采用N沟道M…...

CMake技术细节:解决未定义,提供参数

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

1688 满足跨境业务需求而提供的一组 API 接口

1688 跨境属性接口系列是 1688 开放平台为满足跨境业务需求而提供的一组 API 接口&#xff0c;其中最主要的是1688.item_get : 一&#xff1a;1688.item_get接口 接口功能&#xff1a;主要用于查询 1688 商品的跨境属性&#xff0c;为开发者和商家提供了获取商品跨境关键信息…...