使用访问控制列表(ACL)保护网络安全

IPv4访问控制列表(IP ACL)为网络工程师提供了一种识别不同类型数据包的方法。为此,ACL配置列出了路由器可以在IP,TCP,UDP和其他标头中看到的值。例如,ACL可以匹配源IP地址为1.1.1.1的数据包或目标IP地址是子网10.1.1.0/24中的某个地址的数据包或具有TCP端口23(Telnet)目标端口的数据包。

IPv4 ACL执行许多功能,最常用作数据包过滤器。工程师可以在路由器上启用ACL,以便ACL在数据包通过路由器时位于转发路径中。启用后,路由器会考虑每个IP数据包是被丢弃还是被允许继续,就像ACL不存在一样。

本文介绍了用于包过滤的标准IP ACL。还关注ACL的方面:启用ACL的位置和方向,以及在匹配数据包后采取措施。

ACL位置和方向

路由器或交换机可以在IP数据包进入接口的点或它们离开接口的点对数据包应用ACL逻辑。换句话说,ACL与接口关联,并与数据包流的方向(输入或输出)关联。

可以在路由器做出转发(路由)决策之前将ACL应用于路由器的入站。在路由器做出转发决定并确定要使用的出口接口之后,访问列表也可以应用于出站。

下图中的红色箭头显示了可以过滤拓扑中从左到右流动的数据包的位置。例如,假设您想允许计算机A发送到服务器1的数据包,但丢弃计算机B发送到服务器1的数据包。 

ACL方向

图中的三箭头线指出了路由器接口的位置和方向,该接口用于将数据包从计算机B转发到服务器1。要丢弃计算机B发送到服务器1的数据包,必须在处理以下内容的接口上启用ACL:包。它必须沿与数据包流经该接口相同的方向进行配置。例如,您不能在R2的Gi 0/2上启用ACL,因为此接口不是从计算机B到服务器1的路径的一部分

匹配数据包

在考虑ACL的位置和方向时,必须考虑计划过滤(丢弃)哪些数据包以及允许哪些数据包。要告诉路由器相同的想法,必须为路由器配置与数据包匹配的IP ACL。匹配数据包是指如何配置ACL命令以查看每个数据包,列出如何识别应丢弃哪些数据包以及应允许哪些数据包。

每个IP ACL包含一个或多个配置命令,每个命令列出了有关要在数据包头中查找的值的详细信息。通常,ACL命令使用的逻辑类似于“在数据包头中查找这些值,如果找到,则丢弃数据包”。(该操作可能是允许该数据包,而不是丢弃该数据包。)ACL查找标头字段,包括源IP地址和目标IP地址,以及TCP和UDP端口号。

ACL匹配报文

例如,上图显示了带有简单匹配逻辑的蓝色矩形中的两行ACL:这两个语句只是看起来与数据包中的源IP地址匹配。启用后,R2会查看该接口上的每个入站IP数据包,并将每个数据包与这两个ACL命令进行比较。允许计算机A发送的数据包(源IP地址10.1.1.1),而主机B发送的数据包(源IP地址10.1.1.2)被丢弃。

IP ACL的类型

IP ACL在配置标识中将被编号或命名。ACL也将是标准的或扩展的。标准ACL仅检查源IP地址,而扩展ACL具有匹配数据包的更多功能。扩展ACL可以检查源IP地址和目标IP地址以及端口号。ACL的类型包括:

  • 标准编号的ACL(1-99)
  • 扩展编号的ACL(100-199)
  • 其他ACL编号(1300–1999标准,2000–2699扩展)
  • 命名的ACL

标准编号的ACL

本节检查标准编号IP ACL的详细信息。首先,它检查一个ACL是一个列表的想法,以及该列表使用什么逻辑。之后,本文仔细研究了如何匹配数据包标题中的源IP地址字段。

列出具有IP ACL的逻辑

单个ACL既是单个实体,也是一个或多个配置命令的列表。ACL使用优先匹配逻辑。一旦数据包与ACL中的一行匹配,路由器便会执行ACL的该行中列出的操作,并停止在ACL中进一步查找。

要确切了解其含义,请考虑以下示例:

考虑主机A发送到服务器S1的数据包的首次匹配ACL逻辑。源IP
地址将为10.1.1.1,并将被路由。R2将此数据包与ACL进行比较,将列表中的第一项与允许动作进行匹配。因此,应该允许此数据包。

接下来,考虑由主机B发送的数据包,其源IP地址为10.1.1.2。当数据包进入R2的Gi 0/3接口时,R2将该数据包与ACL 1的第一条语句进行比较,并且不进行匹配(10.1.1.1不等于10.1.1.2)。R2然后移至第二行。ACL显示10.1.1.x,这是为了在最后一个八位位组中可以存在任何值的简写。然后R2采取列出的操作(拒绝),丢弃数据包。R2还会忽略数据包中的第三行,从而停止对数据包进行ACL处理。

最后,考虑由主机C发送给服务器S1的数据包。数据包的源IP地址为10.3.3.3,因此当它进入R2的S0 / 0/1接口时,ACL处理ACL的前两行,并发现IP地址不匹配。R2然后看第三行。在这种情况下,通配符表示忽略最后三个八位位组,而只是比较第一个八位位组(10),因此数据包匹配。然后,R2采取列出的操作(许可),使数据包继续运行。 请记住,如果数据包与ACL中的任何项目都不匹配,则将其丢弃。原因是每个IP ACL的ACL末尾都暗含一个deny all语句。它在配置中不存在,但是如果路由器一直在搜索列表,并且列表末尾没有匹配项。

将地址的子集与通配符匹配

通常,您要使用ACL实施的业务目标并不与单个特定IP地址匹配,而是与一系列IP地址匹配。也许您想匹配子网中的所有IP地址。

您可以使用称为通配符掩码的工具来使用标准ACL来匹配地址范围。它为工程师提供了一种方法,让他们在进行比较时告诉路由器忽略地址的某些部分,实际上将这些部分视为通配符,就好像它们已经匹配一样。

您可以考虑使用十进制和二进制通配符掩码,它们都有其用途。首先,请考虑以下规则,以十进制表示通配符掩码:

  • 十进制0:路由器必须正常比较此八位位组。
  • 十进制255:路由器忽略此八位位组,认为它已经匹配。

考虑前面的示例,该示例使用三个不同的源IP地址演示了此逻辑。一个告诉路由器忽略最后一个八位位组,一个告诉路由器忽略最后两个八位位组,另一个告诉路由器忽略最后三个八位位组。

ACL中的通配符

提醒一下,以下部分包括上一个示例中的逻辑摘要:

  •  第1行:匹配并允许所有源地址为10.1.1.1的数据包。
  •  第2行:匹配并拒绝源地址为前三个八位字节10.1.1的所有数据包。
  •  第3行:将所有地址匹配并允许使用第一个八位字节10。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁