概述
网络安全在网络中的重要性不言而喻。本文(即第一部分)将介绍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类型非常重要,因为它避免了路由器浪费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,以根据以下策略限制流量:
- 网络192.168.1.0/26上的主机不应该能够访问位于网络192.168.3.0/30上的HTTPS服务器,但它们可以访问其他所有网络。
- 仅有网络192.168.30.0/24上的主机可以访问网络172.16.2.128/25。
- 网络192.168.1.128/26上的主机只能访问192.168.1.0/26网络。
- 位于网络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 的配置和故障排除。